Wiktionary svwiktionary https://sv.wiktionary.org/wiki/Wiktionary:Huvudsida MediaWiki 1.39.0-wmf.25 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 Gadget Gadget talk Gadget definition Gadget definition talk fuck 0 1737 3703319 3573423 2022-08-19T07:21:15Z 2A01:B740:1F:2030:49D3:34D:D129:481E /* Verb */ wikitext text/x-wiki ==Engelska== ===Interjektion=== {{interj|en}} '''fuck''' #{{tagg|kat=svordomar|språk=en}} [[svordom]], funktionsmässigt (grammatiskt) kanske närmast jämförbar med [[fan]] eller [[fitta]] fast den uppfattas som betydligt grövre #:{{etymologi|''Fuck'' är ett engelskt [[vulgär]]t verb med den ordagranna betydelsen "ha [[samlag]] (med)", "[[knulla]]" (se nedan för verbets ursprung). Ordet har dock använts som generell [[svordom]] och förstärkningsord, vilket har gjort att det idag kan användas på olika sätt i extremt många olika sammanhang. Det anses dock trots det som en mycket grov svordom.}} #:{{besläktade ord|[[fucking]], [[fucked]]}} #:{{sammansättningar|[[mercy fuck]], [[mindfuck]]}} #:{{fraser|[[fuck all]], [[fuck off]], [[fuck up]], [[fuck you]]}} ===Substantiv=== {{subst|en}} '''fuck''' #[[knull]], [[ligg]] (ett samlag) #:{{synonymer|[[fucking]], [[shag]], [[frig]]}} ===Verb=== {{en-verb}} '''fuck''' #{{tagg|vulgärt|språk=en}} ha samlag (med), [[knulla]] #:{{synonymer|[[screw]], [[do]], [[sleep with]], [[shag]]}} #{{tagg|vulgärt|språk=en}} [[lura]], [[bedra]], [[förråda]] #:{{synonymer|[[screw]]}} #{{tagg|vulgärt|språk=en}} [[driva]] med, uppträda oseriöst #{{tagg|vulgärt|språk=en}} [[sabotera]], [[förstöra]] #:''If you do that, I’m '''fucked'''.'' #::''Om du gör det, så är det kört för mig.'' #{{tagg|vulgärt|språk=en}} [[ha sönder]], [[paja]] #:''My nephew '''fucked''' my car last weekend.'' #::''Min brorson förstörde min bil förra helgen.'' #{{tagg|vulgärt|språk=en}} [[fippla]], [[pilla]], [[talla]], leka obetänksamt :{{avgränsare}} :{{etymologi|Ordets ursprung är oklart. Det första säkra användandet är från före år 1500, från den engelsk-latinska dikten Flen flyys: "''Non sunt in celi quia fuccant uuiuys of heli''" ("de bor inte i paradiset, ty de ''fuck'' Elys hustrur). Det finns en uppenbart likhet med det tyska ordet ''ficken'' (ha samlag med, dialektalt även rubba, gnida och historiskt använt i betydelsen slå, träffa), och latinets ''futurere'' (varur franskans ''foutre'' och italienskans ''fottere''), men det finns stor osäkerhet kring om det verkligen finns ett samband och hur det i så fall skulle se ut. Dessa rötter, trots sin likhet, är inte det ursprungliga indo-europeiska ordet för samlag; det ordet är snarare *yebh-, vars förekomst säkrats i Sanskrit och slaviska språk, bland annat. Det finns liknande ord i andra germanska språk, exempelvis mittnederländska ''fokken'' (stöta, kopulera), dialektala norska ''fukka'' (kopulera) och även dialektalt svenska "focka" med liknande betydelse. Fock är även en synonym till penis i vissa områden. Det finns kanske till och med en ursprunglig keltisk härledning; ''futuere'' som är relaterat till ''battuere'' (träffa, slå, kopulera) som i sin tur kan vara besläktat med iriska ''bot'' och manx ''bwoid'', båda med innebörden "penis". Argumentet för detta är att battuere och futuere (liksom de iriska och manx orden) kommer från keltiskans *bacture (att genomtränga), som härrör ut ''buc-'' (en spets). En ännu tidigare rot kan vara egyptiskans ''petcha'' (kopulera), som för övrigt har en mycket intressant hieroglyf. En anledning till att etymologin är så svårutredd är att ordet var för tabubelagt för att komma med i de första utgåvorna av Oxford English Dictionary. Det finns många uppfinningsrika men felaktiga myter om ordets ursprung. En av de mera välkända är att ordet skulle vara en akronym av ''Fornication Under Consent of the King'' ("kopulation med tillstånd av konungen"), vilket då skulle vara texten på en skylt som placerades på husen under perioder med försök att kontrollera befolkningstillväxten i medeltida England. En annan utläsning av bokstäverna är ''For Unlawful Carnal Knowledge'' ("För olaglig köttslig/världslig kunskap") som skulle ha skrivits på de som satts i bojor offentligt som straff för otrohet, eller ''Forced Unlawful Carnal Knowledge'' ("påtvingad olaglig köttslig/världslig kunskap") i samband med våldtäkter. Dessa akronymer var dock helt okända före 1960-talet, enligt boken "The F-Word".}} #:{{sammansättningar|[[fuck boy]], [[fuck face]], [[fuck-up]]}} l88peljqoes2upm7crrafdron5fv4xo 3703320 3703319 2022-08-19T07:21:32Z 2A01:B740:1F:2030:49D3:34D:D129:481E /* Verb */ wikitext text/x-wiki ==Engelska== ===Interjektion=== {{interj|en}} '''fuck''' #{{tagg|kat=svordomar|språk=en}} [[svordom]], funktionsmässigt (grammatiskt) kanske närmast jämförbar med [[fan]] eller [[fitta]] fast den uppfattas som betydligt grövre #:{{etymologi|''Fuck'' är ett engelskt [[vulgär]]t verb med den ordagranna betydelsen "ha [[samlag]] (med)", "[[knulla]]" (se nedan för verbets ursprung). Ordet har dock använts som generell [[svordom]] och förstärkningsord, vilket har gjort att det idag kan användas på olika sätt i extremt många olika sammanhang. Det anses dock trots det som en mycket grov svordom.}} #:{{besläktade ord|[[fucking]], [[fucked]]}} #:{{sammansättningar|[[mercy fuck]], [[mindfuck]]}} #:{{fraser|[[fuck all]], [[fuck off]], [[fuck up]], [[fuck you]]}} ===Substantiv=== {{subst|en}} '''fuck''' #[[knull]], [[ligg]] (ett samlag) #:{{synonymer|[[fucking]], [[shag]], [[frig]]}} ===Verb=== {{en-verb}} '''fuck''' #{{tagg|vulgärt|språk=en}} ha samlag (med), [[knulla]] #:{{synonymer|[[screw]], [[do]], [[sleep with]], [[shag]]}} #{{tagg|vulgärt|språk=en}} [[lura]], [[bedra]], [[förråda]] #:{{synonymer|[[screw]]}} #{{tagg|vulgärt|språk=en}} [[driva]] med, uppträda oseriöst #{{tagg|vulgärt|språk=en}} [[sabotera]], [[förstöra]] #:''If you do that, I’m '''fucked'''.'' #::''Om du gör det, så är det kört för mig.'' #{{tagg|vulgärt|språk=en}} [[ha sönder]], [[paja]] #:''My nephew '''fucked''' my car last weekend.'' #::''Min brorson förstörde min bil förra helgen.'' #{{tagg|vulgärt|språk=en}} [[fippla]], [[pilla]], [[talla]], leka obetänksamt :{{avgränsare}} :{{etymologi|Ordets ursprung är oklart. Det första säkra användandet är från före år 1500, från den engelsk-latinska dikten Flen flyys: "''Non sunt in celi quia fuccant uuiuys of heli''" ("de bor inte i paradiset, ty de ''fuck'' Elys hustrur). Det finns en uppenbart likhet med det tyska ordet ''ficken'' (ha samlag med, dialektalt även rubba, gnida och historiskt använt i betydelsen slå, träffa), och latinets ''futurere'' (varur franskans ''foutre'' och italienskans ''fottere''), men det finns stor osäkerhet kring om det verkligen finns ett samband och hur det i så fall skulle se ut. Dessa rötter, trots sin likhet, är inte det ursprungliga indo-europeiska ordet för samlag; det ordet är snarare *yebh-, vars förekomst säkrats i Sanskrit och slaviska språk, bland annat. Det finns liknande ord i andra germanska språk, exempelvis mittnederländska ''fokken'' (stöta, kopulera), dialektala norska ''fukka'' (kopulera) och även dialektalt svenska "focka" med liknande betydelse. Fock är även en synonym till penis i vissa områden. Det finns kanske till och med en ursprunglig keltisk härledning; ''futuere'' som är relaterat till ''battuere'' (träffa, slå, kopulera) som i sin tur kan vara besläktat med iriska ''bot'' och manx ''bwoid'', båda med innebörden "penis". Argumentet för detta är att battuere och futuere (liksom de iriska och manx orden) kommer från keltiskans *bacture (att genomtränga), som härrör ut ''buc-'' (en spets). En ännu tidigare rot kan vara egyptiskans ''petcha'' (kopulera), som för övrigt har en mycket intressant hieroglyf. En anledning till att etymologin är så svårutredd är att ordet var för tabubelagt för att komma med i de första utgåvorna av Oxford English Dictionary. Det finns många uppfinningsrika men felaktiga myter om ordets ursprung. En av de mera välkända är att ordet skulle vara en akronym av ''Fornication Under Consent of the King'' ("kopulation med tillstånd av konungen"), vilket då skulle vara texten på en skylt som placerades på husen under perioder med försök att kontrollera befolkningstillväxten i medeltida England. En annan utläsning av bokstäverna är ''For Unlawful Carnal Knowledge'' ("För olaglig köttslig/världslig kunskap") som skulle ha skrivits på de som satts i bojor offentligt som straff för otrohet, eller ''Forced Unlawful Carnal Knowledge'' ("påtvingad olaglig köttslig/världslig kunskap") i samband med våldtäkter. Dessa akronymer var dock helt okända före 1960-talet, enligt boken "The F-Word".}} :{{sammansättningar|[[fuck boy]], [[fuck face]], [[fuck-up]]}} d9maqjhqxvad8hcvh0a76mc8o0adhi9 heptagon 0 7458 3703306 3639178 2022-08-19T06:52:22Z Andreasl01 37996 /* Svenska */ härledning, +kohyponymer wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[hepta]][[-gon|gon]]''' #{{tagg|geometri}} [[polygon]] med sju hörn #:{{etymologi|Från {{härledning-|grc|επτα|talet [[sju]]|tr=hepta}} + ''{{länk|grc|γωνία}}'' (''gonia'', ”[[vinkel]]”).}} #:{{synonymer|[[sjuhörning]]}} #:{{hyperonymer|[[polygon]]}} #:{{kohyponymer|[[triangel]], [[tetragon]], [[pentagon]], [[hexagon]], [[oktogon]], [[nonagon]], [[dekagon]]}} ====Översättningar==== {{ö-topp}} *asturiska: {{ö|ast|heptágonu}} *danska: {{ö|da|heptagon}} *engelska: {{ö+|en|heptagon}} *esperanto: {{ö|eo|heptagono}} *finska: {{ö|fi|seitsenkulmio}}, {{ö|fi|heptagoni}} *franska: {{ö|fr|heptagone}} *iriska: {{ö|ga|heipteagán}} *italienska: {{ö|it|ettagono}} *nynorska: {{ö|nn|heptagon}} *ryska: {{ö+|ru|гептагон|m}}, {{ö+|ru|семиугольник|m}} *spanska: {{ö+|es|heptágono|m}} {{ö-botten}} ==Danska== ===Substantiv=== {{subst|da}} '''heptagon''' #{{tagg|kat=geometri|språk=da}} [[sjuhörning]], [[#Svenska|heptagon]] ==Engelska== ===Substantiv=== {{en-subst}} '''heptagon''' #{{tagg|geometri|språk=en}} [[sjuhörning]], [[#Svenska|heptagon]] #:''A fifty pence piece is a '''heptagon'''.'' #::''En femtio pence mynt är en '''heptagon'''.'' rpj0gr1sibdk09ztpmd0kfynkb1qcjd noggrannhet 0 7881 3703307 3211026 2022-08-19T06:58:12Z PeterFisk 21271 +no: [[nøyaktighet]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[noggrann]][[-het|het]]''' #till [[noggrann]], av [[noga]] #{{tagg|matematik}} [[precision]], med många korrekta decimaler etc. #:''Vi nöjde oss med en tresiffrig '''noggrannhet'''.'' #[[omsorg]], [[omsorgsfullhet]] ====Översättningar==== {{ö-topp|precision}} *bokmål: {{ö+|no|nøyaktighet|m}} *engelska: {{ö+|en|accuracy}} *japanska: {{ö|ja|正確性|tr=せいかくせい, ''seikakusei''}} *polska: {{ö+|pl|dokładność}} *ryska: {{ö+|ru|точность|f}} *tyska: {{ö+|de|Genauigkeit|f}} {{ö-botten}} {{ö-topp|omsorg}} *polska: {{ö|pl|staranność}} *ryska: {{ö+|ru|забота|f}} {{ö-botten}} dytcy2xybbu6y64q83v28gzw2u8n2r8 med 0 8465 3703334 3632165 2022-08-19T07:49:28Z Andreasl01 37996 /* Svenska */ fraser wikitext text/x-wiki ==Svenska== ===Preposition=== {{prep|sv}} '''med''' #i särskilt förbund, [[jämte]]; [[tillsammans]] med #:''Han kom '''med''' oss.'' #:'''''Med''' en hög inkomst brukar man inte vara lika sparsam.'' #''för att uttrycka samtidighet'' #:'''''Med''' den starka vinden kom regnet.'' #:{{fraser|[[i och med]], [[med detsamma]]}} #som har #:''Ser du tavlan '''med''' röd ram?'' #:''Finns det någon ingrediens i er mysli bar '''med''' en laxerande effekt?'' #genom att [[använda]]; ''för att uttrycka instrument, med vilket en handling utförs'' #:''Vill du äta '''med''' pinnar eller '''med''' kniv och gaffel?'' :{{avgränsare}} :{{etymologi|{{härledning|gmq-fsv|[[mæþ]], [[mædh]]}}}} ====Översättningar==== {{ö-topp|jämte; tillsammans med}} *bokmål: {{ö+|no|med}} *engelska: {{ö+|en|with}} *esperanto: {{ö+|eo|kun}} *finska: {{ö+|fi|kanssa}} *franska: {{ö+|fr|avec}} *frisiska: {{ö|fy|mei}} *haitisk kreol: {{ö|ht|avèk}} *hebreiska: {{ö+|he|עם‎|tr=ím}} *indonesiska: {{ö+|id|dengan}} *italienska: {{ö+|it|con}} *japanska: {{ö+|ja|と}} (''{{ö+|ja|to}}'') *jiddisch: {{ö|yi|מיט|tr=mit}} *katalanska: {{ö+|ca|amb}} *ladino: {{ö|lad|kon}}, {{ö|lad|קון‎‎}} *latin: {{ö+|la|cum}} *nynorska: {{ö|nn|med}} *occitanska: {{ö+|oc|amb}} *polska: {{ö+|pl|z}} *portugisiska: {{ö+|pt|com}} *ryska: {{ö+|ru|с|tr=s|skrift=Cyrl}} *spanska: {{ö+|es|con}} *tjeckiska: {{ö+|cs|s}} *tyska: {{ö+|de|mit}} *älvdalska: {{ö|ovd|nest}}, {{ö|ovd|min}} {{ö-botten}} {{ö-topp|som har}} *bokmål: {{ö+|no|med}} *engelska: {{ö+|en|with}} *frisiska: {{ö|fy|mei}} *indonesiska: {{ö+|id|dengan}} *italienska: {{ö+|it|con}} *nynorska: {{ö|nn|med}} *tyska: {{ö+|de|mit}} {{ö-botten}} {{ö-topp|genom att använda}} *bokmål: {{ö+|no|med}} *engelska: {{ö+|en|with}} *esperanto: {{ö+|eo|per}} *finska: {{ö+|fi|-lla}}, {{ö+|fi|-llä}} *frisiska: {{ö|fy|mei}} *italienska: {{ö+|it|con}} *nynorska: {{ö|nn|med}} *tyska: {{ö+|de|mit}} {{ö-botten}} {{ö-topp-granska}} *bretonska: {{ö+|br|gant}} {{?}} *tyska: {{ö+|de|mit}}, {{ö+|de|bei}} {{?}} {{ö-botten}} ===Adverb=== {{adv|sv}} '''med''' #''ställt efter ett ord för att markera vad som kommer till'' #:''Vi tog inte bara hans plånbok, vi tog mobiltelefonen '''med'''.'' #:''Sara är duktig på att simma - men är Pelle '''med''', när jag tänker efter.'' #:{{synonymer|[[också]], [[även]]}} ====Översättningar==== {{ö-topp|för att markera vad som kommer till}} *bokmål: {{ö+|no|også}}, {{ö+|no|òg}} *engelska: {{ö+|en|too}} *finska: {{ö+|fi|myös}} *franska: {{ö+|fr|aussi}} *frisiska: {{ö+|fy|ek}} *nynorska: {{ö|nn|med}}, {{ö|nn|òg}}, {{ö+|nn|også}}, {{ö|nn|ogso}} *ryska: {{ö+|ru|тоже}} *spanska: {{ö+|es|también}} *tyska: {{ö+|de|auch}} {{ö-botten}} ===Substantiv=== {{sv-subst-n-ar}} {{media|Norwegian kicksled.jpg|en [[spark]] med två '''medar'''}} '''med''' #[[skena]] med uppåtböjd framända som [[släde]] eller dylikt glider på #:{{varianter|[[mede]]}} ====Översättningar==== {{ö-topp|skena som släde eller dylikt glider på}} *bokmål: {{ö|no|meie|f}}, {{ö|no|mei|m}} *danska: {{ö|da|mede|u}} *engelska: {{ö+|en|runner}} *finska: {{ö+|fi|jalas}} *franska: {{ö+|fr|patin|m}} *nynorska: {{ö|nn|mei|m}} *polska: {{ö|pl|płoza|f}} *tyska: {{ö+|de|Kufe|f}} {{ö-botten}} ==Bosniska== ===Substantiv=== {{subst|bs}} '''med''' {{m}} #{{tagg|kat=mat|språk=bs}} [[honung]] ==Kroatiska== ===Substantiv=== {{subst|hr}} '''med''' {{m}} #{{tagg|kat=mat|språk=hr}} [[honung]] ==Serbiska== ===Substantiv=== {{subst|sr}} '''med''' {{m}} ([[мед]]) #{{tagg|kat=mat|språk=sr}} [[honung]] ==Slovakiska== ===Substantiv=== {{subst|sk}} '''med''' {{m}} #{{tagg|kat=mat|språk=sk}} [[honung]] #:{{besläktade ord|[[medokýš]], [[medovina]], [[medovník]], [[medový]]}} ==Slovenska== ===Substantiv=== {{subst|sl}} '''med''' #{{tagg|kat=mat|språk=sl}} [[honung]] ==Tjeckiska== ===Substantiv=== {{subst|cs}} '''med''' #{{tagg|kat=mat|språk=cs}} [[honung]] #:{{besläktade ord|[[medvěd]], [[medovina]]}} bgjq4zt568h4uz9jzcktvzg7qohecpi triangel 0 8785 3703264 3623895 2022-08-18T17:41:22Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar|pluralrot=triangl|fog=}} '''[[tri]][[angel]]''' {{media|Triangle.Equilateral.svg|en [[liksidig triangel]] (geometrisk figur)|Triangel (Instrument).png|triangel (instrument) och [[triangelstål]]}} #{{tagg|geometri}} [[polygon]] med tre sidor #:''"Detta är en '''triangel'''", sade lågstadieläraren till eleverna.'' #:{{synonymer|[[trehörning]], [[trekant]], [[tresiding]], tresidig figur}} #:{{hyponymer|[[rätvinklig triangel]], [[likbent triangel]], [[spetsvinklig triangel]], [[trubbvinklig triangel]]}} #:{{kohyponymer|[[tetragon]], [[pentagon]], [[hexagon]], [[heptagon]], [[oktogon]], [[nonagon]], [[dekagon]]}} #:{{besläktade ord|[[triangulation]], [[triangulera]], [[triangulering]], [[triangulär]]}} #:{{sammansättningar|[[triangeldrama]], [[triangelformad]], [[varningstriangel]], [[sierpinskitriangel]]}} #:{{fraser|[[hyperbolisk triangel]], [[sfärisk triangel]]}} #:{{seäven|[[cirkel]]}} #{{tagg|kat=slagverksinstrument}} ett [[percussioninstrument]] format som en triangel i metall #:''Oj, har du lärt dig att spela '''triangel'''?'' #:''Nej, jag har köpt en skiva, vars huvudinstrument är '''triangel'''.'' ====Översättningar==== {{ö-topp|geometri}} *belarusiska: {{ö|be|трохкутнік|m}} *bokmål: {{ö+|no|trekant|m}} *danska: {{ö+|da|trekant|u}} *engelska: {{ö+|en|triangle}} *esperanto: {{ö|eo|triangulo}} *finska: {{ö+|fi|kolmio}} *franska: {{ö+|fr|triangle|m}} *iriska: {{ö+|ga|triantán}} *italienska: {{ö+|it|triangolo|m}} *jiddisch: {{ö|yi|דרײַעק|m}} *kroatiska: {{ö+|hr|trokut|m}} *kurdiska: {{ö+|ku|sêgoşe}} *latin: {{ö|la|triangulum|n}} *lettiska: {{ö+|lv|trijstūris}} *litauiska: {{ö|lt|trikampis}} *nederländska: {{ö+|nl|driehoek|m}} *nynorska: {{ö|nn|trekant|m}} *polska: {{ö+|pl|trójkąt|m}} *portugisiska: {{ö+|pt|triângulo|m}} *ryska: {{ö+|ru|треугольник|m}} *spanska: {{ö+|es|triángulo|m}} *turkiska: {{ö+|tr|üçgen}} *tyska: {{ö+|de|Dreieck|n}} *ukrainska: {{ö|uk|трикутник|m}} *vietnamesiska: {{ö+|vi|tam giác}}, {{ö|vi|hình tam giác}} {{ö-botten}} {{ö-topp|musik}} *belarusiska: {{ö|be|трохвугольнік|m}} *bokmål: {{ö|no|triangel|n}} *danska: {{ö+|da|triangel|u}} *engelska: {{ö+|en|triangle}} *finska: {{ö+|fi|triangeli}} *franska: {{ö+|fr|triangle|m}} *italienska: {{ö+|it|triangolo|m}} *nederländska: {{ö+|nl|triangel|m}} *nynorska: {{ö|nn|triangel|n}} *polska: {{ö+|pl|trójkąt|m}} *ryska: {{ö+|ru|треугольник|m}} *spanska: {{ö+|es|triángulo|m}} *tyska: {{ö+|de|Triangel|f}} *ukrainska: {{ö|uk|трикутник|m}} {{ö-botten}} ghgy5ape4yl8r5z8seixwowauuhjpqk 3703305 3703264 2022-08-19T06:51:14Z Andreasl01 37996 /* Svenska */ wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar|pluralrot=triangl|fog=}} '''[[tri]][[angel]]''' {{media|Triangle.Equilateral.svg|en [[liksidig triangel]] (geometrisk figur)|Triangel (Instrument).png|triangel (instrument) och [[triangelstål]]}} #{{tagg|geometri}} [[polygon]] med tre sidor #:''"Detta är en '''triangel'''", sade lågstadieläraren till eleverna.'' #:{{synonymer|[[trehörning]], [[trekant]], [[tresiding]], tresidig figur}} #:{{hyponymer|[[rätvinklig triangel]], [[likbent triangel]], [[liksidig triangel]], [[spetsvinklig triangel]], [[trubbvinklig triangel]]}} #:{{kohyponymer|[[tetragon]], [[pentagon]], [[hexagon]], [[heptagon]], [[oktogon]], [[nonagon]], [[dekagon]]}} #:{{besläktade ord|[[triangulation]], [[triangulera]], [[triangulering]], [[triangulär]]}} #:{{sammansättningar|[[triangeldrama]], [[triangelformad]], [[varningstriangel]], [[sierpinskitriangel]]}} #:{{fraser|[[hyperbolisk triangel]], [[sfärisk triangel]], [[Pascals triangel]]}} #:{{seäven|[[cirkel]]}} #{{tagg|kat=slagverksinstrument}} ett [[percussioninstrument]] format som en triangel i metall #:''Oj, har du lärt dig att spela '''triangel'''?'' #:''Nej, jag har köpt en skiva, vars huvudinstrument är '''triangel'''.'' ====Översättningar==== {{ö-topp|geometri}} *belarusiska: {{ö|be|трохкутнік|m}} *bokmål: {{ö+|no|trekant|m}} *danska: {{ö+|da|trekant|u}} *engelska: {{ö+|en|triangle}} *esperanto: {{ö|eo|triangulo}} *finska: {{ö+|fi|kolmio}} *franska: {{ö+|fr|triangle|m}} *iriska: {{ö+|ga|triantán}} *italienska: {{ö+|it|triangolo|m}} *jiddisch: {{ö|yi|דרײַעק|m}} *kroatiska: {{ö+|hr|trokut|m}} *kurdiska: {{ö+|ku|sêgoşe}} *latin: {{ö|la|triangulum|n}} *lettiska: {{ö+|lv|trijstūris}} *litauiska: {{ö|lt|trikampis}} *nederländska: {{ö+|nl|driehoek|m}} *nynorska: {{ö|nn|trekant|m}} *polska: {{ö+|pl|trójkąt|m}} *portugisiska: {{ö+|pt|triângulo|m}} *ryska: {{ö+|ru|треугольник|m}} *spanska: {{ö+|es|triángulo|m}} *turkiska: {{ö+|tr|üçgen}} *tyska: {{ö+|de|Dreieck|n}} *ukrainska: {{ö|uk|трикутник|m}} *vietnamesiska: {{ö+|vi|tam giác}}, {{ö|vi|hình tam giác}} {{ö-botten}} {{ö-topp|musik}} *belarusiska: {{ö|be|трохвугольнік|m}} *bokmål: {{ö|no|triangel|n}} *danska: {{ö+|da|triangel|u}} *engelska: {{ö+|en|triangle}} *finska: {{ö+|fi|triangeli}} *franska: {{ö+|fr|triangle|m}} *italienska: {{ö+|it|triangolo|m}} *nederländska: {{ö+|nl|triangel|m}} *nynorska: {{ö|nn|triangel|n}} *polska: {{ö+|pl|trójkąt|m}} *ryska: {{ö+|ru|треугольник|m}} *spanska: {{ö+|es|triángulo|m}} *tyska: {{ö+|de|Triangel|f}} *ukrainska: {{ö|uk|трикутник|m}} {{ö-botten}} 87hyd5kukdexy1qt5ihry8i0ql7x13p klåpare 0 15457 3703340 3525536 2022-08-19T08:45:26Z PeterFisk 21271 +no: [[klossmajor]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-0|rot=klåpar|are=}} '''klåpare''' *{{uttal|sv|ipa=kloːpare}} #en person som är [[oskicklig]] på det som den gör #:{{citat|En hvar, som hade någon färdighet i teckning eller målning, äfven om han ur konstnärlig synpunkt ej kunde tillmätas någon högre rang än '''klåparens''', kunde blifva ritlärare vid ett af statens läroverk.|titel=[http://runeberg.org/oversitt/1/0357.html Våra öfversittare : ungdomsminnen och läroverksstudier]|år=1898|förf=Oscar Svahn}} #:{{besläktade ord|[[klåpa]], [[klåperi]]}} ====Översättningar==== {{ö-topp|en person som är oskicklig på det som den gör}} *bokmål: {{ö|no|klossmajor|m}} *engelska: {{ö+|en|dabbler}}, {{ö+|en|bungler}}, {{ö+|en|bumbler}}, {{ö+|en|botcher}}, {{ö+|en|fumbler}} *finska: {{ö+|fi|tunari}} *italienska: {{ö+|it|pasticcione|m}}, {{ö+|it|maldestro}}, {{ö+|it|inetto|m}}, {{ö+|it|imbranato|m}} *litauiska: {{ö|lt|nemokša|u}}, {{ö|lt|nevykėlis|m}} *tyska: {{ö|de|Pfuscher|m}}, {{ö+|de|Stümper|m}}, {{ö|de|Pfuscherin|f}}, {{ö|de|Stümperin|f}}, {{ö+|de|Dilettant|m}}, {{ö+|de|Dilettantin|f}} {{ö-botten}} j55j5vp11zw1nhz58v135pbwa0dgnfp 3703341 3703340 2022-08-19T08:46:29Z PeterFisk 21271 +no: [[kløne]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-0|rot=klåpar|are=}} '''klåpare''' *{{uttal|sv|ipa=kloːpare}} #en person som är [[oskicklig]] på det som den gör #:{{citat|En hvar, som hade någon färdighet i teckning eller målning, äfven om han ur konstnärlig synpunkt ej kunde tillmätas någon högre rang än '''klåparens''', kunde blifva ritlärare vid ett af statens läroverk.|titel=[http://runeberg.org/oversitt/1/0357.html Våra öfversittare : ungdomsminnen och läroverksstudier]|år=1898|förf=Oscar Svahn}} #:{{besläktade ord|[[klåpa]], [[klåperi]]}} ====Översättningar==== {{ö-topp|en person som är oskicklig på det som den gör}} *bokmål: {{ö|no|klossmajor|m}}, {{ö|no|kløne|m}} *engelska: {{ö+|en|dabbler}}, {{ö+|en|bungler}}, {{ö+|en|bumbler}}, {{ö+|en|botcher}}, {{ö+|en|fumbler}} *finska: {{ö+|fi|tunari}} *italienska: {{ö+|it|pasticcione|m}}, {{ö+|it|maldestro}}, {{ö+|it|inetto|m}}, {{ö+|it|imbranato|m}} *litauiska: {{ö|lt|nemokša|u}}, {{ö|lt|nevykėlis|m}} *tyska: {{ö|de|Pfuscher|m}}, {{ö+|de|Stümper|m}}, {{ö|de|Pfuscherin|f}}, {{ö|de|Stümperin|f}}, {{ö+|de|Dilettant|m}}, {{ö+|de|Dilettantin|f}} {{ö-botten}} ml7juyxe0twm660xhjmic5iqpqtuwkd rygg 0 16007 3703339 3680969 2022-08-19T08:42:20Z PeterFisk 21271 +nl: [[rug]] (assisterat) wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} {{media|Surface anatomy of the back-Gray.png|'''rygg''' (bakre del av kropp)}} '''rygg''' #[[bak]]re del av [[kropp]] från spets i [[svansben]]et upp till [[nacke]]n; även om vissa föremål, t.ex. [[klädesplagg]], [[bok]], [[stol]] #:''Hon kliade honom på '''ryggen'''.'' #:''Jag tror jag skall måla '''ryggen''' på stolen grå.'' #:{{sammansättningar|[[handrygg]], [[stolsrygg]], [[ryggbast]], [[ryggmärg]], [[ryggrad]], [[ryggradsdjur]], [[ryggskott]], [[ryggsäck]], [[ryggtavla]], [[ryggvärk]]}} #:{{synonymer|[[rigg]] ''(orsamål)''}} #[[ås]], [[bergskam]], [[krön]], vanligen i form av [[bergsrygg]] #:{{sammansättningar|[[fjällrygg]]}} :{{avgränsare}} :{{fraser|[[bakom ryggen på]], [[binda ris åt egen rygg]], [[ge råg i ryggen]], [[ha ryggen fri]], [[ha råg i ryggen]], [[hålla någon om ryggen]], [[inte röra någon i ryggen]], [[kröka ryggen]], [[lägga benen på ryggen]], [[ta rygg på]], [[vända någon ryggen]], [[vända ryggen till]]}} :{{seäven|[[rygga]]}} ====Översättningar==== {{ö-topp|bakre del av kropp}} *azerbajdzjanska: {{ö+|az|arxa}} *bokmål: {{ö+|no|rygg}} *bretonska: {{ö+|br|kein|m}} *danska: {{ö+|da|ryg}} *engelska: {{ö+|en|back}} *esperanto: {{ö+|eo|dorso}} *finska: {{ö+|fi|selkä}} *franska: {{ö+|fr|dos|m}} *frisiska: {{ö|fy|rêch}} *hebreiska: {{ö+|he|גַּב|m|tr=gav}} *isländska: {{ö+|is|bak|n}} *italienska: {{ö+|it|schiena|f}} *jiddisch: {{ö|yi|רוקן|m|tr=rukn}} *katalanska: {{ö+|ca|esquena}} *latin: {{ö|la|dorsum|n}} *maltesiska: {{ö|mt|dahar}} *nederländska: {{ö+|nl|rug|m}} *polska: {{ö+|pl|plecy|p}}, {{ö+|pl|grzbiet|m}} *portugisiska: {{ö+|pt|costas}}, {{ö+|pt|dorso}} *romani: {{ö|rom|dumo}} *ryska: {{ö+|ru|спина|f}} *spanska: {{ö+|es|espalda|f}} *svensk romani: {{ö|rmu|dummo}} *turkiska: {{ö+|tr|sırt}} *tyska: {{ö+|de|Rücken|m}} *vietnamesiska: {{ö+|vi|lưng}} {{ö-botten}} {{ö-topp|bergskam}} *engelska: {{ö+|en|ridge}} *polska: {{ö+|pl|grzbiet|m}} *spanska: {{ö+|es|cresta}} *tyska: {{ö+|de|Rücken|m}}, {{ö|de|Bergrücken|m}} {{ö-botten}} ==Bokmål== ===Substantiv=== {{no-subst-m-er}} '''rygg''' {{u}} #[[#Substantiv|rygg]] ==Bottniska== ===Substantiv=== {{gmq-bot-subst-m|rot=ryggj}} '''rygg''' {{m}} *{{uttal|gmq-bot|ipa=rɪ́ɡː}} ''(Luleå)'' #{{tagg|anatomi|språk=gmq-bot}}[[#Svenska|rygg]] #späd [[telning]] av gran eller en, varmed takveden på kroppåsen sammanhålles därigenom att sådana ryggar inträdas genom de på takvedens övre ända borrade hål :{{avgränsare}} :{{etymologi|{{härledning|non|hryggr|språk=gmq-bot}}}} :{{sammansättningar|[[ryggás]]}} trmwb8lcfhz5dwbwr01fecii2vspa20 à 0 17883 3703293 3597667 2022-08-18T21:42:14Z Skalman 414 sms wikitext text/x-wiki {{se även|Appendix:Varianter/a}} ==Svenska== ===Preposition=== {{prep|sv}} '''à''' #{{tagg|kat=palindrom}} till ett pris av, per styck; på, för #:''Han köpte tre äpplen '''à''' 2 kronor.'' #:{{sammansättningar|[[à-pris]]}} #[[till]]; ''används mellan två sifferuppgifter'' #:''Föreningen har stormöte 3 '''à''' 5 gånger per år.'' #:''Kvinnor på 25 '''à''' 26 år'' ====Översättningar==== {{ö-topp|per styck}} *engelska: {{ö+|en|each}} ''(placeras '''efter''' det som är per styck)'' *franska: {{ö+|fr|à}} *italienska: {{ö+|it|ognuno|m}} / {{ö|it|ognuna|f}} ''(båda placeras '''efter''' det som är per styck)'' *ryska: {{ö+|ru|по}} ''po'', {{ö+|ru|за}} {{ö-botten}} {{ö-topp|till}} *engelska: {{ö+|en|to}} *franska: {{ö+|fr|à}} *italienska: {{ö+|it|a}} *ryska: {{ö+|ru|до}} {{ö-botten}} ==Franska== ===Preposition=== {{prep|fr}} '''à''' *{{uttal|fr|ipa=a}} #{{tagg|kat=palindrom|språk=fr}} [[i]] (som ''[[au]]'' {{m}}, ''[[en]]'' {{f}} och ''[[aux]]'' {{p}}; används om länder och områden) #:''Qu’est-ce que tu fais '''à''' Monaco?'' #::''Vad gör du '''i''' Monaco?'' #[[på]] (anger läge vid plats) #:''Je suis '''à''' l’école.'' #::''Jag är '''på''' skolan.'' #[[vid]] #*'''''À''' Noël.'' #::'''''Vid''' jul.'' #[[till]]; anger färd till en plats eller mellan två platser #:''Je vais '''à''' Luc.'' #::''Jag åker '''till''' Luc.'' #att färdas med någonting #:''aller '''à''' vélo'' #::''att åka cykel'' ===Användning=== *''À'' och ''le'' kontraheras till ''[[au]]''. ''À'' och ''les'' kontraheras till ''[[aux]]'', medan ''à'' tillsammans med ''la'' eller ''l''' inte kontraheras. ===Partikel=== '''à''' *{{uttal|fr|ipa=a}} #[[att]] (infinitivmarkör) #:'''''À''' faire: nettoyer, passer l'aspirateur.'' #:: '''Att''' göra: städa, dammsuga. #:''Je n'ai rien '''à''' dire.'' #:: Jag har ingenting '''att''' säga. ==Portugisiska== ===Förkortning=== {{förkortning|pt}} '''à''' #{{tagg|kat=palindrom|språk=pt}} ''sammandragsförkortning av prepositionen ''[[a#Portugisiska|a]]'' och den bestämda artikeln ''[[a#Portugisiska|a]] ====Se även==== *[[ao]] mbhkvv47aap6i723mgpt32dq6cscltl indigo 0 18378 3703343 3617434 2022-08-19T09:12:35Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki {{se även|Indigo}} ==Svenska== ===Adjektiv=== {{adj|sv}} {{färg|#4B0082|indigo}} '''indigo''' #{{tagg|kat=färger}} som har blålila [[färg]] #:{{hyponymer|[[blålila]]}} ====Översättningar==== {{ö-topp}} *belarusiska: {{ö|be|індыга}} *bokmål: {{ö|no|indigo}} *bulgariska: {{ö|bg|индиго}} *engelska: {{ö+|en|indigo}} *esperanto: {{ö|eo|indiga}} *finska: {{ö|fi|indigonsininen}} *franska: {{ö+|fr|indigo}} *färöiska: {{ö|fo|indigo}} *isländska: {{ö|is|indígóblár}} *italienska: {{ö+|it|indaco}} *makedonska: {{ö|mk|индиго}} *nederländska: {{ö+|nl|indigo}} *polska: {{ö|pl|indygo}} *portugisiska: {{ö+|pt|índigo}} *rumänska: {{ö+|ro|indigo}} *ryska: {{ö+|ru|инди́говый}}, {{ö+|ru|индиго}} *spanska: {{ö+|es|índigo}} *turkiska: {{ö+|tr|indigo}} *tyska: {{ö+|de|indigofarben}}, {{ö|de|indigoblau}} *ukrainska: {{ö|uk|індиго}}, {{ö|uk|інди́говий}} {{ö-botten}} 8fp76tmgvz9uxfuaq73htwooxod4uc2 bas 0 18889 3703313 3627151 2022-08-19T07:15:59Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki {{wikipedia|bas}} {{se även|bås|baş|băs|baš|bás|bàs}} ==Svenska== ===Substantiv=== {{sv-subst-n-ar|betydelser=1-6.}} {{sv-subst-n-er|betydelser=7-15.}} '''bas''' #{{tagg|musik}} [[mansröst]] eller [[instrument]] i det [[djup]]aste [[stämläget]] #{{tagg|musik}} sångare som sjunger basstämma #{{tagg|stränginstrument|kat=kortformer}} ''kortform av'' [[elbas]], #{{tagg|stråkinstrument}} ''kortform av'' [[basfiol]] #{{tagg|bleckblåsinstrument}} ''kortform av'' [[bastuba]] #{{tagg|vardagligt}} [[arbetsledare]] #:''Det är jag som är '''basen'''.'' #:{{synonymer|[[förman]]}} #:{{besläktade ord|[[basa]]}} #något som man utgår ifrån eller använder som [[grund]] #:''Man kan göra soppa med fiskbuljong som '''bas'''.'' #:{{sammansättningar|[[basindustri]], [[baslivsmedel]], [[basnivå]], [[basår]], [[grytbas]], [[soppbas]]}} #{{tagg|kemi}} kemiskt ämne som upptar [[väte]][[jon]]er #:{{synonymer|[[alkalie]]}} #:{{antonymer|[[syra]]}} #:{{sammansättningar|[[baskonstant]]}} #{{tagg|kemi|vardagligt}} ett ämne som, eventuellt i [[vatten]][[lösning]], har ett [[pH]]-värde över 7 #:{{antonymer|[[syra]]}} #{{tagg|matematik}} [[tal]]et som ska upphöjas i en [[potens]]; exempelvis 2 i 2<sup>10</sup>&nbsp;=&nbsp;1024 #{{tagg|matematik}} det tal som ligger till grund för ett [[positionssystem]] #:''Även om människor föredrar att räkna med ett talsystem som använder 10 som '''bas''', så använder datorerna '''basen''' 2 istället.'' #{{tagg|matematik}} uppsättning [[vektor]]er sådana att varje element i ett givet vektorrum kan skrivas som en summa av dessa element #:{{synonymer|[[basvektor]], [[baselement]]}} #{{tagg|matematik}} [[horisontell]] sida nedtill i en [[triangel]], som t.ex. kan användas för areaberäkning #{{tagg|elektronik}} den anslutning på en [[transistor]] som styr transistorns arbete #{{tagg|militärvetenskap}} [[stödjepunkt]]; plats där personal, utrustning och/eller stridsledning finns #:{{synonymer|[[militärbas]]}} #:{{sammansättningar|[[marinbas]]}} #{{tagg|kosmetika}} [[smink]] i form av en flytande [[hudfärgad]] [[kräm]] eller ett [[puder]] som [[jämna]]r ut [[hudton]]erna i ansiktet #:{{synonymer|[[foundation]]}} ====Översättningar==== {{ö-topp|mansröst eller instrument i djupaste stämläget}} *bokmål: {{ö+|no|bass|m}} *finska: {{ö+|fi|basso}} *isländska: {{ö|is|bassarödd|f}} *tyska: {{ö+|de|Bass|m}} {{ö-botten}} {{ö-topp|sångare}} *bokmål: {{ö+|no|bass|m}}, {{ö|no|bass-sanger|m}}, {{ö|no|bassanger|m}} *engelska: {{ö+|en|bass}} *isländska: {{ö|is|bassasöngvari|m}} *tyska: {{ö+|de|Bassist|m}} {{ö-botten}} {{ö-se|elbas}} {{ö-se|basfiol}} {{ö-se|bastuba}} {{ö-topp|arbetsledare}} *bokmål: {{ö+|no|bas}} *engelska: {{ö+|en|boss}} *tyska: {{ö|de|Vorarbeiter|m}}, {{ö|de|Vormann|m}}, {{ö+|de|Polier|m}} {{ö-botten}} {{ö-topp|något som man utgår ifrån}} *bokmål: {{ö|no|basis|m}} *engelska: {{ö+|en|base}} *tyska: {{ö+|de|Basis|f}} {{ö-botten}} {{ö-topp|kemiskt ämne som upptar vätejoner}} *bokmål: {{ö+|no|base|m}} *danska: {{ö|da|base}} *engelska: {{ö+|en|base}} *polska: {{ö+|pl|zasada}} *tyska: {{ö+|de|Base|f}}, {{ö+|de|Lauge|f}} {{ö-botten}} {{ö-topp|ämne med pH över 7}} *engelska: {{ö+|en|base}} *franska: {{ö+|fr|base|f}} *isländska: {{ö|is|basi|m}} *italienska: {{ö+|it|base|f}} *nederländska: {{ö+|nl|base}} *portugisiska: {{ö+|pt|base|m}} *spanska: {{ö+|es|base|m}} *tyska: {{ö+|de|Base|f}} {{ö-botten}} {{ö-topp|tal i potens}} *engelska: {{ö+|en|base}} *tyska: {{ö+|de|Basis|f}} {{ö-botten}} {{ö-topp|tal som grund i positionssystem}} *engelska: {{ö+|en|base}}, {{ö+|en|radix}} {{ö-botten}} {{ö-se|basvektor}} {{ö-topp|horisontell sida nedtill i en triangel}} {{ö-botten}} {{ö-topp|transistoranslutning}} *engelska: {{ö+|en|base}} *tyska: {{ö+|de|Basis|f}} {{ö-botten}} {{ö-topp|militär stödjepunkt}} *bokmål: {{ö+|no|base|m}} *engelska: {{ö+|en|base}} *isländska: {{ö+|is|bækistöð|f}} *tyska: {{ö+|de|Basis|f}} {{ö-botten}} {{ö-se|foundation}} ==Franska== ===Adjektiv=== {{fr-adj-sx|fog=s}} '''bas''' *{{uttal|fr|ipa=bɑ}} #{{tagg|text=om läge}} [[låg]] #{{tagg|text=om höjd}} [[låg]] #{{tagg|text=om toner|kat=musik|kat2=fysik|språk=fr}} [[låg]] #:{{synonymer|[[grave]]}} ===Substantiv=== {{fr-subst-m-0}} '''bas''' *{{uttal|fr|ipa=bɑ}} #[[botten]] #[[strumpa]] ===Adverb=== {{adv|fr}} '''bas''' *{{uttal|fr|ipa=bɑ}} #[[lågt]] #[[tyst]] 000v0wzatiqptlt11s57x4922cbc6e4 tetragon 0 18971 3703265 3111446 2022-08-18T17:43:16Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[tetra-|tetra]][[-gon|gon]]''' #{{tagg|geometri}} [[fyrhörning]] #:{{synonymer|[[fyrhörning]]}} #:{{hyperonymer|[[polygon]], [[månghörning]]}} #:{{hyponymer|[[parallelltrapets]], [[trapets]]}} #:{{kohyponymer|[[triangel]], [[pentagon]], [[hexagon]], [[heptagon]], [[oktogon]], [[nonagon]], [[dekagon]]}} ====Översättningar==== {{ö-topp|se [[fyrhörning]]}} {{ö-botten}} qi3muvtd56kt9nbuw4c2frlh2gzbrcb 3703266 3703265 2022-08-18T17:44:22Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[tetra-|tetra]][[-gon|gon]]''' #{{tagg|geometri}} [[fyrhörning]] #:{{synonymer|[[fyrhörning]]}} #:{{hyperonymer|[[polygon]], [[månghörning]]}} #:{{hyponymer|[[parallelltrapets]], [[trapets]]}} #:{{kohyponymer|[[triangel]], [[pentagon]], [[hexagon]], [[heptagon]], [[oktogon]], [[nonagon]], [[dekagon]]}} ====Översättningar==== {{ö-se|fyrhörning}} mz4lgbc2fkk6miir3r38d4571nh2bzg pentagon 0 18978 3703267 3549049 2022-08-18T17:45:08Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki {{se även|Pentagon}} {{wikipedia|Pentagon (olika betydelser)}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[penta-|penta]][[-gon|gon]]''' #{{tagg|geometri}} [[polygon]] med fem hörn #:{{synonymer|[[femhörning]]}} #:{{hyperonymer|[[polygon]]}} ====Översättningar==== {{ö-se|femhörning}} ==Engelska== ===Substantiv=== {{en-subst}} '''pentagon''' #{{tagg|geometri|språk=en}} [[femhörning]], [[#Svenska|pentagon]] s0pbtkpap5cflrig1qeewbwnvcqufxq 3703311 3703267 2022-08-19T07:08:55Z Andreasl01 37996 /* Svenska */ +kohyponymer wikitext text/x-wiki {{se även|Pentagon}} {{wikipedia|Pentagon (olika betydelser)}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[penta-|penta]][[-gon|gon]]''' #{{tagg|geometri}} [[polygon]] med fem hörn #:{{synonymer|[[femhörning]]}} #:{{hyperonymer|[[polygon]]}} #:{{kohyponymer|[[triangel]], [[tetragon]], [[hexagon]], [[heptagon]], [[oktogon]], [[nonagon]], [[dekagon]]}} ====Översättningar==== {{ö-se|femhörning}} ==Engelska== ===Substantiv=== {{en-subst}} '''pentagon''' #{{tagg|geometri|språk=en}} [[femhörning]], [[#Svenska|pentagon]] rnwkxrp9oc6ixwy64vs5pbirjdlvc86 märka 0 26354 3703260 3693155 2022-08-18T16:50:40Z Andreasl01 37996 /* Svenska */ formatering, översättningsrubrik wikitext text/x-wiki {{se även|märkä}} {{saknad-betydelse|sv|verb|slangord "ge stryk" eller något ditåt}} ==Svenska== ===Verb=== {{sv-verb-er|rot=märk|fog=t|perfpart=}} '''märka''' #bli medveten om något #:''Jag '''märkte''' inte att någon annan gömde sig i rummet.'' #:''Hon kommer inte att '''märka''' något.'' #:{{synonymer|[[bemärka]], [[förmärka]], [[lägga märke till]], [[notera]], [[observera]], [[uppfatta]]}} #[[förse]] med [[igenkänningstecken]]; göra lätt att känna igen #:{{sammansättningar|[[anmärka]], [[brännmärka]], [[datummärka]], [[dödskallemärka]], [[frimärka]], [[kronmärka]], [[kulturminnesmärka]], [[ommärka]], [[prismärka]], [[ringmärka]], [[runmärka]], [[uppmärka]], [[utmärka]], [[öronmärka]]}} :{{avgränsare}} :{{seäven|[[märkbar]], [[märke]]}} ====Översättningar==== {{ö-topp|bli medveten}} *bokmål: {{ö+|no|merke}} *bulgariska: {{ö+|bg|забелязвам}} *engelska: {{ö+|en|notice}} *finska: {{ö+|fi|huomata}} *franska: {{ö+|fr|remarquer}}, {{ö|fr|prendre conscience (de)}}, {{ö+|fr|se rendre compte}} *italienska: {{ö+|it|notare}} *portugisiska: {{ö+|pt|perceber}}, {{ö+|pt|notar}} *spanska: {{ö|es|darse cuenta}} *tyska: {{ö+|de|merken}} {{ö-botten}} {{ö-topp|förse med igenkänningstecken}} *bokmål: {{ö+|no|merke}} *bulgariska: {{ö+|bg|известие}}, {{ö+|bg|съобщение}} *engelska: {{ö+|en|label}}, {{ö+|en|letter}}, (''skriva namn'') {{ö+|en|name}} *finska: {{ö+|fi|merkitä}} *tyska: {{ö+|de|markieren}}, {{ö+|de|kennzeichnen}} {{ö-botten}} qf59u2rckvgvp7thxprqq9h5nkcr8x1 a conto 0 26830 3703284 3307908 2022-08-18T20:43:19Z Skalman 414 bättre definition utifrån divserse nätkällor och enwikt, dawikt, nowikt wikitext text/x-wiki ==Svenska== ===Adverb=== {{adv|sv}} '''a conto''' #{{tagg|ekonomi|text=om betalning}} (som [[delbetalning]]) [[i förskott]] utifrån ett [[estimat]], för att senare [[reglera]]s baserad på faktisk konsumtion #:{{sammansättningar|[[a conto-betalning]], [[a conto-faktura]]}} #:{{etymologi|Från italienska.}} 2ogtyu8y7ygi7qm5jg058ctmksbs69w Pascals triangel 0 28218 3703263 3231456 2022-08-18T17:32:06Z Andreasl01 37996 /* Svenska */ fixade (och flyttade upp) triangeln wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{subst|sv}} <div class="thumb tright"> <div style="width: min-content;"> <pre style="white-space: pre;"> 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 </pre> <div class="thumbcaption"> De första sju raderna i Pascals triangel; varje tal (förutom den översta ettan) kan beräknas genom att ta summan av talet rakt ovanför och snett ovanför till vänster, där en tom plats räknas som noll.</div> </div> </div> '''[[Pascal]]s [[triangel]]''' #{{tagg|matematik}} triangulär uppställning av [[binomialkoefficient]]er på formen <math>{n \choose k}</math> där ''n'' är den aktuella raden och ''k'' den aktuella kolumnen; den första raden räknas som rad 0 och den första kolumnen räknas som kolumn 0 #:''Du kan slå upp binomialkoefficienterna i '''Pascals triangel'''.'' #:{{seäven|[[Pascals identitet]], [[Pascals pyramid]]}} ====Översättningar==== {{ö-topp}} *engelska: {{ö+|en|Pascal's triangle}} *ryska: {{ö|ru|треугольник Паскаля}} *tyska: {{ö|de|Pascalsches Dreieck}} {{ö-botten}} {{ö-topp-granska|Följande översättningar är inte kontrollerade med avseende på versalisering av initialbokstäver:}} *bokmål: {{ö|no|Pascals trekant}} *finska: {{ö|fi|Pascalin kolmio}} *franska: {{ö+|fr|triangle de Pascal}} *hebreiska: {{ö|he|משולש פסקל}} *isländska: {{ö|is|Pascal-þríhyrningur}} *italienska: {{ö|it|triangolo di Tartaglia}} *katalanska: {{ö|ca|triangle de Tartaglia}} *kinesiska: {{ö|zh|杨辉三角形}} *koreanska: {{ö|ko|파스칼의 삼각형}} *litauiska: {{ö|lt|Paskalio trikampis}} *nederländska: {{ö|nl|driehoek van Pascal}} *persiska: {{ö|fa|مثلث خیام-پاسکال}} *polska: {{ö|pl|trójkąt Pascala}} *portugisiska: {{ö|pt|triângulo de Pascal}} *serbiska: {{ö|sr|Паскалов троугао}} *spanska: {{ö|es|triángulo de Pascal}} *tjeckiska: {{ö|cs|Pascalův trojúhelník}} *turkiska: {{ö|tr|Pascal üçgeni}} *vietnamesiska: {{ö|vi|tam giác Pascal}} {{ö-botten}} cmwo6wp07985dcpri4wun11y5wdx4nk fluga 0 36470 3703365 3693113 2022-08-19T11:57:38Z Tapanpet 6520 +fi: [[perho]] (assisterat) wikitext text/x-wiki {{wikipedia|flugor}} {{saknad-betydelse|sv|??|fiskefluga}} ==Svenska== ===Substantiv=== {{sv-subst-n-or|fog=|pluralrot=flug}} {{media|Calliphora augur whitebackground.jpg|(1) en fluga}} {{media|BOWTIE red velvet pretied clipon.JPG|(2) en fluga}} {{media|Fly lures.jpg|(4) olika flugor}} '''fluga''' #{{tagg|insekter|zoologi}} tvåvingad insekt av underordningen ''Brachycera'' av insektsordningen [[tvåvingade]] (''Diptera''); ofta avses särskilt [[husfluga]]n (''Musca domestica'') #:{{sammansättningar|[[bananfluga]], [[eldfluga]], [[flugfiske]], [[flugfångare]], [[fluglarv]], [[flugsmälla]], [[flugsnappare]], [[flugsvamp]], [[husfluga]], [[spyfluga]]}} #:{{fraser|[[inte göra en fluga förnär]], [[slå två flugor i en smäll]], [[fluga på väggen]]}} #{{tagg|kläder}} band som knyts runt halsen i en [[rosett]] (bärs av män och pojkar i kombination med skjorta) #plötslig företeelse som sprider sig snabbt, för att snart försvinna #:{{citat|publ=[[w:Sydsvenskan|Sydsvenskan]]|titel=[http://www.sydsvenskan.se/sverige/sudoku-populart-sifferpussel/ Sudoku populärt sifferpussel]|år=2005|datum=22 oktober|Sudoku betyder ensam siffra på japanska, men spelet kommer från USA, exporterades till Japan, blev en '''fluga''' där och kom i våras till Europa.}} #:{{synonymer|[[modenyck]], [[modefluga]], [[mode]]}} #{{tagg|fiske}} insektsliknande bete som används för att få fisk med hjälp av att efterlikna en insekts beteende :{{avgränsare}} :{{etymologi|{{härledning|non|fluga}}}} :{{besläktade ord|[[flugen]], [[fly]], [[flyga]], [[flygare]], [[flygg]], [[flygning]], [[flykt]], [[flykting]]}} ====Översättningar==== {{ö-topp|insekt}} *belarusiska: {{ö|be|муха|f}} *bokmål: {{ö+|no|flue|f}} *danska: {{ö+|da|flue|u}} *engelska: {{ö+|en|fly}} *finska: {{ö+|fi|kärpänen}} *franska: {{ö+|fr|mouche|f}} *isländska: {{ö+|is|fluga|f}} *italienska: {{ö+|it|mosca|f}} *japanska: {{ö|ja|ハエ|tr=hae}} *ladino: {{ö|lad|moshka|f}}, {{ö|lad|מושקה|f}} *nynorska: {{ö|nn|fluge|f}} *polska: {{ö+|pl|mucha|f}} *ryska: {{ö+|ru|муха|f|tr=múcha}} *tyska: {{ö+|de|Fliege|f}} *ukrainska: {{ö+|uk|муха|f}} {{ö-botten}} {{ö-topp|band i rosett}} *engelska: {{ö+|en|bow tie}}, {{ö+|en|bowtie}} *finska: {{ö+|fi|rusetti}} *franska: {{ö+|fr|nœud papillon|m}} *italienska: {{ö+|it|farfalla|f}} *ryska: {{ö+|ru|галстук-бабочка|m|tr=gálstuk-bábočka}}, {{ö+|ru|бабочка|f|tr=bábočka}} *tyska: {{ö+|de|Fliege|f}} {{ö-botten}} {{ö-topp|plötslig företeelse}} *engelska: {{ö+|en|craze}}, {{ö+|en|fad}} *franska: {{ö+|fr|vogue|f}}, {{ö+|fr|engouement|m}} *tyska: {{ö+|de|Fimmel|m}} {{ö-botten}} {{ö-topp|insektsliknande fiskebete}} *finska: {{ö+|fi|perho}} *tyska: {{ö+|de|Fliege|f}} {{ö-botten}} ==Isländska== ===Substantiv=== {{is-subst-f-a|rot=flug|15=flugna|16=flugnanna}} '''fluga''' {{f}} #{{tagg|kat=insekter|språk=is}} [[fluga#Svenska|fluga]] co3i8luzyl2zukzh8o0svb7f6v4ch37 led 0 42563 3703338 3635366 2022-08-19T08:40:15Z Andreasl01 37996 /* Svenska */ formatering, +sammansättningar wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Adjektiv=== {{sv-adj-peri|pers=}} '''led''' #[[uttråkad]], [[utled]], [[less]] #{{tagg|vardagligt}} elak; otrevlig #:'''1937''': Severina Jakobsson (upptecknat av Britt Adenius), "Troll". Citerat i Susanne Nylund Skog; Fredrik Skott (23 juni 2020), [https://www.isof.se/om-oss/vara-bloggar/folkminnesarkiven-berattar/arkivberattelser/2020-06-23-samla-sagner-och-skapa-kulturarv.html "Samla sägner och skapa kulturarv"], isof.se, Institutet för språk och folkminnen, avsnitt "Sägner upptecknade av Britt Adenius", läst 24 juni 2020: #::''Usch, vad det var '''lett'''!'' #:''Fy för den '''lede'''!'' #:''''' Lede''' Fi'', i betydelsen "Den grymma fienden". :{{avgränsare}} :{{varianter|[[le]]}} :{{fraser|[[den lede]]}} ====Översättningar==== {{ö-topp|uttråkad, utled, less}} *engelska: {{ö+|en|bored}}, {{ö+|en|sick}} *katalanska: {{ö|ca|fart}} *spanska: {{ö+|es|harto}} *tyska: {{ö+|de|leid}}, {{ö+|de|überdrüssig}} {{ö-botten}} ===Substantiv=== {{sv-subst-t-0|betydelser=1.}} {{sv-subst-n-er|betydelser=2.}} '''led''' 1 {{n}} #individer av något (särskilt människor) som står uppställda på [[rad]] #:''Ställ dig sist i '''ledet'''!'' #:{{seäven|[[kö]]}} #del av något (såsom ett förlopp, en abstrakt kedja) #:''Det var ett '''led''' i utvecklingen.'' #{{tagg|matematik}} det som står intill ett [[likhetstecken|likhets]]- eller [[olikhetstecken]] #:''Förkorta bort massan i båda '''leden'''.'' #:{{sammansättningar|[[ekvationsled]], [[vänsterled]], [[högerled]]}} #:{{synonymer|[[ledd]]}} #{{tagg|lingvistik}} del av [[ord]] #:{{besläktade ord|[[enledad]], [[tvåledad]]}} #:{{sammansättningar|[[förled]], [[efterled]]}} #:{{seäven|[[affix]]}} #[[riktning]], håll #:''På andra sidan gatan kör bilarna i motsatt '''led'''.'' #:{{sammansättningar|[[breddled]], [[djupled]], [[horisontalled]], [[höjdled]], [[lodled]], [[längdled]], [[sidled]], [[vertikalled]], [[västerled]], [[österled]]}} '''led''' 2 {{u}} #{{tagg|anatomi}} del av [[skelett]]et där två eller flera [[ben]] möter varandra och via en [[muskel]] tillåter rörelse #:''Vi brukar alltid värma upp '''lederna''' före träning för att förebygga skador.'' #:{{sammansättningar|[[armled]], [[axelled]], [[fingerled]], [[fotled]], [[handled]], [[höftled]], [[knäled]], [[ledband]], [[ledbrosk]], [[ledkapsel]], [[ledvärk]], [[ledvätska]], [[nackled]], [[tumled]]}} #[[väg]], [[farled]] #:''Att köra skoter utanför '''leden''' är förbjudet.'' #:{{sammansättningar|[[cykelled]], [[farled]], [[genomfartsled]], [[huvudled]], [[motionsled]], [[motortrafikled]], [[trafikled]], [[vandringsled]]}} ::{{grammatik|Kontroversiella och instabila böjningsmönster för diverse betydelser och sammansättningar.}} ====Översättningar==== {{ö-topp|1.1 individer på rad}} *bokmål: {{ö|no|geledd|n}} *engelska: {{ö+|en|queue}}, {{ö+|en|line}} *katalanska: {{ö+|ca|cua|f}} *nynorska: {{ö|nn|geledd|n}} *portugisiska: {{ö+|pt|fila|f}} *spanska: {{ö+|es|línea|f}}, {{ö+|es|cola}} *tyska: {{ö+|de|Glied|n}}, {{ö+|de|Reihe|f}} {{ö-botten}} {{ö-topp|1.2 del}} *engelska: {{ö+|en|stage}}, {{ö+|en|part}}, {{ö+|en|link}} *katalanska: {{ö+|ca|part}} *nederländska: {{ö+|nl|schakel}} *nynorska: {{ö|nn|led|m}}, {{ö|nn|ledd|n}} *spanska: {{ö+|es|parte}} *tyska: {{ö+|de|Glied|n}} {{ö-botten}} {{ö-topp|1.3 matematik}} *engelska: {{ö+|en|side}} *tyska: {{ö+|de|Term|m}} {{ö-botten}} {{ö-topp|1.4 lingvistik}} *engelska: {{ö+|en|stem}}, {{ö+|en|affix}} {{ö-botten}} {{ö-topp|1.5 riktning, håll}} *engelska: {{ö+|en|direction}}, {{ö+|en|way}} *tyska: {{ö+|de|Richtung|f}} {{ö-botten}} {{ö-topp|2.1 anatomi}} *armeniska: {{ö|hy|հոդ}} (hod) *bokmål: {{ö+|no|ledd|n}} *danska: {{ö+|da|led}} *engelska: {{ö+|en|joint}} *esperanto: {{ö|eo|artiko}} *franska: {{ö+|fr|articulation|f}} *italienska: {{ö+|it|articolazione|f}} *nynorska: {{ö|nn|led|m}}, {{ö|nn|ledd|n}} *polska: {{ö+|pl|staw|m}} *portugisiska: {{ö+|pt|articulação|f}}, {{ö+|pt|junta|f}} *ryska: {{ö+|ru|сустав}} *spanska: {{ö+|es|articulación|f}} *tyska: {{ö+|de|Gelenk}} {{ö-botten}} {{ö-topp|2.2 väg, farled}} *bokmål: {{ö+|no|lei|f}} *engelska: {{ö+|en|way}}, {{ö+|en|route}}, {{ö+|en|track}} *finska: {{ö+|fi|väylä}} *tyska: {{ö+|de|Weg|m}}, {{ö+|de|Fahrrinne|f}}, {{ö+|de|Führe|f|not=bergsbestigning}} {{ö-botten}} ===Verb=== '''led''' #{{böjning|sv|verb|leda}} #{{böjning|sv|verb|lida}} ==Engelska== ===Adjektiv=== {{adj|en}} '''led''' #{{avledning|en|lead|ordform=perfpart}} ===Verb=== '''led''' #{{böjning|en|verb|lead}} 7mppzdtnadc2fu0y925igz5bxptb93b 3703342 3703338 2022-08-19T08:57:15Z Andreasl01 37996 /* Svenska */ +sammansättningar wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Adjektiv=== {{sv-adj-peri|pers=}} '''led''' #[[uttråkad]], [[utled]], [[less]] #{{tagg|vardagligt}} elak; otrevlig #:'''1937''': Severina Jakobsson (upptecknat av Britt Adenius), "Troll". Citerat i Susanne Nylund Skog; Fredrik Skott (23 juni 2020), [https://www.isof.se/om-oss/vara-bloggar/folkminnesarkiven-berattar/arkivberattelser/2020-06-23-samla-sagner-och-skapa-kulturarv.html "Samla sägner och skapa kulturarv"], isof.se, Institutet för språk och folkminnen, avsnitt "Sägner upptecknade av Britt Adenius", läst 24 juni 2020: #::''Usch, vad det var '''lett'''!'' #:''Fy för den '''lede'''!'' #:''''' Lede''' Fi'', i betydelsen "Den grymma fienden". :{{avgränsare}} :{{varianter|[[le]]}} :{{fraser|[[den lede]]}} ====Översättningar==== {{ö-topp|uttråkad, utled, less}} *engelska: {{ö+|en|bored}}, {{ö+|en|sick}} *katalanska: {{ö|ca|fart}} *spanska: {{ö+|es|harto}} *tyska: {{ö+|de|leid}}, {{ö+|de|überdrüssig}} {{ö-botten}} ===Substantiv=== {{sv-subst-t-0|betydelser=1.}} {{sv-subst-n-er|betydelser=2.}} '''led''' 1 {{n}} #individer av något (särskilt människor) som står uppställda på [[rad]] #:''Ställ dig sist i '''ledet'''!'' #:{{seäven|[[kö]]}} #del av något (såsom ett förlopp, en abstrakt kedja) #:''Det var ett '''led''' i utvecklingen.'' #{{tagg|matematik}} det som står intill ett [[likhetstecken|likhets]]- eller [[olikhetstecken]] #:''Förkorta bort massan i båda '''leden'''.'' #:{{sammansättningar|[[ekvationsled]], [[vänsterled]], [[högerled]]}} #:{{synonymer|[[ledd]]}} #{{tagg|lingvistik}} del av [[ord]] #:{{besläktade ord|[[enledad]], [[tvåledad]]}} #:{{sammansättningar|[[förled]], [[efterled]]}} #:{{seäven|[[affix]]}} #[[riktning]], håll #:''På andra sidan gatan kör bilarna i motsatt '''led'''.'' #:{{sammansättningar|[[breddled]], [[djupled]], [[horisontalled]], [[höjdled]], [[lodled]], [[längdled]], [[sidled]], [[vertikalled]], [[västerled]], [[österled]]}} '''led''' 2 {{u}} #{{tagg|anatomi}} del av [[skelett]]et där två eller flera [[ben]] möter varandra och via en [[muskel]] tillåter rörelse #:''Vi brukar alltid värma upp '''lederna''' före träning för att förebygga skador.'' #:{{sammansättningar|[[armled]], [[axelled]], [[fingerled]], [[fotled]], [[handled]], [[höftled]], [[knäled]], [[ledband]], [[ledbrosk]], [[ledkapsel]], [[ledvärk]], [[ledvätska]], [[nackled]], [[tumled]]}} #[[väg]], [[farled]] #:''Att köra skoter utanför '''leden''' är förbjudet.'' #:{{sammansättningar|[[bergsled]], [[cykelled]], [[farled]], [[genomfartsled]], [[huvudled]], [[ledkryss]], [[ledmarkering]], [[motionsled]], [[motortrafikled]], [[sjöled]], [[skidled]], [[skogsled]], [[skoterled]], [[snöskoterled]], [[trafikled]], [[vandringsled]]}} ::{{grammatik|Kontroversiella och instabila böjningsmönster för diverse betydelser och sammansättningar.}} ====Översättningar==== {{ö-topp|1.1 individer på rad}} *bokmål: {{ö|no|geledd|n}} *engelska: {{ö+|en|queue}}, {{ö+|en|line}} *katalanska: {{ö+|ca|cua|f}} *nynorska: {{ö|nn|geledd|n}} *portugisiska: {{ö+|pt|fila|f}} *spanska: {{ö+|es|línea|f}}, {{ö+|es|cola}} *tyska: {{ö+|de|Glied|n}}, {{ö+|de|Reihe|f}} {{ö-botten}} {{ö-topp|1.2 del}} *engelska: {{ö+|en|stage}}, {{ö+|en|part}}, {{ö+|en|link}} *katalanska: {{ö+|ca|part}} *nederländska: {{ö+|nl|schakel}} *nynorska: {{ö|nn|led|m}}, {{ö|nn|ledd|n}} *spanska: {{ö+|es|parte}} *tyska: {{ö+|de|Glied|n}} {{ö-botten}} {{ö-topp|1.3 matematik}} *engelska: {{ö+|en|side}} *tyska: {{ö+|de|Term|m}} {{ö-botten}} {{ö-topp|1.4 lingvistik}} *engelska: {{ö+|en|stem}}, {{ö+|en|affix}} {{ö-botten}} {{ö-topp|1.5 riktning, håll}} *engelska: {{ö+|en|direction}}, {{ö+|en|way}} *tyska: {{ö+|de|Richtung|f}} {{ö-botten}} {{ö-topp|2.1 anatomi}} *armeniska: {{ö|hy|հոդ}} (hod) *bokmål: {{ö+|no|ledd|n}} *danska: {{ö+|da|led}} *engelska: {{ö+|en|joint}} *esperanto: {{ö|eo|artiko}} *franska: {{ö+|fr|articulation|f}} *italienska: {{ö+|it|articolazione|f}} *nynorska: {{ö|nn|led|m}}, {{ö|nn|ledd|n}} *polska: {{ö+|pl|staw|m}} *portugisiska: {{ö+|pt|articulação|f}}, {{ö+|pt|junta|f}} *ryska: {{ö+|ru|сустав}} *spanska: {{ö+|es|articulación|f}} *tyska: {{ö+|de|Gelenk}} {{ö-botten}} {{ö-topp|2.2 väg, farled}} *bokmål: {{ö+|no|lei|f}} *engelska: {{ö+|en|way}}, {{ö+|en|route}}, {{ö+|en|track}} *finska: {{ö+|fi|väylä}} *tyska: {{ö+|de|Weg|m}}, {{ö+|de|Fahrrinne|f}}, {{ö+|de|Führe|f|not=bergsbestigning}} {{ö-botten}} ===Verb=== '''led''' #{{böjning|sv|verb|leda}} #{{böjning|sv|verb|lida}} ==Engelska== ===Adjektiv=== {{adj|en}} '''led''' #{{avledning|en|lead|ordform=perfpart}} ===Verb=== '''led''' #{{böjning|en|verb|lead}} 5yzeu4lr4hwcz3tw5h6rep0xhv9scdb rekord 0 44894 3703322 3655901 2022-08-19T07:25:59Z 2A01:B740:1F:2030:49D3:34D:D129:481E wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0}} '''rekord''' ''n'' #det extremaste resultat eller värde för en viss bedrift, särskilt i tävlingssammanhang #:'''''Rekordet''' i längdhopp är svårslaget.'' #:''Hon slog sitt gamla '''rekord''' med hela sju sekunder.'' #:''Nya '''värmerekord''' väntas under den kommande månaden, med extrem hetta och luftfuktighet.'' #:{{sammansättningar|[[bottenrekord]], [[publikrekord]], [[rekordfart]], [[rekordförsök]], [[rekordhelg]], [[rekordvecka]], [[rekordvärme]], [[rekordår]], [[värmerekord]]}} #:{{fraser|[[sätta rekord]]}} ====Översättningar==== {{ö-topp|det extremaste resultat}} *engelska: {{ö+|en|record}} *esperanto: {{ö|eo|rekordo}} *finska: {{ö+|fi|ennätys}} *franska: {{ö+|fr|record|m}} *nederländska: {{ö+|nl|record|n}} *polska: {{ö+|pl|rekord|m}} *turkiska: {{ö+|tr|rekor}} *tyska: {{ö+|de|Rekord|m}} {{ö-botten}} leooq17c2tpbc967g4gcgs9r2pty6hn 3703323 3703322 2022-08-19T07:26:32Z 2A01:B740:1F:2030:49D3:34D:D129:481E wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0}} '''rekord''' ''n'' #det extremaste resultat eller värde för en viss bedrift, särskilt i tävlingssammanhang #:'''''Rekordet''' i längdhopp är svårslaget.'' #:''Hon slog sitt gamla '''rekord''' med hela sju sekunder.'' #:''Nya '''värmerekord''' väntas under den kommande månaden, med extrem hetta och luftfuktighet.'' #:{{sammansättningar|[[bottenrekord]], [[Europarekord]], [[publikrekord]], [[rekordfart]], [[rekordförsök]], [[rekordhelg]], [[rekordvecka]], [[rekordvärme]], [[rekordår]], [[världsrekord]], [[värmerekord]]}} #:{{fraser|[[sätta rekord]]}} ====Översättningar==== {{ö-topp|det extremaste resultat}} *engelska: {{ö+|en|record}} *esperanto: {{ö|eo|rekordo}} *finska: {{ö+|fi|ennätys}} *franska: {{ö+|fr|record|m}} *nederländska: {{ö+|nl|record|n}} *polska: {{ö+|pl|rekord|m}} *turkiska: {{ö+|tr|rekor}} *tyska: {{ö+|de|Rekord|m}} {{ö-botten}} mbl62qe9oiunm2sjozuq72rxnzoda1a hexagon 0 45833 3703269 3574892 2022-08-18T17:48:35Z Andreasl01 37996 +hr: [[šesterokut]] (assisterat) wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[hexa-|hexa]][[-gon|gon]]''' #{{tagg|geometri}} [[sexhörning]]; en plan geometrisk figur med sex sidor #:{{etymologi|Från grekiska [[εξ]] (''hex'', talet [[sex]]) + [[γωνία]] (''gonia'', [[vinkel]])}} #:{{hyperonymer|[[polygon]], [[månghörning]]}} ====Kohyponymer==== *[[triangel]] *[[tetragon]] *[[pentagon]] *[[heptagon]] *[[oktagon]] *[[nonagon]] *[[dekagon]] ====Besläktade ord==== *[[hexaflexagon]] ====Synonymer==== *[[sexhörning]] ====Översättningar==== {{ö-topp}} *asturiska: {{ö|ast|hexágonu}} *danska: {{ö|da|sekskant}}, {{ö|da|heksagon}}, {{ö|da|hexagon}} *engelska: {{ö+|en|hexagon}} *finska: {{ö+|fi|kuusikulmio}}, {{ö+|fi|heksagoni}} *franska: {{ö+|fr|hexagone|m}} *iriska: {{ö|ga|heicseagán}} *italienska: {{ö+|it|esagono|m}} *kroatiska: {{ö|hr|šesterokut|m}} *kurdiska: {{ö+|ku|şeşgoşe}} *nynorska: {{ö|nn|heksagon}} *polska: {{ö+|pl|sześciokąt|m}} *spanska: {{ö|es|sexángulo|m}}, {{ö+|es|hexágono|m}} *turkiska: {{ö+|tr|altıgen}} *tyska: {{ö+|de|Hexagon|n}}, {{ö+|de|Hexagon|n}}, {{ö+|de|Sechseck|n}} {{ö-botten}} ==Engelska== ===Substantiv=== {{en-subst}} '''hexagon''' #{{tagg|geometri|språk=en}} [[sexhörning]], [[#Svenska|hexagon]] 5jfohceug24h3gg4heeb8nog371m4in 3703270 3703269 2022-08-18T17:52:13Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[hexa-|hexa]][[-gon|gon]]''' #{{tagg|geometri}} [[sexhörning]]; en plan geometrisk figur med sex sidor #:{{etymologi|Från grekiska [[εξ]] (''hex'', talet [[sex]]) + [[γωνία]] (''gonia'', [[vinkel]])}} #:{{synonymer|[[sexhörning]]}} #:{{hyperonymer|[[polygon]], [[månghörning]]}} #:{{kohyponymer|[[triangel]], [[tetragon]], [[pentagon]], [[heptagon]], [[oktogon]], [[nonagon]], [[dekagon]]}} #:{{besläktade ord|[[hexaflexagon]]}} ====Översättningar==== {{ö-topp}} *asturiska: {{ö|ast|hexágonu}} *danska: {{ö|da|sekskant}}, {{ö|da|heksagon}}, {{ö|da|hexagon}} *engelska: {{ö+|en|hexagon}} *finska: {{ö+|fi|kuusikulmio}}, {{ö+|fi|heksagoni}} *franska: {{ö+|fr|hexagone|m}} *iriska: {{ö|ga|heicseagán}} *italienska: {{ö+|it|esagono|m}} *kroatiska: {{ö|hr|šesterokut|m}} *kurdiska: {{ö+|ku|şeşgoşe}} *nynorska: {{ö|nn|heksagon}} *polska: {{ö+|pl|sześciokąt|m}} *spanska: {{ö|es|sexángulo|m}}, {{ö+|es|hexágono|m}} *turkiska: {{ö+|tr|altıgen}} *tyska: {{ö+|de|Hexagon|n}}, {{ö+|de|Hexagon|n}}, {{ö+|de|Sechseck|n}} {{ö-botten}} ==Engelska== ===Substantiv=== {{en-subst}} '''hexagon''' #{{tagg|geometri|språk=en}} [[sexhörning]], [[#Svenska|hexagon]] hyg6j1w9m2llhgqcpiavz80ra0kdjsx nonagon 0 45835 3703308 3111644 2022-08-19T07:01:08Z Andreasl01 37996 /* Svenska */ härledning, formatering wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[nona-|nona]][[-gon|gon]]''' #{{tagg|geometri}} [[niohörning]]; en plan [[geometrisk figur]] med nio sidor #:{{synonymer|[[niohörning]]}} #:{{etymologi|Från {{härledning-|la|nonnus|[[nio]]}} + {{härledning-|grc|γωνία|[[vinkel]]|tr=gonia}}.}} #:{{hyperonymer|[[polygon]], [[månghörning]]}} #:{{kohyponymer|[[triangel]], [[tetragon]], [[pentagon]], [[hexagon]], [[heptagon]], [[oktogon]], [[dekagon]]}} ====Översättningar==== {{ö-se|niohörning}} le1yiayg4dl8wgzmbugvwujp6a68gj9 dekagon 0 45836 3703309 3275476 2022-08-19T07:03:09Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[deka-|deka]][[-gon|gon]]''' #{{tagg|geometri}} [[tiohörning]]; en plan [[geometrisk figur]] med tio sidor #:{{etymologi|{{härledning|grc|δεκα|tr=deka|talet tio|punkt=-}} + [[γωνία]] (''gonia'', [[vinkel]]).}} #:{{synonymer|[[tiohörning]]}} #:{{hyperonymer|[[polygon]], [[månghörning]]}} #:{{kohyponymer|[[triangel]], [[tetragon]], [[pentagon]], [[hexagon]], [[heptagon]], [[oktogon]], [[nonagon]]}} ====Översättningar==== {{ö-topp}} *asturiska: {{ö|ast|decágonu}} *engelska: {{ö+|en|decagon}} *finska: {{ö|fi|kymmenkulmio}} *franska: {{ö|fr|décagone}} *iriska: {{ö|ga|deacagán}} *italienska: {{ö+|it|decagono}} *nynorska: {{ö|nn|dekagon}} *spanska: {{ö+|es|decágono}} *tyska: {{ö|de|Dekagon|n}} {{ö-botten}} 4uhheoxwrzwa6wa8816ju44a3jijtff millennium 0 62035 3703315 3637817 2022-08-19T07:17:08Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-t-er|rot=millenni}} '''millennium''' #{{tagg|kat=tidsuttryck}} [[årtusende]]; en period av tusen år och egentligen då ett kalenderårtusende ====Översättningar==== {{ö-se|årtusende}} ==Engelska== ===Substantiv=== {{en-subst|2=[[millennia]], [[millenniums]]|4=[[millennia's]], [[millenniums']]}} '''millennium''' #[[#Svenska|millennium]], [[årtusende]] 1m2v8fw1qxi1vbjqlrulcfwo21cevul kavel 0 65866 3703274 3694047 2022-08-18T18:13:20Z 188.238.106.86 +tr: [[merdane]]; +tr: [[oklava]] (assisterat) wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-ar|fog=|pluralrot=kavl}} {{media|Rollingpin.jpg|kavel}} '''kavel''' #{{tagg|köksredskap}} redskap för tillplattning av [[deg]] vid bakning #:{{varianter|kavle}} #:{{besläktade ord|[[kavla]]}} #:{{sammansättningar|[[brödkavel]]}} #handtag på fäktredskap #:''Utsmyckningen på klingan var riktad mot svärdets '''kavel'''.'' ====Översättningar==== {{ö-topp|köksredskap}} *bokmål: {{ö+|no|kjevle|n}} *danska: {{ö|da|kagerulle|c}} *engelska: {{ö+|en|rolling pin}} *finska: {{ö+|fi|kaulin}} *franska: {{ö+|fr|rouleau à pâtisserie|m}} *polska: {{ö+|pl|wałek do ciasta|m}} *ryska: {{ö+|ru|скалка}} *turkiska: {{ö+|tr|merdane}}, {{ö+|tr|oklava}} *tyska: {{ö+|de|Nudelholz|n}}, {{ö|de|Teigrolle|f}} {{ö-botten}} 3nu4wjsc8m87040bhx09q8ohk6ugc39 trehörning 0 72106 3703310 3089819 2022-08-19T07:04:13Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[tre]][[-hörning|hörning]]''' #{{tagg|geometri|vardagligt}} [[triangel]], en [[månghörning]] #:{{användning|Se [[månghörning]] för en diskussion om språkbruket.}} #:{{hyperonymer|[[månghörning]]}} ====Översättningar==== {{ö-se|triangel}} 6y412bu6bee5e4jkkh92t5zbsysop9q sexhörning 0 72107 3703268 3467945 2022-08-18T17:47:10Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[sex]][[-hörning|hörning]]''' #{{tagg|geometri|vardagligt}} [[hexagon]], en [[månghörning]] #:{{användning|Se [[månghörning]] för en diskussion om språkbruket.}} #:{{hyperonymer|[[månghörning]]}} ====Översättningar==== {{ö-se|hexagon}} oez4dqo09hgb27yavofahqoy0uxs222 tiohörning 0 72110 3703312 2833182 2022-08-19T07:11:56Z Andreasl01 37996 /* Svenska */ ====Översättningar==== {{ö-se|dekagon}} wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[tio]][[-hörning|hörning]]''' #{{tagg|geometri|vardagligt}} [[dekagon]], en [[månghörning]] #:{{användning|Se [[månghörning]] för en diskussion om språkbruket.}} #:{{hyperonymer|[[månghörning]]}} ====Översättningar==== {{ö-se|dekagon}} d6t0dpoxzr8h0ao72z670xn3oo1g4gn sjuhörning 0 72111 3703271 3089939 2022-08-18T17:53:35Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[sju]][[-hörning|hörning]]''' #{{tagg|geometri|vardagligt}} [[heptagon]], en [[månghörning]] #:{{användning|Se [[månghörning]] för en diskussion om språkbruket.}} #:{{hyperonymer|[[månghörning]]}} ====Översättningar==== {{ö-se|heptagon}} c5l3r7bzzbkejvoiu0old6elm1nigy4 ftw 0 72933 3703239 3584006 2022-08-18T15:26:27Z 213.89.158.0 /* Förkortning */ wikitext text/x-wiki ==Engelska== ===Förkortning=== {{förkortning|en}} '''ftw''' #{{tagg|chattspråk|språk=en}} ''förkortning för'' [[for the win]] :{{avgränsare}} :{{varianter|[[FTW]]}} 79d8pn2swsbfe13o3nxgz34m21md04w 3703272 3703239 2022-08-18T18:07:54Z Skalman 414 Återställde redigeringar av [[Special:Contributions/213.89.158.0|213.89.158.0]] ([[User talk:213.89.158.0|användardiskussion]]) till senaste versionen av [[User:Taylorbot|Taylorbot]] wikitext text/x-wiki ==Engelska== ===Förkortning=== {{förkortning|en}} '''ftw''' #{{tagg|chattspråk|språk=en}} ''förkortning för'' [[for the win]] #{{tagg|chattspråk|språk=en}} ''förkortning för'' [[Fuck the world.]] #{{tagg|slang|språk=en}} ''förkortning för'' [[Forever two wheels.]] :{{avgränsare}} :{{varianter|[[FTW]]}} 0uoyglfk6hmk881bf87hwiocg0enamt tie 0 119026 3703350 3647041 2022-08-19T09:36:27Z Andreasl01 37996 /* Engelska */ formatering, +sammansättningar wikitext text/x-wiki ==Svenska== ===Räkneord=== {{räkn|sv}} '''tie''' #{{tagg|vardagligt|dialektalt}} [[tio]] ==Bokmål== ===Verb=== {{no-verb-r|3=[[tidde]], [[tiet]]|4=[[tidd]], [[tiet]]|5=ti|prespart=tiende|perfpart=-}} '''tie''' #[[tiga]] ==Engelska== ===Verb=== {{en-verb-e|rot=ti|3=[[tieing]], [[tying]]}} '''tie''' *{{uttal|en|ipa=taɪ}} #[[knyta]], [[binda]] #{{tagg|kat=sport|språk=en}}spela [[oavgjort]] i [[spel]] eller [[sport]] :{{avgränsare}} :{{homofoner|[[Thai]], [[Ty]]}} ===Substantiv=== {{en-subst}} '''tie''' #{{tagg|amerikansk engelska|järnväg|språk=en}} [[sliper]] #:{{synonymer|[[railroad tie]], [[railway tie]], [[rail tie]], [[crosstie]], [[railway sleeper]]}} #[[band]], [[snöre]] #:{{sammansättningar|[[bowtie]], [[necktie]], [[twist tie]]}} #{{tagg|kat=kläder|språk=en}}[[slips]] #:{{synonymer|[[necktie]]}} #[[oavgjort]] resultat #:{{sammansättningar|[[tiebreak]]}} ==Finska== ===Substantiv=== '''tie''' #[[väg]] #:{{sammansättningar|[[jäätie]], [[kehätie]], [[keskikaidetie]], [[maantie]], [[matkailutie]], [[moottoritie]], [[moottoriliikennetie]], [[piennartie]], [[pyörätie]], [[rautatie]], [[suojatie]], [[talvitie]], [[tiekirkko]], [[tienkäyttäjä]], [[tienristeys]], [[tietyö]], [[tieverkko]], [[valtatie]]}} 74koz8fgtdq79ufb4w114xlpkkb3iuh bow 0 123640 3703346 3700915 2022-08-19T09:25:22Z Andreasl01 37996 /* Engelska */ formatering, +sammansättning wikitext text/x-wiki ==Engelska== ===Substantiv=== {{en-subst}} '''bow 1''' *{{uttal|en|ipa=bəʊ|region=Storbritannien}} *{{uttal|en|ipa=boʊ|region=USA}} #[[båge]], [[rundning]], [[krökning]] #:{{sammansättningar|[[rainbow]]}} #[[rosett]] #:{{sammansättningar|[[bowtie]]}} #{{tagg|kat=vapen|språk=en}} [[pilbåge]], [[båge]] #:{{sammansättningar|[[bowman]], [[crossbow]], [[longbow]], [[shortbow]]}} #{{tagg|kat=musik|språk=en}} [[stråke]] :{{avgränsare}} :{{etymologi|Från germanska roten *bugan-, varav även svenska ''[[båge]]''.}} '''bow 2''' *{{uttal|en|ipa=baʊ}} #[[bog]] (på fartyg); [[för]] (på fartyg), [[stäv]] #:{{etymologi|Troligen inlånat från antingen lågtyska eller ett nordiskt språk. Besläktat med svenska ''[[bog]]''.}} '''bow 3''' *{{uttal|en|ipa=baʊ}} #[[bugning]] ===Verb=== {{en-verb}} '''bow''' *{{uttal|en|ipa=baʊ}} #[[böja]]; [[kröka]] #[[buga]]; [[böja sig]] :{{avgränsare}} :{{etymologi|Från germanska roten *beugan, varav även svenska ''[[buga]]''.}} lh6s3rfh2261y4qr7nryc5bsloru8bt mörkblå 0 123725 3703262 3428975 2022-08-18T17:00:20Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki ==Svenska== ===Adjektiv=== {{sv-adj-alt|pers=|mörkblå|mörkblått|mörkblå, mörkblåe|mörkblå, mörkblåa|mörkblå, mörkblåa|mörkblå|mörkblått|mörkblå, mörkblåa}} {{färg|#00008B}} '''[[mörk]][[blå]]''' #{{tagg|kat=färger}}som har en [[mörk]]are [[nyans]] av [[färg]]en [[blå]] #:{{seäven|[[marinblå]], [[ljusblå]]}} ====Översättningar==== {{ö-topp|färg}} *bokmål: {{ö|no|mørkeblå}} *danska: {{ö|da|mørkeblå}} *engelska: {{ö|en|dark blue}} *finska: {{ö|fi|tummansininen}} *frisiska: {{ö|fy|donkerblau}} *iriska: {{ö+|ga|dúghorm}} *isländska: {{ö|is|dökkblár}} *italienska: {{ö|it|blu scuro}} *nederländska: {{ö+|nl|donkerblauw}} *polska: {{ö+|pl|ciemnoniebieski}} *portugisiska: {{ö+|pt|azul-escuro}} *tyska: {{ö+|de|dunkelblau}} {{ö-botten}} ===Substantiv=== {{subst|sv}} '''mörkblå''' #färgen mörkblå ====Översättningar==== {{ö-topp|färgen mörkblå}} *franska: {{ö|fr|bleu foncé|m}} *tyska: {{ö|de|Dunkelblau|n}} {{ö-botten}} i52jim07lgxrtf9toozxighu1atw2r3 marin 0 132800 3703354 3424672 2022-08-19T09:46:07Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''marin''' #[[sjöförsvar]] #:{{synonymer|[[flotta]]}} #:{{sammansättningar|[[marinblå]], [[marinsoldat]], [[marinstab]]}} #:{{seäven|[[kustartilleri]], [[vapenslag]]}} #[[målning]] med [[havsmotiv]] #:{{sammansättningar|[[marinmålare]], [[marinmålning]]}} ====Översättningar==== {{ö-topp|sjöförsvar}} *engelska: {{ö+|en|navy}} *finska: {{ö+|fi|laivasto}}, {{ö+|fi|merivoimat}} *franska: {{ö|fr|marine|f}} *spanska: {{ö+|es|marina|f}} *tyska: {{ö+|de|Marine|f}} {{ö-botten}} {{ö-topp|målning}} {{ö-botten}} ===Adjektiv=== {{sv-adj-okomp|pers=}} '''marin''' #som har att göra med [[sjöförsvar]] #som har att göra med [[hav]]et {{nollpos}} ====Översättningar==== {{ö-topp|som har att göra med sjöförsvar}} *engelska: {{ö+|en|naval}} *finska: {{ö|fi|laivasto-}}, {{ö|fi|meripuolustus-}} *franska: {{ö+|fr|naval}} *italienska: {{ö+|it|navale}} *portugisiska: {{ö+|pt|naval}} *spanska: {{ö+|es|naval}} {{ö-botten}} {{ö-topp|som har att göra med havet}} *engelska: {{ö+|en|marine}} *finska: {{ö+|fi|merellinen}}, {{ö|fi|meri-}} *franska: {{ö+|fr|marin}} *italienska: {{ö+|it|marino}} *polska: {{ö+|pl|morski}} *portugisiska: {{ö+|pt|marinho}} *spanska: {{ö+|es|marino}} {{ö-botten}} 2pkx54nw1ncrljkkys2qy0vts1j7g82 kovändning 0 134767 3703325 3215873 2022-08-19T07:28:31Z PeterFisk 21271 +no: [[kuvending]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[ko]][[vändning]]''' #[[plötslig]] vändning, det att plötsligt inta [[motsatt]] [[ståndpunkt]] #:{{citat|år=2009|datum=2 nov|titel=[http://hbl.fi/nyheter/2009-11-02/ny-plan-avdelning-atta Ny plan för avdelning åtta]|publ=[[w:Hufvudstadsbladet|Hufvudstadsbladet]]|Personalen på avdelning åtta beskriver ledningsgruppens förslag som en överraskande '''kovändning'''.}} ====Översättningar==== {{ö-topp}} *bokmål: {{ö|no|kuvending|m}} *finska: {{ö|fi|lehmänkäännös}} *tyska: {{ö+|de|Kehrtwende|f}}, {{ö+|de|Kehrtwendung|f}} {{ö-botten}} tcmi4m69du6f1qo0lqpsj7sa0phrik3 rav 0 145038 3703321 3571149 2022-08-19T07:22:48Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki {{se även|räv}} ==Svenska== ===Substantiv=== {{sv-subst-n-oräkn}} '''rav''' #{{tagg|kat=mineraler|ålderdomligt|dialektalt}} [[bärnsten]] #:{{besläktade ord|[[radband]]}} #:{{sammansättningar|[[valrav]]}} #:{{etymologi|Av fornsvenska och fornnordiska ''[[raf]]'' med samma betydelse. Jämför även isländska ''[[raf]]'' samt danska, färöiska och norska ''[[rav#Danska|rav]]''.}} ====Översättningar==== {{ö-se|bärnsten}} ==Bokmål== ===Substantiv=== {{subst|no}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=no}} [[bärnsten]] ==Danska== ===Substantiv=== {{subst|da}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=da}} [[bärnsten]] ===Verb=== '''rav''' #{{böjning|da|verb|rave}} ==Färöiska== ===Substantiv=== {{subst|fo}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=fo}} [[bärnsten]] #:{{sammansättningar|[[ravmagn]]}} ==Nynorska== ===Substantiv=== {{subst|nn}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=nn}} [[bärnsten]] 8ph696jjifzkmp469o5lq3jyfsxoola 3703324 3703321 2022-08-19T07:27:26Z Andreasl01 37996 /* Svenska */ härledning wikitext text/x-wiki {{se även|räv}} ==Svenska== ===Substantiv=== {{sv-subst-n-oräkn}} '''rav''' #{{tagg|kat=mineraler|ålderdomligt|dialektalt}} [[bärnsten]] #:{{besläktade ord|[[radband]]}} #:{{sammansättningar|[[valrav]]}} #:{{etymologi|Av {{härledning-|gmq-fsv}} och {{härledning-|non|raf}} med samma betydelse. Jämför även isländska ''[[raf]]'' samt danska, färöiska och norska ''[[rav#Danska|rav]]''.}} ====Översättningar==== {{ö-se|bärnsten}} ==Bokmål== ===Substantiv=== {{subst|no}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=no}} [[bärnsten]] ==Danska== ===Substantiv=== {{subst|da}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=da}} [[bärnsten]] ===Verb=== '''rav''' #{{böjning|da|verb|rave}} ==Färöiska== ===Substantiv=== {{subst|fo}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=fo}} [[bärnsten]] #:{{sammansättningar|[[ravmagn]]}} ==Nynorska== ===Substantiv=== {{subst|nn}} '''rav''' {{n}} #{{tagg|kat=mineraler|språk=nn}} [[bärnsten]] 33o2f61rnp6n44yc9hd54ylh6dpshxy bärnsten 0 145039 3703331 3665529 2022-08-19T07:36:40Z Andreasl01 37996 /* Svenska */ härledning wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-oräkn}} '''bärnsten''' {{media|Amber.insect.800pix.050203.jpg|bärnsten}} #{{tagg|mineraler}} [[stelnad|stelnat]] [[fossil]]t [[harts]], ursprungligen [[avsöndra]]d som [[kåda]] av [[träd]], framförallt [[barr]] #:{{synonymer|[[rav]] ''(dialekt)''}} #:{{etymologi|Av {{härledning-|nds|bernsten|sten man kan [[bränna]]}} av ''[[bernen]]'' (”[[bränna]]”). Ersatte inhemska ''[[rav]]''. Jämför tyska ''[[Bernstein]]''.}} #:{{sammansättningar|[[bärnstensfärgad]], [[bärnstensgul]]}} ====Översättningar==== {{ö-topp|fossilt harts}} *afrikaans: {{ö|af|barnsteen}} *baskiska: {{ö|eu|anbar}} *bokmål: {{ö+|no|rav|n}} *danska: {{ö+|da|rav|n}} *engelska: {{ö+|en|amber}} *esperanto: {{ö|eo|sukceno}} *estniska: {{ö|et|merevaik}} *finska: {{ö+|fi|meripihka}} *fornengelska: {{ö|ang|amber|m}} *fornnordiska: {{ö|non|raf|n}} *fornsvenska: {{ö|gmq-fsv|raf|n}} *franska: {{ö+|fr|ambre}} *färöiska: {{ö|fo|rav|n}} *grekiska: {{ö+|el|κεχριμπάρι|n}} (''kechrimári'') *indonesiska: {{ö+|id|ambar}} *iriska: {{ö|ga|ómra|m}} *isländska: {{ö|is|raf|n}} *italienska: {{ö|it|ambra|f}} *katalanska: {{ö|ca|ambre}} *klassisk grekiska: {{ö|grc|ήλεκτρον}} (''ēlektron'') *kroatiska: {{ö|hr|jantar|m}} *kymriska: {{ö+|cy|ambr}} *latin: {{ö|la|glaesum|n}} *lettiska: {{ö+|lv|dzintars|m}} *limburgiska: {{ö|li|barnsstein}} *litauiska: {{ö+|lt|gintaras|m}} *nederländska: {{ö+|nl|barnsteen}} *nynorska: {{ö|nn|rav|n}} *polska: {{ö+|pl|bursztyn|m}} *slovakiska: {{ö|sk|jantar|m}} *slovenska: {{ö+|sl|jantar|m}} *spanska: {{ö+|es|ámbar|m}} *tjeckiska: {{ö+|cs|jantar|m}} *tyska: {{ö+|de|Bernstein|m}}, {{ö+|de|Amber|m}} *ungerska: {{ö+|hu|borostyán}} {{ö-botten}} m47af5kp2ohvlnmklb31gjkc6i3qeuf 3703332 3703331 2022-08-19T07:37:56Z Andreasl01 37996 /* Översättningar */ tr wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-oräkn}} '''bärnsten''' {{media|Amber.insect.800pix.050203.jpg|bärnsten}} #{{tagg|mineraler}} [[stelnad|stelnat]] [[fossil]]t [[harts]], ursprungligen [[avsöndra]]d som [[kåda]] av [[träd]], framförallt [[barr]] #:{{synonymer|[[rav]] ''(dialekt)''}} #:{{etymologi|Av {{härledning-|nds|bernsten|sten man kan [[bränna]]}} av ''[[bernen]]'' (”[[bränna]]”). Ersatte inhemska ''[[rav]]''. Jämför tyska ''[[Bernstein]]''.}} #:{{sammansättningar|[[bärnstensfärgad]], [[bärnstensgul]]}} ====Översättningar==== {{ö-topp|fossilt harts}} *afrikaans: {{ö|af|barnsteen}} *baskiska: {{ö|eu|anbar}} *bokmål: {{ö+|no|rav|n}} *danska: {{ö+|da|rav|n}} *engelska: {{ö+|en|amber}} *esperanto: {{ö|eo|sukceno}} *estniska: {{ö|et|merevaik}} *finska: {{ö+|fi|meripihka}} *fornengelska: {{ö|ang|amber|m}} *fornnordiska: {{ö|non|raf|n}} *fornsvenska: {{ö|gmq-fsv|raf|n}} *franska: {{ö+|fr|ambre}} *färöiska: {{ö|fo|rav|n}} *grekiska: {{ö+|el|κεχριμπάρι|n|tr=kechrimári}} *indonesiska: {{ö+|id|ambar}} *iriska: {{ö|ga|ómra|m}} *isländska: {{ö|is|raf|n}} *italienska: {{ö|it|ambra|f}} *katalanska: {{ö|ca|ambre}} *klassisk grekiska: {{ö|grc|ήλεκτρον|tr=ēlektron}} *kroatiska: {{ö|hr|jantar|m}} *kymriska: {{ö+|cy|ambr}} *latin: {{ö|la|glaesum|n}} *lettiska: {{ö+|lv|dzintars|m}} *limburgiska: {{ö|li|barnsstein}} *litauiska: {{ö+|lt|gintaras|m}} *nederländska: {{ö+|nl|barnsteen}} *nynorska: {{ö|nn|rav|n}} *polska: {{ö+|pl|bursztyn|m}} *slovakiska: {{ö|sk|jantar|m}} *slovenska: {{ö+|sl|jantar|m}} *spanska: {{ö+|es|ámbar|m}} *tjeckiska: {{ö+|cs|jantar|m}} *tyska: {{ö+|de|Bernstein|m}}, {{ö+|de|Amber|m}} *ungerska: {{ö+|hu|borostyán}} {{ö-botten}} dn4xy5jdosxi6fnxgl27xrb6vifzurk ringare 0 151462 3703326 3232756 2022-08-19T07:30:11Z PeterFisk 21271 +no: [[ringer]]; +no: [[klokker]] (assisterat) wikitext text/x-wiki ==Svenska== ===Adjektiv=== '''ringare''' #{{böjning|sv|adj|ringa}} ===Substantiv=== {{sv-subst-n-0|rot=ringar|are=}} '''ringare''' #person som har till yrke att [[ringa]] i [[kyrkklocka|kyrkklockor]] #:{{sammansättningar|[[w:Ringaren i Notre Dame|Ringaren i Notre Dame]]}} ====Översättningar==== {{ö-topp}} *bokmål: {{ö+|no|ringer|m}}, {{ö+|no|klokker|m}} *engelska: {{ö+|en|ringer}}, {{ö+|en|bell-ringer}} *tyska: {{ö+|de|Glöckner|m}} {{ö-botten}} rw3iyrjde8ypmtcrsdxn68kr4ifk7ap dörröppnare 0 160624 3703335 1640241 2022-08-19T08:12:16Z PeterFisk 21271 +no: [[døråpner]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-0|rot=dörröppnar|are=}} '''[[dörr]][[öppnare]]''' #person eller tekniskt föremål som [[öppna]]r [[dörr]]ar ====Översättningar==== {{ö-topp}} *bokmål: {{ö|no|døråpner|m}} *engelska: {{ö|en|door unlocker}}, {{ö|en|door opener}} {{ö-botten}} onou1i6hh3pbzxnwk3mkt3rl2nlxsih romare 0 165287 3703336 3515755 2022-08-19T08:13:04Z PeterFisk 21271 +no: [[romer]]; +no: [[romer]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-0|rot=romar|are=}} '''romare''' #{{tagg|historia}} person från [[romarriket]] som hade [[romersk]] [[medborgarrätt]] #person som är född och uppvuxen i staden [[Rom]] :{{avgränsare}} :{{besläktade ord|[[Rom]], [[romersk]], [[romerska]], [[romarinna]]}} ====Översättningar==== {{ö-topp|person från romarriket som hade romersk medborgarrätt}} *bokmål: {{ö+|no|romer|m}} *engelska: {{ö+|en|Roman}} *franska: {{ö+|fr|Romain|m}}, {{ö+|fr|Romaine|f}} *italienska: {{ö+|it|romano|m}}, {{ö+|it|romana|f}} *spanska: {{ö+|es|romano|m}}, {{ö+|es|romana|f}} *tyska: {{ö+|de|Römer|m}}, {{ö|de|Römerin|f}} *älvdalska: {{ö|ovd|ruomer|m}} {{ö-botten}} {{ö-topp|person som är född och uppvuxen i staden Rom}} *bokmål: {{ö+|no|romer|m}} *engelska: {{ö+|en|Roman}} *franska: {{ö+|fr|Romain|m}}, {{ö+|fr|Romaine|f}} *italienska: {{ö+|it|romano|m}}, {{ö+|it|romana|f}} *spanska: {{ö+|es|romano|m}}, {{ö+|es|romana|f}} *tyska: {{ö+|de|Römer|m}}, {{ö|de|Römerin|f}} {{ö-botten}} ro797exp5001x0ohemd7rla3s5wggwa bowtie 0 169908 3703348 3537397 2022-08-19T09:31:28Z Andreasl01 37996 /* Engelska */ länk till engelskt avsnitt wikitext text/x-wiki ==Engelska== ===Substantiv=== {{en-subst}} '''[[bow]][[tie#Engelska|tie]]''' #{{tagg|kläder|språk=en}} [[fluga]] #:{{varianter|[[bow tie]]}} #:{{synonymer|(''brittisk slang'') [[dicky bow]]}} 2ud74e9wzv13dablmnc9obq24u6lul5 yacht 0 169948 3703259 3557527 2022-08-18T16:46:21Z Gabbe 1153 /* Engelska */ la till IPA: /jɒt/, /jɑːt/ wikitext text/x-wiki {{se även|Yacht}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} *{{uttal|sv|ipa=jåtˈ}} '''yacht''' #{{tagg|segling}} ''stavningsvariant av'' [[jakt]] ====Översättningar==== {{ö-se|jakt}} ==Engelska== ===Substantiv=== {{en-subst}} '''yacht''' *{{uttal|en|ipa=jɒt|region=Storbritannien}} *{{uttal|en|ipa=jɑːt|region=USA}} #{{tagg|kat=sjöfart|språk=en}} [[jakt]], [[#Svenska|yacht]] ===Verb=== {{en-verb}} '''yacht''' #[[segla]], [[kappsegla]] ==Franska== ===Substantiv=== {{fr-subst-m}} '''yacht''' *{{uttal|fr|ipa=jɔt}} #{{tagg|kat=sjöfart|språk=fr}} [[jakt]], [[yacht#Svenska|yacht]] b1w13ysbqe4afo6mzt21e91c7z08wz6 viol 0 187485 3703261 3626754 2022-08-18T16:58:00Z Andreasl01 37996 /* Svenska */ formatering wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Adjektiv=== {{adj|sv}} {{färg|#8B00FF}} '''viol''' #{{tagg|kat=färger|text=annat namn för}} [[violett]] ===Substantiv=== {{sv-subst-n-er}} '''viol''' #{{tagg|kat=växter}} någon av de mellan 400 - 500 växtarter i släktet [[violer]] ''([[Viola]])'', i familjen [[violväxter]] ''([[Violaceae]])''; exemplar av en sådan art #[[smak]] ursprungligen från sirap av socker och stötta kronblad av [[luktviol]], men som idag ofta utvinns av [[violrot]] som doftar likt viol, men som i själva verket är rötter från en sorts [[iris]] :{{avgränsare}} :{{sammansättningar|[[violpastill]], [[violrot]], [[violsirap]], [[violsmak]]}} ====Översättningar==== {{ö-topp|någon av de mellan 400 - 500 växtarter i släktet violer , i familjen violväxter }} *engelska: {{ö+|en|violet}} *finska: {{ö+|fi|orvokki}} *isländska: {{ö+|is|fjóla|f}} *spanska: {{ö+|es|violeta|f}} *turkiska: {{ö+|tr|menekşe}} *tyska: {{ö+|de|Veilchen|n}} {{ö-botten}} {{ö-topp|smak ursprungligen från sirap av socker och stötta kronblad av luktviol, men som idag ofta utvinns av violrot som doftar likt viol, men som i själva verket är rötter från en sorts iris}} *tyska: {{ö|de|Veilchengeschmack|m}} {{ö-botten}} ==Franska== ===Substantiv=== {{fr-subst-m}} '''viol''' {{m}} *{{uttal|fr|ipa=vjɔl}} #[[våldtäkt]] #:{{besläktade ord|[[violence]], [[violer]]}} ==Rumänska== ===Substantiv=== {{subst|ro}} '''viol''' #[[våldtäkt]] sxcb24gdvqre3o95t37z2fjbg3vuj17 kredit 0 287157 3703292 3454957 2022-08-18T21:39:10Z Skalman 414 fler definitioner, uttal wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-er|betydelser=1.}} *{{uttal|sv|enkel=kred'i:t|betydelser=1.}} *{{uttal|sv|enkel='kre:dit|betydelser=2.}} *{{uttal|sv|enkel='kredit|betydelser=3.}} '''kredit''' #{{tagg|ekonomi}} [[pengar]] som [[låna]]s av [[bank]]en mot [[betalning]] av [[räntor]] #:{{synonymer|[[lån]], [[penninglån]]}} #:{{sammansättningar|[[kreditgivare]], [[kreditgräns]], [[kreditinstitut]], [[kreditkort]], [[kredittagare]]}} #{{tagg|ekonomi}} {{oböjl}} [[inkomst]]er eller [[tillgodohavande]] till ett [[konto]] (i en sammanställning av inkomster och utgifter) #:{{antonymer|[[debet]]}} #:{{konstr|[[debet och kredit]]}} #{{tagg|vardagligt}} {{oböjl}} ''variant av'' [[kredd]] ====Översättningar==== {{ö-topp|pengar som lånas av banken mot betalning av räntor}} *finska: {{ö+|fi|luotto}} *franska: {{ö+|fr|crédit|m}} *ryska: {{ö+|ru|кредит|m}} *tyska: {{ö+|de|Kredit|m}} *ungerska: {{ö+|hu|hitel}} {{ö-botten}} {{ö-topp|inkomster eller tillgodohavande}} *engelska: {{ö+|en|credit}} {{ö-botten}} {{ö-se|kredd}} 2u7p2qd352m8kok4d27mpk2hgxsmk2s järnvägstrafik 0 388146 3703359 3426425 2022-08-19T09:58:51Z PeterFisk 21271 +no: [[jernbanetrafikk]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-oräkn}} '''[[järnväg]]s[[trafik]]''' #[[trafik]] som sker över [[spårväg]] ====Översättningar==== {{ö-topp|trafik som sker över spårväg}} *bokmål: {{ö|no|jernbanetrafikk|m}} *isländska: {{ö|is|einstefnuakstur|m}} *nederländska: {{ö|nl|treinverkeer}} *tyska: {{ö+|de|Zugverkehr|m}} {{ö-botten}} qorzfq6ioz04mv2b1v5hwizrkpd4rgp 3703363 3703359 2022-08-19T11:56:44Z Tapanpet 6520 +fi: [[rautatieliikenne]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-oräkn}} '''[[järnväg]]s[[trafik]]''' #[[trafik]] som sker över [[spårväg]] ====Översättningar==== {{ö-topp|trafik som sker över spårväg}} *bokmål: {{ö|no|jernbanetrafikk|m}} *finska: {{ö+|fi|rautatieliikenne}} *isländska: {{ö|is|einstefnuakstur|m}} *nederländska: {{ö|nl|treinverkeer}} *tyska: {{ö+|de|Zugverkehr|m}} {{ö-botten}} 5uw5ljizsrc9ctjfo7qswe1n0viwibd picador 0 412069 3703318 3298127 2022-08-19T07:20:48Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''picador''' #se ''[[pikador]]'' ====Översättningar==== {{ö-se|pikador}} ==Aragonska== ===Substantiv=== {{subst|an}} '''picador''' #[[skogshuggare]] ==Spanska== ===Substantiv=== {{es-subst-m-es}} '''picador''' {{m}} # [[pikador]] sxmhn7bxji2mxqcktpguu125pp6v7o5 radhus 0 521447 3703329 3226606 2022-08-19T07:33:59Z PeterFisk 21271 +no: [[rekkehus]] (assisterat) wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-t-0}} '''[[rad]][[hus]]''' #{{tagg|byggnadsteknik}} [[bostadshus]] som är [[sammanlänkad]]e i [[yttervägg]]arna med andra likadana bostadshus #:{{jämför|[[småhus]], [[kedjehus]], [[villa]], [[parhus]], [[fritidshus]]}} ====Översättningar==== {{ö-topp|bostadshus som är sammanlänkade i ytterväggarna med andra likadana bostadshus}} *bokmål: {{ö|no|rekkehus|n}} *danska: {{ö|da|rækkehus|n}} *nederländska: {{ö+|nl|rijtjeshuis}} *tyska: {{ö+|de|Reihenhaus|n}} {{ö-botten}} gfrsyscq00qsos4q6ibut4zxshtxb3y Användardiskussion:Christoffre 3 564330 3703296 3703134 2022-08-18T22:09:37Z Skalman 414 /* gravmonumentsindustrifabrikationsprodukt */ Svar wikitext text/x-wiki Hej och varmt välkommen till svenskspråkiga Wiktionary! Jag hoppas att du kommer trivas och vill stanna. Här är några sidor du kan ha nytta av: * [[Wiktionary:Välkommen|Välkommen]] - ''om hur Wiktionary funkar och vad du kan göra'' * [[Wiktionary:Om|Om Wiktionary]] - ''översiktligt om Wiktionary, lite historia och dess mål'' * [[Wiktionary:Stilguide#Definitionen|Stilguide: Definitionen]] - ''från stilguiden: tips på hur man skriver en bra definition'' Kolla gärna in hur andra uppslag ser ut (som [[bil]], [[harkrank]], [[kanske]], [[tävla]] och [[rot]]). Jag hoppas att du kommer tycka att det är roligt att redigera på Wiktionary. Glöm inte att signera dina inlägg på diskussionssidor med fyra tilde (<nowiki>~~~~</nowiki>); detta kommer automatiskt infoga ditt användarnamn och datumet. Om du behöver hjälp eller undrar över något är det bara att fråga mig på min diskussionssida, i [[Wiktionary:Bybrunnen|Bybrunnen]] eller på den här sidan. Som sagt, välkommen! [[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 10 mars 2016 kl. 03.55 (CET) == Ett par tips == Snyggt jobbat med [[strömavtagare]]! Jag vet att det är tusen saker att tänka på, men här är två som gör att man följer den existerande strukturen lite bättre (till nästa gång): *Uppslag ska normalt börja med liten bokstav *Om du anger översättningar, så ska dessa ligga under rubriken <code>====Översättningar====</code> Som alltid, fråga gärna om du funderar på något. [[Användare:Skalman|//Skal]] 19 december 2017 kl. 20.49 (CET) == Adjektivdefinitioner == Ang. [https://sv.wiktionary.org/w/index.php?title=oformlig&diff=3085116&oldid=3085115 min ändring] på [[oformlig]]. Adjektivdefinitioner oftast är antingen andra adjektiv, eller så börjar dom med "som" (eller i undantagsfall med "med", "utan", "i" etc - men dessa är vanligare för adverb). Det här tar lite tid att bli van vid, men det gör inte så mkt om det blir fel - nån annan kan ju fixa det efterhand. [[Användare:Skalman|//Skal]] 9 januari 2018 kl. 23.21 (CET) :...och, på samma tema, så fungerar [[brinna inne]] som ett verb, och bör därför ges en verb-definition! :) --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 12 januari 2018 kl. 19.53 (CET) ::Tack för hjälpen {{@|Andreas Rejbrand}} och {{@|Skalman}}, finns det någon lista man kan kolla på så att ni slipper rätta varenda redigering XD :: Dessutom, hur funkar ''<nowiki>{{sv-subst-n-er}}</nowiki>''? Vet inte vad den heter och jag hittar den inte i [[Wiktionary:Stilguide|stilguiden.]] --[[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 13 januari 2018 kl. 17.01 (CET) :::Det finns ingen bra beskrivning av alla sorts definitioner, men man kan börja på [[Wiktionary:Stilguide#Definitionen]]. Annars rekommenderar jag helt enkelt att titta på nåt liknande ord och försöka skapa en definition på samma form. :::Böjningsmallar såsom {{mall|sv-subst-n-er}} är frivilliga. Dom är ganska komplexa och nämns i [[Wiktionary:Stilguide#Grammatikmallar och böjningstabeller|stilguiden]]. Dom svenska mallarna hittar du på [[Wiktionary:Stilguide/Grammatik/Svenska]]; klicka på en mall för mer information om den ordklassen. Eftersom dom kan vara ganska krångliga, så är ett tips att antingen strunta i dom eller att även här titta på nåt ord som böjs på samma sätt och kopiera mallen. :::Jag tänker att du lär dig allteftersom, så det gör inget att några fel smyger sig in då och då. {{=)}} [[Användare:Skalman|//Skal]] 13 januari 2018 kl. 18.53 (CET) == Synonymer / etymologi == {{mall|synonymer}} och {{mall|etymologi}} (och andra liknande mallar) ska anges en nivå under definitionen. Se [https://sv.wiktionary.org/w/index.php?title=pain_riche&diff=3087714&oldid=3087702 min ändring]. <mark>#</mark>definition <mark>#:</mark>{{<nowiki/>synonymer|...}} <mark>#:</mark>{{<nowiki/>etymologi|...}} [[Användare:Skalman|//Skal]] 17 januari 2018 kl. 19.47 (CET) :...och jag som trodde att jag tänkt på allt denna gång --[[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 17 januari 2018 kl. 20.22 (CET) ::Nästan. {{=)}} [[Användare:Skalman|//Skal]] 17 januari 2018 kl. 21.07 (CET) :::[https://sv.wiktionary.org/w/index.php?diff=3090557&oldid=3090301&title=gatupratare] Ytterligare ett par detaljer: :::# Det blev fel böjningsmall (det är inte oräknebart - man kan säga "många gatupratare") :::# Mallar som {{mall|varianter}} och {{mall|synonymer}} ska anges en nivå under definitionen :::# Här är det en synonym, inte variant (från stilguiden: "varianter listar samma ord som skrivs på ett annorlunda sätt") :::Som jag sagt tidigare - det gör inget att det blir lite småfel. Det viktiga är definitionen! [[Användare:Skalman|//Skal]] 30 januari 2018 kl. 22.37 (CET) ::::Ahhh... Jag missförstod betydelsen av ''oräknebar''. Trodde att det gällde böjningen (en gatupratare, flera gatupratare'''ar'''). --[[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) == Länkar == [https://sv.wiktionary.org/w/index.php?title=gatum%C3%B6bel&diff=3089999&oldid=3089983] En liten detalj: länkar ska normalt gå till ordets grundform. [[Användare:Skalman|//Skal]] 28 januari 2018 kl. 16.04 (CET) == Exempelmeningar == [https://sv.wiktionary.org/w/index.php?title=kalenderm%C3%A5nad&type=revision&diff=3106172&oldid=3106095] Exempelmeningar indenteras med ett enstaka kolon (svensk översättning av mening på annat språk med två kolon), och normalt behövs inga citattecken till exempelmeningen. #<mark><nowiki>:''</nowiki></mark>För rätt till ersättning ska du ha arbetat minst 80 timmar per <nowiki>'''kalendermånad'''</nowiki>.<mark><nowiki>''</nowiki></mark> Som jag sagt tidigare: Bra jobbat! [[Användare:Skalman|//Skal]] 12 mars 2018 kl. 21.35 (CET) == Omdirigeringar == Du omdirigerade [[räkneskapsår]] till [[räkenskapsår]]. Det brukar vi bara göra med flerordsuppslag där det finns flera korrekta varianter, t.ex. [[surt sa räven]] &rarr; [[Surt, sa räven om rönnbären.]] När det handlar om stavfel eller liknande brukar vi istället använda {{mall|inget uppslag}} för att uppmärksamma användaren på att hen skrivit fel. Du kan se hur det blev på [[räkneskapsår]]. [[Användare:Skalman|//Skal]] 12 mars 2018 kl. 21.46 (CET) :{{@|Skalman}}, gör du något annat än att hålla koll på oss nybörjare som gör fel? XD :Tack för hjälpen i alla fall ;) --[[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 12 mars 2018 kl. 22.36 (CET) ::Jo, det har blivit mkt wiktionarykollande på sistone {{=)}}. Men det känns meningsfullt, för dina och andras bidrag gör ju ordboken mer komplett. [[Användare:Skalman|//Skal]] 12 mars 2018 kl. 22.43 (CET) == Ordklass == [https://sv.wiktionary.org/w/index.php?title=restnoterad&type=revision&diff=3260470&oldid=3260465] Du angav [[restnoterad]] (och [[restad]]) som substantiv, men det är väl snarare adjektiv. Vidare vill jag påminna om att {{mall|varianter}} anges med prefixet <code>#:</code>. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 21 januari 2019 kl. 23.49 (CET) == Formatering {wikipedia} och {media} == [https://sv.wiktionary.org/w/index.php?title=morrh%C3%A5r&type=revision&diff=3281104&oldid=3281098] Ett par små formateringsdetaljer: Flera {{mall|wikipedia}}-mallar anges med radbrytning mellan. {{mall|media}} stödjer flera bilder i samma anrop, och detta föredras där möjligt. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 19 mars 2019 kl. 21.41 (CET) == ananassmultron == Hej! Angående din redigering [https://sv.wiktionary.org/w/index.php?diff=3414228&oldid=3409304&title=jordgubbe&curid=2513], är det så att ''ananassmultron'' är en synonym till den ålderdomliga definitionen (def. 3) med betydelse ''parksmultron'' eller är det en ålderdomlig synonym till def. 1? --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 8 juli 2020 kl. 13.55 (CEST) :Ananassmultron är originalnamnet på dagens jordgubbar, ''Fragaria × ananassa'' (def 1 och 2). :Angående def 3; om någon sa "jordgubbe" på 1600-talet så menar de parksmultron, ''Fragaria moschata''. --[[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 8 juli 2020 kl. 22.52 (CEST) ::Tack, jag förtydligade det i artikeln. --[[Användare:Andreas Rejbrand|Andreas Rejbrand]] ([[Användardiskussion:Andreas Rejbrand|diskussion]]) 9 juli 2020 kl. 01.13 (CEST) == Hot joina == Hej! Tack för att du flyttade verbet till en fungerande verbform. Jag hittar dock knappt några belägg på att ordet ännu används. Är det verkligen en vedertagen term på svenska? [[Användare:Svenji|Svenji]] ([[Användardiskussion:Svenji|diskussion]]) 8 oktober 2021 kl. 12.34 (CEST) :Beror på hur du menar med vedertagen. Tror att det definitivt är mer talspråk än skriftspråk, på ett ganska slangigt ord dessutom. La in den enligt riktlinjen ''Var djärv'', klart medveten om att det fanns en risk att ordet kanske inte skulle nå hela vägen upp. [[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 8 oktober 2021 kl. 17.19 (CEST) == Verifiera ordet == Hej! Det verkar för mig som att ordet ''pallkarl'' endast figurerar i ordlistan du nämnde, eller av folk som letat upp det därur. Jag skulle gärna se att du letade upp ett skriftligt citat där ordet faktiskt figurerar, då det ser något uppdiktat ut (för underhållning) i originalkällan. [[Användare:Svenji|Svenji]] ([[Användardiskussion:Svenji|diskussion]]) 8 december 2021 kl. 14.54 (CET) :<s>Citatet finns i {{plainlink|https://libris.kb.se/bib/8588552|denna bok}}, dock lär det dröja lite då boken är svår att få tag i [[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 10 december 2021 kl. 22.16 (CET)</s> :Stryk det förra... Läste nu vad du faktiskt skrev... Det lär blir svårt att hitta via manuell sökning. Särskilt då man inte gärna använda bygdemål (särskilt fula) i tryckta verk. Dock tror jag att detta är ett riktigt ord som ärvts muntligt (men vet inte om det är skäl nog här). Radera? [[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 10 december 2021 kl. 22.30 (CET) == [[gravmonumentsindustrifabrikationsprodukt]] == Det här ordet är väl knappast etablerat? Har du flera källor som använder ordet? [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 17 augusti 2022 kl. 17.22 (CEST) :Och bara för att tydliggöra: i citatet du angav ''diskuteras'' ordet, men det används bara som ett exempel på något konstigt som sagts. Se gärna [[Wiktionary:Stilguide/Vilka ord ska tas med#Att belägga uttryck]]. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 17 augusti 2022 kl. 18.09 (CEST) ::Jag är medveten om kraven, men inte exakt var gränsen går. Eftersom det är från en dagstidning har vi en källa. Och eftersom de beskriver användningen av ordet vet vi att det har använts. Huruvida detta är tillräckligt eller otillräckligt visste jag inte, så jag la in det på försök. Jag har lite som hobby att försöka hitta svenskans (ej påhittade) längsta ord, så lite synd tycker jag om denna 40 bokstäver mastodont försvinner ...men jag vet att det måste finnas en hög lägsta-nivå och att reglerna finns av en anledning --[[Användare:Christoffre|Christoffre]] ([[Användardiskussion:Christoffre|diskussion]]) 18 augusti 2022 kl. 01.13 (CEST) :::Jag har tagit bort sidan nu. Lycka till med att hitta andra långa ord! [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 19 augusti 2022 kl. 00.09 (CEST) cxz4mn3k1pxbxc52llezf0qk6jpwz4w helpension 0 611984 3703327 3461385 2022-08-19T07:31:21Z PeterFisk 21271 +no: [[fullpensjon]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-er|fog=e}} '''helpension''' #{{tagg|turism}} [[övernattning]] på [[hotell]] eller [[pensionat]] med alla [[måltid]]er per dag #:{{jämför|[[halvpension]]}} ====Översättningar==== {{ö-topp|övernattning på hotell eller pensionat med alla måltider per dag}} *bokmål: {{ö|no|fullpensjon|m}} *tyska: {{ö+|de|Vollpension|f}} {{ö-botten}} 7zxeglnne6q653yhqln17tb8594fpna 3703328 3703327 2022-08-19T07:32:26Z PeterFisk 21271 +fr: [[pension complète]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-er|fog=e}} '''helpension''' #{{tagg|turism}} [[övernattning]] på [[hotell]] eller [[pensionat]] med alla [[måltid]]er per dag #:{{jämför|[[halvpension]]}} ====Översättningar==== {{ö-topp|övernattning på hotell eller pensionat med alla måltider per dag}} *bokmål: {{ö|no|fullpensjon|m}} *franska: {{ö|fr|pension complète}} *tyska: {{ö+|de|Vollpension|f}} {{ö-botten}} pv45mc672oh77nl7olvg8czsc11e1xs klädskåp 0 735068 3703337 3337236 2022-08-19T08:14:36Z PeterFisk 21271 +no: [[klesskap]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0}} '''[[kläder|kläd]][[skåp]]''' #skåp för [[förvaring]] av [[klädsel]] ====Översättningar==== {{ö-topp|skåp för förvaring av klädsel}} *bokmål: {{ö+|no|klesskap|n}} *engelska: {{ö+|en|wardrobe}} *isländska: {{ö+|is|fataskápur|m}} *nederländska: {{ö+|nl|kleerkast|f}}, {{ö+|nl|kledingkast|f}} *tyska: {{ö+|de|Kleiderschrank|m}} {{ö-botten}} i6t0dv0eqt2lv7k9th2bq8pi98v3vd1 postkort 0 754810 3703316 3302988 2022-08-19T07:18:22Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0}} '''[[post]][[kort]]''' {{n}} #{{tagg|kat=postväsen}}[[vykort]] ====Översättningar==== {{ö-se|vykort}} ==Bokmål== ===Substantiv=== {{no-subst-n-0}} '''[[post]][[kort]]''' {{n}} #{{tagg|kat=postväsen|språk=no}}[[#Svenska|postkort]], [[vykort]] (med påtryckt [[frimärke]]) ==Danska== ===Substantiv=== {{da-subst-t-0}} '''[[post]][[kort]]''' {{n}} #{{tagg|kat=postväsen|språk=da}}[[#Svenska|postkort]], [[vykort]] ==Nynorska== ===Substantiv=== {{nn-subst-n}} '''[[post]][[kort]]''' {{n}} #{{tagg|kat=postväsen|språk=nn}}[[#Svenska|postkort]], [[vykort]] (med påtryckt [[frimärke]]) b3vwjjc0g4rq56cu05u9a5uperxoi4b skolväsen 0 812207 3703330 3379509 2022-08-19T07:34:18Z PeterFisk 21271 +no: [[skolevesen]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0|2=skolväsendet|4=skolväsendena}} '''[[skola|skol]][[-väsen|väsen]]''' # {{tagg|utbildningsväsende|text=samlingsbegrepp för}} alla arter av [[undervisning]] på [[oakademisk]] [[nivå]] #:{{varianter|skolväsende}} ====Översättningar==== {{ö-topp|alla arter av undervisning på oakademisk nivå}} *bokmål: {{ö|no|skolevesen|n}} *tyska: {{ö+|de|Schulwesen|n}} {{ö-botten}} treutc9xggqqmxcc8t4bb6bujb45387 hør 0 821074 3703352 3403132 2022-08-19T09:41:04Z LA2 544 /* Danska */ wikitext text/x-wiki ==Bokmål== ===Verb=== '''hør''' #{{böjning|no|verb|høre}} ==Danska== ===Substantiv=== {{da-subst-n-oräkn|2=hørren}} '''hør''' {{u}} #{{tagg|växter|språk=da}} [[lin]] #:''Når hørren er rusket på marken bereder vi den, knevler, rødner, bryder, skætter, hegler og spinder.'' #::''När linet är ryckt på marken bereder vi det, repar, rötar, bråkar, skäktar, häcklar och spinner.'' #:{{sammansättningar|[[hørfrø]], [[hørgarn]], [[hørgul]], [[hørjakke]], [[hørkjole]], [[hørlærred]], [[hørtave]], [[hørtråd]]}} #:{{jämför|[[linned]], [[linolie]], [[lærred]]}} ===Verb=== '''hør''' #{{böjning|da|verb|høre}} 2t2pb1om4dkzltoloc84vrvn4xj3kty 3703353 3703352 2022-08-19T09:42:16Z LA2 544 /* Danska */ wikitext text/x-wiki ==Bokmål== ===Verb=== '''hør''' #{{böjning|no|verb|høre}} ==Danska== ===Substantiv=== {{da-subst-n-oräkn|2=hørren}} '''hør''' {{u}} #{{tagg|växter|språk=da}} [[lin]] #:''Når '''hørren''' er rusket på marken bereder vi den, knevler, rødner, bryder, skætter, hegler og spinder.'' #::''När '''linet''' är ryckt ur marken bereder vi det, repar, rötar, bråkar, skäktar, häcklar och spinner.'' #:{{sammansättningar|[[hørfrø]], [[hørgarn]], [[hørgul]], [[hørjakke]], [[hørkjole]], [[hørlærred]], [[hørtave]], [[hørtråd]]}} #:{{jämför|[[linned]], [[linolie]], [[lærred]]}} ===Verb=== '''hør''' #{{böjning|da|verb|høre}} pbp6sasgamkpaqea14q67cfhego6uuh bärighet 0 828095 3703240 3700785 2022-08-18T15:57:11Z 82.196.99.214 /* Substantiv */Rättade till stavfel wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[bära|bär]]ig[[-het|het]]''' # {{tagg|väg- och vattenbyggnad|transport|järnväg}} förmöga hos en [[väg]] eller ett [[järnvägsspår]] <ref>https://web.archive.org/web/20120304041117/http://www.inlandsbanan.se/core/files/utvecklingsplan_ibab.pdf</ref> att bära tunga [[fordon]] ====Översättningar==== {{ö-topp|förmåga hos en väg eller ett järnvägsspår [1] att bära tunga fordon}} *bokmål: {{ö|no|bæreevne|m}} *tyska: {{ö|de|Tragfähigkeit|f}} {{ö-botten}} ==Källor== <references /> 2hpv8xb49ulrlddbro042fkk24bx2i8 3703241 3703240 2022-08-18T15:57:46Z 82.196.99.214 /* Substantiv */Rättade stavfel wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[bära|bär]]ig[[-het|het]]''' # {{tagg|väg- och vattenbyggnad|transport|järnväg}} förmåga hos en [[väg]] eller ett [[järnvägsspår]] <ref>https://web.archive.org/web/20120304041117/http://www.inlandsbanan.se/core/files/utvecklingsplan_ibab.pdf</ref> att bära tunga [[fordon]] ====Översättningar==== {{ö-topp|förmåga hos en väg eller ett järnvägsspår [1] att bära tunga fordon}} *bokmål: {{ö|no|bæreevne|m}} *tyska: {{ö|de|Tragfähigkeit|f}} {{ö-botten}} ==Källor== <references /> 8symtsgnkefipz3iomuhoa8eb91j1ho nagelsax 0 834930 3703314 3670236 2022-08-19T07:17:02Z 2A01:B740:1F:2030:49D3:34D:D129:481E +fi: [[kynsisakset]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[nagel]][[sax]]''' #sax för [[avklippning]] av [[nagel|naglar]](nas framkant) ====Översättningar==== {{ö-topp|sax för avklippning av naglar}} *finska: {{ö+|fi|kynsisakset}} *tyska: {{ö+|de|Nagelschere|f}} {{ö-botten}} el4l841wcg2lzshp0mnj5wdj1p3mtq9 nyckelvittne 0 854874 3703357 3469942 2022-08-19T09:56:52Z PeterFisk 21271 +no: [[nøkkelvitne]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-n}} '''[[nyckel]][[vittne]]''' #[[avgörande]] [[vittne]]; vittne med mycket stor betydelse i en [[rättegång]] eller liknande ====Översättningar==== {{ö-topp|avgörande vittne}} *bokmål: {{ö|no|nøkkelvitne|n}} *engelska: {{ö|en|key witness}} *finska: {{ö|fi|avaintodistaja}} {{ö-botten}} oh7ws2cxlnerael6xso03xx1cfmj07e 3703364 3703357 2022-08-19T11:57:00Z Tapanpet 6520 +fi: [[avaintodistaja]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-n}} '''[[nyckel]][[vittne]]''' #[[avgörande]] [[vittne]]; vittne med mycket stor betydelse i en [[rättegång]] eller liknande ====Översättningar==== {{ö-topp|avgörande vittne}} *bokmål: {{ö|no|nøkkelvitne|n}} *engelska: {{ö|en|key witness}} *finska: {{ö|fi|avaintodistaja}}, {{ö|fi|avaintodistaja}} {{ö-botten}} bcjmusa1mfldnjrgx2036uq9bnxuuzm järnvägsövergång 0 861184 3703317 3523394 2022-08-19T07:20:03Z Andreasl01 37996 /* Översättningar */ ö-topp|se → ö-se wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[järnväg]]s[[övergång]]''' #{{tagg|kat=transport|kat2=järnväg}} plats där en väg korsar en [[järnväg]] (i samma plan) ====Översättningar==== {{ö-se|järnvägskorsning}} jpeyspsexmtq8g8betepck94p6p20wh pyssel 0 873964 3703226 3703054 2022-08-18T13:32:33Z Andreasl01 37996 /* Svenska */ +sammansättningar, +böjningstabell wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0|rot=pyssl}} '''pyssel''' {{n}} #lekfullt smågöra, exempelvis pussel och korsord #:{{besläktade ord|[[pyssla]]}} #:{{sammansättningar|[[julpyssel]], [[pysselbok]], [[pysselgrupp]], [[pysselhörna]], [[påskpyssel]]}} qnnrx38gb9cdjtspbcweui81a7tq1nx Användare:Christoffre 2 903470 3703298 3651475 2022-08-18T22:22:58Z Christoffre 6867 wikitext text/x-wiki {{babel|sv|en-3|da-0|no-0}} ==Att göra== * [[akra ren]] – Kolla datum på [https://litteraturbanken.se/f%C3%B6rfattare/M%C3%A5nssonP/titlar/PederM%C3%A5nssonsBondakonst/sida/30/faksimil?traff=w29_212&traffslut=w29_213&s_query=Akra%20ren&s_from=0&s_to=29&s_text_filter=%7B%7D&s_word_form_only=true&s_lbworkid=lb8206747&hit_index=0 citat] och lägg till epf204f7ndbvn1xqaax35wfycgbgc2c Kategori:Japanska/Uppslag med 石 14 927878 3703218 3700277 2022-08-18T12:55:56Z Kusurija 8159 Kategori wikitext text/x-wiki [[Kategori:Japanska/Alla uppslag|石]] [[Kategori:CJK/Uppslag med 石|Japanska]] aqqo6vke1atvrxt7djh9i75x96j03z6 Kategori:Japanska/Uppslag med 石 läst som セキ (漢音) 14 927886 3703221 3700290 2022-08-18T13:18:40Z Kusurija 8159 Kategori wikitext text/x-wiki [[Kategori:Japanska/Uppslag med 石|セキ]] [[Kategori:Japanska/Uppslag med kanji läst som セキ (漢音)|石]] [[Kategori:Japanska/Uppslag kanji läsning|セキ]] noh8wu89hl96zy889x6u9mvpit5oetp Kategori:Japanska/Uppslag med 石 läst som いし 14 927893 3703216 3700305 2022-08-18T12:44:45Z Kusurija 8159 Kategori wikitext text/x-wiki [[Kategori:Japanska/Uppslag med 石|いし]] [[Kategori:Japanska/Uppslag med kanji läst som いし|石]] [[Kategori:Japanska/Uppslag kanji läsning|いし]] khp8mkwcyor461djvzwx2309l8y8b0v Modul:translit/ru 828 928537 3703355 3703163 2022-08-19T09:48:45Z Dodde 309 initialiserar tabellen "latinska" med värden direkt för att inte behöva scrolla så mycket för att komma ner till övrig kod Scribunto text/plain -- Denna modul används för att transkribera ryska. -- -- För att transkribera bulgariska, ukrainska och -- vitryska/belarusiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- Modul:translit/be -- Modul:translit/bg -- Modul:translit/uk -- -- Systemet för transkribering följer det som anges i -- "Svenska skrivregler" (2017), fjärde upplagan, red. Ola Karlsson -- En kopia av avsnittet finns i skrivande stund här: -- https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf -- -- Notera att detta sätt är specifikt för att transkribera -- till svenska. Transkribering till andra språk sker enligt -- andra mönster. Exempelvis ska Горбачёв bli just Gorbatjóv. -- På andra språk skulle det kunna bli Gorbachev, Gorbatschow, -- Gorbatchev, Gorbatsjov, osv. -- -- En vanlig fallgrop är att "ё" bara transkriberas korrekt när -- de två punkterna är med. På ryska utelämnas de ofta när sammanhanget gör det -- uppenbart. Alltså är det vanligt att "Пётр" istället stavas "Пeтр", vilket -- denna modul följaktligen tolkar som "Petr" istället för "Pjotr". -- -- Denna modul är gjord för att returnera latinska tecken med accenterna -- utskrivna. Därför blir Горбачёв till Gorbatjóv, inte Gorbatjov. -- -- TODO: Placera i en dold kategori för att markera de ord som inte har -- tillräckligt många accenttecken -- -- Denna modul används av följande mall: -- {{tr}} -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = { ["А"]="A", ["а"]="a", ["Б"]="B", ["б"]="b", ["В"]="V", ["в"]="v", ["Г"]="G", ["г"]="g", ["Д"]="D", ["д"]="d", ["Е"]="E", ["е"]="e", ["Ё"]="Jo", ["ё"]="jo", ["Ж"]="Zj", ["ж"]="zj", ["З"]="Z", ["з"]="z", ["И"]="I", ["и"]="i", ["Й"]="J", ["й"]="j", ["К"]="K", ["к"]="k", ["Л"]="L", ["л"]="l", ["М"]="M", ["м"]="m", ["Н"]="N", ["н"]="n", ["О"]="O", ["о"]="o", ["П"]="P", ["п"]="p", ["Р"]="R", ["р"]="r", ["С"]="S", ["с"]="s", ["Т"]="T", ["т"]="t", ["У"]="U", ["у"]="u", ["Ф"]="F", ["ф"]="f", ["Х"]="Ch", ["х"]="ch", ["Ц"]="Ts", ["ц"]="ts", ["Ч"]="Tj", ["ч"]="tj", ["Ш"]="Sj", ["ш"]="sj", ["Щ"]="Sjtj", ["щ"]="sjtj", ["Ъ"]="", ["ъ"]="", ["Ы"]="Y", ["ы"]="y", ["Ь"]="J", ["ь"]="j", ["Э"]="E", ["э"]="e", ["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja" } -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för ryska function transkribera_ru(text) -- Två köer: en för kyrilliska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-kyrilliskt tecken enqueue(utdata, x) elseif ((u == -1) and (string.match(x,"Е"))) then -- initialt E enqueue(utdata,"Je") elseif((u == -1) and (string.match(x,"е"))) then -- initialt e enqueue(utdata,"je") elseif ((string.match(u," ")) and (string.match(x,"Е"))) then -- initialt E enqueue(utdata,"Je") elseif((string.match(u," ")) and (string.match(x,"е"))) then -- initialt e enqueue(utdata,"je") elseif (string.match(x,"ь")) then if (string.match(y,"и")) then enqueue(utdata, "j") end elseif ((string.match(x,"с")) or (string.match(x,"т")) or (string.match(x,"з")) or (string.match(x,"С")) or (string.match(x,"Т")) or (string.match(x,"З"))) then if(string.match(y,"ь")) then if(string.match(z,"е")) then enqueue(utdata,latinska[x]) enqueue(utdata,"ie") dequeue(indata) dequeue(indata) elseif(string.match(z,"ё")) then enqueue(utdata,latinska[x]) enqueue(utdata,"io") dequeue(indata) dequeue(indata) elseif(string.match(z,"ю")) then enqueue(utdata,latinska[x]) enqueue(utdata,"iu") dequeue(indata) dequeue(indata) elseif(string.match(z,"я")) then enqueue(utdata,latinska[x]) enqueue(utdata,"ia") dequeue(indata) dequeue(indata) else enqueue(utdata,latinska[x]) end elseif(string.match(y,"ё")) then enqueue(utdata,latinska[x]) enqueue(utdata,"io") dequeue(indata) elseif(string.match(y,"ю")) then enqueue(utdata,latinska[x]) enqueue(utdata,"iu") dequeue(indata) elseif(string.match(y,"я")) then enqueue(utdata,latinska[x]) enqueue(utdata,"ia") dequeue(indata) else enqueue(utdata, latinska[x]) end elseif((string.match(x,"ш")) or (string.match(x,"щ")) or (string.match(x,"ч")) or (string.match(x,"Ш")) or (string.match(x,"Щ")) or (string.match(x,"Ч"))) then if (y == nil) then enqueue(utdata,latinska[x]) elseif (string.match(y,"ё")) then enqueue(utdata,latinska[x]) enqueue(utdata,"o") dequeue(indata) else enqueue(utdata,latinska[x]) end elseif(string.match(x,"е")) then if((string.match(u,"a")) or (string.match(u,"e")) or (string.match(u,"o")) or (string.match(u,"u")) or (string.match(u,"i"))) then enqueue(utdata,"je") else enqueue(utdata,"e") end else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) local y = peekonce(utdata) if(string.match(y,"́")) then if (string.match(x,"a")) then x = string.gsub(x,"a","á") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"e")) then x = string.gsub(x,"e","é") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"o")) then x = string.gsub(x,"o","ó") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"u")) then x = string.gsub(x,"u","ú") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"i")) then x = string.gsub(x,"i","í") table.insert(returndata, x) dequeue(utdata) else table.insert(returndata,x) table.insert(returndata,y) dequeue(utdata) end else table.insert(returndata,x) end until (utdata.first > utdata.last) return returndata end -- följande funktion hanterar det faktum att ë alltid -- i praktiken innebär det att den gör om ë till ё́ -- för de ord som har fler än en stavelse function accentuera_jo ( text ) vokaler = { ["А"] = true, ["а"] = true, ["Е"] = true, ["е"] = true, ["Ё"] = true, ["ё"] = true, ["И"] = true, ["и"] = true, ["О"] = true, ["о"] = true, ["У"] = true, ["у"] = true, ["Э"] = true, ["э"] = true, ["Ю"] = true, ["ю"] = true, ["Ы"] = true, ["ы"] = true, ["Я"] = true, ["я"] = true, } skiljetecken = { [" "] = true, [";"] = true, [","] = true, ["."] = true, ["!"] = true, ["?"] = true, ["("] = true, [")"] = true, ["-"] = true, } -- Börja med att förvandla eventuella ё́ tillbaka till ё -- (annars blir det kaka på kaka) text = string.gsub(text,"ё́","ё") -- Följande rader sätter automatiskt accent på ё i flerstaviga ord orden = {} iter = 1; for c in string.gmatch(text, ".[\128-\191]*") do if ((latinska[c] ~= nil) or (string.match(c,"́"))) then if (orden[iter] == nil) then orden[iter] = c else orden[iter] = orden[iter]..c end elseif (skiljetecken[c]) then iter = iter+1 orden[iter] = c else -- annars är det något icke-ryskt tecken, som i "IP-адрес" if (orden[iter] == nil) then orden[iter] = c else orden[iter] = orden[iter]..c end end end for key, value in pairs(orden) do antal_vokaler = 0; for c in string.gmatch(value, ".[\128-\191]*") do if(vokaler[c]) then antal_vokaler = antal_vokaler +1 end end if (antal_vokaler>1) then orden[key] = string.gsub(value,"ё","ё́") end end return table.concat(orden,"") end --[[ function export.transkribera( argument ) local text = argument.args["text"] -- först en funktion som gör att till exempel -- Горбачёв blir Gorbatjóv (inte Gorbatjov) text = accentuera_jo (text) outputdata = transkribera_ru(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument -- först en funktion som gör att till exempel -- Горбачёв blir Gorbatjóv (inte Gorbatjov) text = accentuera_jo (text) outputdata = transkribera_ru(text) outputtext = table.concat(outputdata,"") return outputtext end return export 9sh1ea3evsq6wshcwpztartv5sxl82a 3703356 3703355 2022-08-19T09:54:38Z Dodde 309 latinska -> latin -> latin_by_cyrillic, mer utförligt namn på tabellen enligt "value by key" Scribunto text/plain -- Denna modul används för att transkribera ryska. -- -- För att transkribera bulgariska, ukrainska och -- vitryska/belarusiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- Modul:translit/be -- Modul:translit/bg -- Modul:translit/uk -- -- Systemet för transkribering följer det som anges i -- "Svenska skrivregler" (2017), fjärde upplagan, red. Ola Karlsson -- En kopia av avsnittet finns i skrivande stund här: -- https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf -- -- Notera att detta sätt är specifikt för att transkribera -- till svenska. Transkribering till andra språk sker enligt -- andra mönster. Exempelvis ska Горбачёв bli just Gorbatjóv. -- På andra språk skulle det kunna bli Gorbachev, Gorbatschow, -- Gorbatchev, Gorbatsjov, osv. -- -- En vanlig fallgrop är att "ё" bara transkriberas korrekt när -- de två punkterna är med. På ryska utelämnas de ofta när sammanhanget gör det -- uppenbart. Alltså är det vanligt att "Пётр" istället stavas "Пeтр", vilket -- denna modul följaktligen tolkar som "Petr" istället för "Pjotr". -- -- Denna modul är gjord för att returnera latinska tecken med accenterna -- utskrivna. Därför blir Горбачёв till Gorbatjóv, inte Gorbatjov. -- -- TODO: Placera i en dold kategori för att markera de ord som inte har -- tillräckligt många accenttecken -- -- Denna modul används av följande mall: -- {{tr}} -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latin_by_cyrillic = { ["А"]="A", ["а"]="a", ["Б"]="B", ["б"]="b", ["В"]="V", ["в"]="v", ["Г"]="G", ["г"]="g", ["Д"]="D", ["д"]="d", ["Е"]="E", ["е"]="e", ["Ё"]="Jo", ["ё"]="jo", ["Ж"]="Zj", ["ж"]="zj", ["З"]="Z", ["з"]="z", ["И"]="I", ["и"]="i", ["Й"]="J", ["й"]="j", ["К"]="K", ["к"]="k", ["Л"]="L", ["л"]="l", ["М"]="M", ["м"]="m", ["Н"]="N", ["н"]="n", ["О"]="O", ["о"]="o", ["П"]="P", ["п"]="p", ["Р"]="R", ["р"]="r", ["С"]="S", ["с"]="s", ["Т"]="T", ["т"]="t", ["У"]="U", ["у"]="u", ["Ф"]="F", ["ф"]="f", ["Х"]="Ch", ["х"]="ch", ["Ц"]="Ts", ["ц"]="ts", ["Ч"]="Tj", ["ч"]="tj", ["Ш"]="Sj", ["ш"]="sj", ["Щ"]="Sjtj", ["щ"]="sjtj", ["Ъ"]="", ["ъ"]="", ["Ы"]="Y", ["ы"]="y", ["Ь"]="J", ["ь"]="j", ["Э"]="E", ["э"]="e", ["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja" } -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för ryska function transkribera_ru(text) -- Två köer: en för kyrilliska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latin_by_cyrillic[x] == nil) then -- icke-kyrilliskt tecken enqueue(utdata, x) elseif ((u == -1) and (string.match(x,"Е"))) then -- initialt E enqueue(utdata,"Je") elseif((u == -1) and (string.match(x,"е"))) then -- initialt e enqueue(utdata,"je") elseif ((string.match(u," ")) and (string.match(x,"Е"))) then -- initialt E enqueue(utdata,"Je") elseif((string.match(u," ")) and (string.match(x,"е"))) then -- initialt e enqueue(utdata,"je") elseif (string.match(x,"ь")) then if (string.match(y,"и")) then enqueue(utdata, "j") end elseif ((string.match(x,"с")) or (string.match(x,"т")) or (string.match(x,"з")) or (string.match(x,"С")) or (string.match(x,"Т")) or (string.match(x,"З"))) then if(string.match(y,"ь")) then if(string.match(z,"е")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"ie") dequeue(indata) dequeue(indata) elseif(string.match(z,"ё")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"io") dequeue(indata) dequeue(indata) elseif(string.match(z,"ю")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"iu") dequeue(indata) dequeue(indata) elseif(string.match(z,"я")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"ia") dequeue(indata) dequeue(indata) else enqueue(utdata,latin_by_cyrillic[x]) end elseif(string.match(y,"ё")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"io") dequeue(indata) elseif(string.match(y,"ю")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"iu") dequeue(indata) elseif(string.match(y,"я")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"ia") dequeue(indata) else enqueue(utdata, latin_by_cyrillic[x]) end elseif((string.match(x,"ш")) or (string.match(x,"щ")) or (string.match(x,"ч")) or (string.match(x,"Ш")) or (string.match(x,"Щ")) or (string.match(x,"Ч"))) then if (y == nil) then enqueue(utdata,latin_by_cyrillic[x]) elseif (string.match(y,"ё")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"o") dequeue(indata) else enqueue(utdata,latin_by_cyrillic[x]) end elseif(string.match(x,"е")) then if((string.match(u,"a")) or (string.match(u,"e")) or (string.match(u,"o")) or (string.match(u,"u")) or (string.match(u,"i"))) then enqueue(utdata,"je") else enqueue(utdata,"e") end else enqueue(utdata, latin_by_cyrillic[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) local y = peekonce(utdata) if(string.match(y,"́")) then if (string.match(x,"a")) then x = string.gsub(x,"a","á") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"e")) then x = string.gsub(x,"e","é") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"o")) then x = string.gsub(x,"o","ó") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"u")) then x = string.gsub(x,"u","ú") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"i")) then x = string.gsub(x,"i","í") table.insert(returndata, x) dequeue(utdata) else table.insert(returndata,x) table.insert(returndata,y) dequeue(utdata) end else table.insert(returndata,x) end until (utdata.first > utdata.last) return returndata end -- följande funktion hanterar det faktum att ë alltid -- i praktiken innebär det att den gör om ë till ё́ -- för de ord som har fler än en stavelse function accentuera_jo ( text ) vokaler = { ["А"] = true, ["а"] = true, ["Е"] = true, ["е"] = true, ["Ё"] = true, ["ё"] = true, ["И"] = true, ["и"] = true, ["О"] = true, ["о"] = true, ["У"] = true, ["у"] = true, ["Э"] = true, ["э"] = true, ["Ю"] = true, ["ю"] = true, ["Ы"] = true, ["ы"] = true, ["Я"] = true, ["я"] = true, } skiljetecken = { [" "] = true, [";"] = true, [","] = true, ["."] = true, ["!"] = true, ["?"] = true, ["("] = true, [")"] = true, ["-"] = true, } -- Börja med att förvandla eventuella ё́ tillbaka till ё -- (annars blir det kaka på kaka) text = string.gsub(text,"ё́","ё") -- Följande rader sätter automatiskt accent på ё i flerstaviga ord orden = {} iter = 1; for c in string.gmatch(text, ".[\128-\191]*") do if ((latin_by_cyrillic[c] ~= nil) or (string.match(c,"́"))) then if (orden[iter] == nil) then orden[iter] = c else orden[iter] = orden[iter]..c end elseif (skiljetecken[c]) then iter = iter+1 orden[iter] = c else -- annars är det något icke-ryskt tecken, som i "IP-адрес" if (orden[iter] == nil) then orden[iter] = c else orden[iter] = orden[iter]..c end end end for key, value in pairs(orden) do antal_vokaler = 0; for c in string.gmatch(value, ".[\128-\191]*") do if(vokaler[c]) then antal_vokaler = antal_vokaler +1 end end if (antal_vokaler>1) then orden[key] = string.gsub(value,"ё","ё́") end end return table.concat(orden,"") end --[[ function export.transkribera( argument ) local text = argument.args["text"] -- först en funktion som gör att till exempel -- Горбачёв blir Gorbatjóv (inte Gorbatjov) text = accentuera_jo (text) outputdata = transkribera_ru(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument -- först en funktion som gör att till exempel -- Горбачёв blir Gorbatjóv (inte Gorbatjov) text = accentuera_jo (text) outputdata = transkribera_ru(text) outputtext = table.concat(outputdata,"") return outputtext end return export ipmpx404ya9f9pgcvo8q7bnbl0lf2s3 3703358 3703356 2022-08-19T09:57:41Z Dodde 309 funktioner som bara används inuti en modul ska deklareras "local", även variabler ska vara "local" Scribunto text/plain -- Denna modul används för att transkribera ryska. -- -- För att transkribera bulgariska, ukrainska och -- vitryska/belarusiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- Modul:translit/be -- Modul:translit/bg -- Modul:translit/uk -- -- Systemet för transkribering följer det som anges i -- "Svenska skrivregler" (2017), fjärde upplagan, red. Ola Karlsson -- En kopia av avsnittet finns i skrivande stund här: -- https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf -- -- Notera att detta sätt är specifikt för att transkribera -- till svenska. Transkribering till andra språk sker enligt -- andra mönster. Exempelvis ska Горбачёв bli just Gorbatjóv. -- På andra språk skulle det kunna bli Gorbachev, Gorbatschow, -- Gorbatchev, Gorbatsjov, osv. -- -- En vanlig fallgrop är att "ё" bara transkriberas korrekt när -- de två punkterna är med. På ryska utelämnas de ofta när sammanhanget gör det -- uppenbart. Alltså är det vanligt att "Пётр" istället stavas "Пeтр", vilket -- denna modul följaktligen tolkar som "Petr" istället för "Pjotr". -- -- Denna modul är gjord för att returnera latinska tecken med accenterna -- utskrivna. Därför blir Горбачёв till Gorbatjóv, inte Gorbatjov. -- -- TODO: Placera i en dold kategori för att markera de ord som inte har -- tillräckligt många accenttecken -- -- Denna modul används av följande mall: -- {{tr}} -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} local latin_by_cyrillic = { ["А"]="A", ["а"]="a", ["Б"]="B", ["б"]="b", ["В"]="V", ["в"]="v", ["Г"]="G", ["г"]="g", ["Д"]="D", ["д"]="d", ["Е"]="E", ["е"]="e", ["Ё"]="Jo", ["ё"]="jo", ["Ж"]="Zj", ["ж"]="zj", ["З"]="Z", ["з"]="z", ["И"]="I", ["и"]="i", ["Й"]="J", ["й"]="j", ["К"]="K", ["к"]="k", ["Л"]="L", ["л"]="l", ["М"]="M", ["м"]="m", ["Н"]="N", ["н"]="n", ["О"]="O", ["о"]="o", ["П"]="P", ["п"]="p", ["Р"]="R", ["р"]="r", ["С"]="S", ["с"]="s", ["Т"]="T", ["т"]="t", ["У"]="U", ["у"]="u", ["Ф"]="F", ["ф"]="f", ["Х"]="Ch", ["х"]="ch", ["Ц"]="Ts", ["ц"]="ts", ["Ч"]="Tj", ["ч"]="tj", ["Ш"]="Sj", ["ш"]="sj", ["Щ"]="Sjtj", ["щ"]="sjtj", ["Ъ"]="", ["ъ"]="", ["Ы"]="Y", ["ы"]="y", ["Ь"]="J", ["ь"]="j", ["Э"]="E", ["э"]="e", ["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja" } -- Fem köfunktioner local function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end local function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end local function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end local function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end local function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för ryska local function transkribera_ru(text) -- Två köer: en för kyrilliska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latin_by_cyrillic[x] == nil) then -- icke-kyrilliskt tecken enqueue(utdata, x) elseif ((u == -1) and (string.match(x,"Е"))) then -- initialt E enqueue(utdata,"Je") elseif((u == -1) and (string.match(x,"е"))) then -- initialt e enqueue(utdata,"je") elseif ((string.match(u," ")) and (string.match(x,"Е"))) then -- initialt E enqueue(utdata,"Je") elseif((string.match(u," ")) and (string.match(x,"е"))) then -- initialt e enqueue(utdata,"je") elseif (string.match(x,"ь")) then if (string.match(y,"и")) then enqueue(utdata, "j") end elseif ((string.match(x,"с")) or (string.match(x,"т")) or (string.match(x,"з")) or (string.match(x,"С")) or (string.match(x,"Т")) or (string.match(x,"З"))) then if(string.match(y,"ь")) then if(string.match(z,"е")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"ie") dequeue(indata) dequeue(indata) elseif(string.match(z,"ё")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"io") dequeue(indata) dequeue(indata) elseif(string.match(z,"ю")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"iu") dequeue(indata) dequeue(indata) elseif(string.match(z,"я")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"ia") dequeue(indata) dequeue(indata) else enqueue(utdata,latin_by_cyrillic[x]) end elseif(string.match(y,"ё")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"io") dequeue(indata) elseif(string.match(y,"ю")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"iu") dequeue(indata) elseif(string.match(y,"я")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"ia") dequeue(indata) else enqueue(utdata, latin_by_cyrillic[x]) end elseif((string.match(x,"ш")) or (string.match(x,"щ")) or (string.match(x,"ч")) or (string.match(x,"Ш")) or (string.match(x,"Щ")) or (string.match(x,"Ч"))) then if (y == nil) then enqueue(utdata,latin_by_cyrillic[x]) elseif (string.match(y,"ё")) then enqueue(utdata,latin_by_cyrillic[x]) enqueue(utdata,"o") dequeue(indata) else enqueue(utdata,latin_by_cyrillic[x]) end elseif(string.match(x,"е")) then if((string.match(u,"a")) or (string.match(u,"e")) or (string.match(u,"o")) or (string.match(u,"u")) or (string.match(u,"i"))) then enqueue(utdata,"je") else enqueue(utdata,"e") end else enqueue(utdata, latin_by_cyrillic[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) local y = peekonce(utdata) if(string.match(y,"́")) then if (string.match(x,"a")) then x = string.gsub(x,"a","á") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"e")) then x = string.gsub(x,"e","é") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"o")) then x = string.gsub(x,"o","ó") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"u")) then x = string.gsub(x,"u","ú") table.insert(returndata, x) dequeue(utdata) elseif (string.match(x,"i")) then x = string.gsub(x,"i","í") table.insert(returndata, x) dequeue(utdata) else table.insert(returndata,x) table.insert(returndata,y) dequeue(utdata) end else table.insert(returndata,x) end until (utdata.first > utdata.last) return returndata end -- följande funktion hanterar det faktum att ë alltid -- i praktiken innebär det att den gör om ë till ё́ -- för de ord som har fler än en stavelse local function accentuera_jo ( text ) vokaler = { ["А"] = true, ["а"] = true, ["Е"] = true, ["е"] = true, ["Ё"] = true, ["ё"] = true, ["И"] = true, ["и"] = true, ["О"] = true, ["о"] = true, ["У"] = true, ["у"] = true, ["Э"] = true, ["э"] = true, ["Ю"] = true, ["ю"] = true, ["Ы"] = true, ["ы"] = true, ["Я"] = true, ["я"] = true, } skiljetecken = { [" "] = true, [";"] = true, [","] = true, ["."] = true, ["!"] = true, ["?"] = true, ["("] = true, [")"] = true, ["-"] = true, } -- Börja med att förvandla eventuella ё́ tillbaka till ё -- (annars blir det kaka på kaka) text = string.gsub(text,"ё́","ё") -- Följande rader sätter automatiskt accent på ё i flerstaviga ord orden = {} iter = 1; for c in string.gmatch(text, ".[\128-\191]*") do if ((latin_by_cyrillic[c] ~= nil) or (string.match(c,"́"))) then if (orden[iter] == nil) then orden[iter] = c else orden[iter] = orden[iter]..c end elseif (skiljetecken[c]) then iter = iter+1 orden[iter] = c else -- annars är det något icke-ryskt tecken, som i "IP-адрес" if (orden[iter] == nil) then orden[iter] = c else orden[iter] = orden[iter]..c end end end for key, value in pairs(orden) do antal_vokaler = 0; for c in string.gmatch(value, ".[\128-\191]*") do if(vokaler[c]) then antal_vokaler = antal_vokaler +1 end end if (antal_vokaler>1) then orden[key] = string.gsub(value,"ё","ё́") end end return table.concat(orden,"") end --[[ function export.transkribera( argument ) local text = argument.args["text"] -- först en funktion som gör att till exempel -- Горбачёв blir Gorbatjóv (inte Gorbatjov) text = accentuera_jo (text) outputdata = transkribera_ru(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument -- först en funktion som gör att till exempel -- Горбачёв blir Gorbatjóv (inte Gorbatjov) text = accentuera_jo (text) outputdata = transkribera_ru(text) outputtext = table.concat(outputdata,"") return outputtext end return export rs96vlejlr1gf68w1j0jx6we9a7k6id Mall:tr 10 928541 3703212 3703186 2022-08-18T12:21:44Z Gabbe 1153 flyttade även grc till vägen via [[modul:translit]] wikitext text/x-wiki <includeonly><!-- -->{{#switch:<!--o-->{{{1}}}<!-- -->|<!--o-->ru={{#invoke:translit|tr|lang=ru|text={{{2|{{PAGENAME}}}}}}}<!-- -->|<!--o-->be={{#invoke:translit|tr|lang=be|text={{{2|{{PAGENAME}}}}}}}<!-- -->|<!--o-->bg={{#invoke:translit|tr|lang=bg|text={{{2|{{PAGENAME}}}}}}}<!-- -->|<!--o-->uk={{#invoke:translit|tr|lang=uk|text={{{2|{{PAGENAME}}}}}}}<!-- -->|<!--o-->ar={{#invoke:translit/ar|transkribera|text={{{2|{{PAGENAME}}}}}}}<!-- -->|<!--o-->grc={{#invoke:translit|tr|lang=grc|text={{{2|{{PAGENAME}}}}}}}<!-- -->|<!--o-->#default='''FEL i mall "{<nowiki>{tr}</nowiki>}" : språkkod "{{{1|??}}}" stöds ej'''<!-- -->}}<!--endswitch--></includeonly><noinclude> == Syfte == Denna mall transkriberar vissa språk till det latinska alfabetet. För närvarande hanterar mallen följande språk som skrivs med det kyrilliska alfabetet [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf på ett särskilt svenskt sätt]: * ryska [ru] * belarusiska/vitryska [be] * bulgariska [bg] * ukrainska [uk] På experimentstadiet hanterar den även: * arabiska [ar] * klassisk grekiska [grc] På längre sikt är ambitionen att mallen även ska kunna transkribera andra språk. == Parametrar == Mallen har två parametrar. Den första parametern, som är obligatorisk, är språkkoden. Den andra parametern, som är frivillig, är det ord som ska transkriberas. Sidnamnet hämtas ifall parametern saknas. == Exempel och självtest == <pre>{{tr}}</pre> {{tr}} ---- <pre>{{tr|ru|Пётр Ильи́ч Чайко́вский}}</pre> {{tr|ru|Пётр Ильи́ч Чайко́вский}} ---- <pre>{{tr|ru|Горбачёв}}</pre> {{tr|ru|Горбачёв}} ---- <pre>{{tr|ru|ёж}}</pre> {{tr|ru|ёж}} ---- <pre>{{tr|ru|ёлка}}</pre> {{tr|ru|ёлка}} ---- <pre>{{tr|bg|Жельо}}</pre> {{tr|bg|Жельо}} ---- <pre>{{tr|uk|Запоріжжя}}</pre> {{tr|uk|Запоріжжя}} ---- == Behövda moduler == * {{modul|translit}} * {{modul|translit/ru}} * {{modul|translit/be}} * {{modul|translit/bg}} * {{modul|translit/uk}} * {{modul|translit/ar}} * {{modul|translit/grc}} [[Kategori:Wiktionary:Mallar]] </noinclude> hpiqwkjdwjw7tjv4cmm2f5i8kbzzk2w Modul:translit/grc 828 928807 3703210 3703002 2022-08-18T12:18:08Z Gabbe 1153 lägger till funktion för att kunna anropas från [[modul:translit]] Scribunto text/plain -- Denna modul används för att transkribera antik grekiska till svenska. -- -- För att transkribera modern grekiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- [TODO] -- -- -- Denna modul strävar efter att följa det system som används av -- "Library of Congress". Det finns i skrivande stund beskrivet här: -- -- https://www.loc.gov/catdir/cpso/romanization/greek.pdf -- -- Några avsteg har gjorts för att bättre reflektera hur orden vanligen -- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis", -- inte "phronēsis". -- -- Notera att det finns andra sätt för att transkribera forngrekiska. -- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B -- eller den cypriska stavelseskriften. -- -- Lägg också märke till att denna version av modulen hanterar de flesta -- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan -- (och bör) göra detta mer nyanserat. -- -- -- Denna modul används av följande mall: -- {{tr}} -- -- Kända brister -- * Bokstavskombinationer av typen "γγ", "γκ", "γξ", "γχ" -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = {} -- börja med de vanliga bokstäverna latinska["Α"]="A"; latinska["α"]="a" latinska["Β"]="B"; latinska["β"]="b" latinska["Γ"]="G"; latinska["γ"]="g" latinska["Δ"]="D"; latinska["δ"]="d" latinska["Ε"]="E"; latinska["ε"]="e" latinska["Ζ"]="Z"; latinska["ζ"]="z" latinska["Η"]="Ē"; latinska["η"]="ē" latinska["Θ"]="Th"; latinska["θ"]="th" latinska["Ι"]="I"; latinska["ι"]="i" latinska["Κ"]="K"; latinska["κ"]="k" latinska["Λ"]="L"; latinska["λ"]="l" latinska["Μ"]="M"; latinska["μ"]="m" latinska["Ν"]="N"; latinska["ν"]="n" latinska["Ξ"]="X"; latinska["ξ"]="x" latinska["Ο"]="O"; latinska["ο"]="o" latinska["Π"]="P"; latinska["π"]="p" latinska["Ρ"]="R"; latinska["ρ"]="r" latinska["Σ"]="S"; latinska["σ"]="s"; latinska["ς"]="s" latinska["Τ"]="T"; latinska["τ"]="t" latinska["Υ"]="Y"; latinska["υ"]="y" latinska["Φ"]="F"; latinska["φ"]="f" latinska["Χ"]="Ch"; latinska["χ"]="ch" latinska["Ψ"]="Ps"; latinska["ψ"]="ps" latinska["Ω"]="Ō"; latinska["ω"]="ō" -- särvariant av sigma latinska["Ϲ"]="S"; latinska["ϲ"]="s" -- två arkaiska bokstäver latinska["Ϝ"]="W"; latinska["ϝ"]="w" latinska["Ϙ"]="Ḳ"; latinska["ϙ"]="ḳ" -- sen en separat tabell för att hålla reda på vilka som har "spiritus asper": spiritus_asper = { ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, } -- sen en separat tabell för versalerna: versaler = { ["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true, ["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, ["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, ["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, ["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, ["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, ["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, ["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, ["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, ["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true, } -- sen en för gemenerna: gemener = { ["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, ["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, ["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, ["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, ["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, ["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, ["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, ["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, ["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, ["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true, ["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, ["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, ["ῠ"] = true, } -- sen en tabell för de med akut accent: akut_accent = { ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true, } -- sen några separata tabeller för att hålla reda på vilken slags bokstav det är alfa = { ["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true, ["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, ["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, ["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, ["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, ["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, ["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, ["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, ["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, ["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, ["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true, ["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, } epsilon = { ["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true, ["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true, ["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true, ["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true, ["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true, ["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true, ["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true, ["Ὲ"] = true, } eta = { ["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true, ["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true, ["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true, ["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true, ["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true, ["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true, ["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true, ["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true, ["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true, ["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true, ["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true, ["ῌ"] = true, } jota = { ["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, ["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, ["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, ["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, ["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, ["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, ["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, ["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, ["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, ["ι"] = true, ["ͺ"] = true, } omikron = { ["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true, ["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true, ["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true, ["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true, ["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true, ["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true, } rho = { ["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, ["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, ["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, ["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, ["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, } ypsilon = { ["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, ["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, ["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, ["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, ["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, ["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, ["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, ["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, ["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, } omega = { ["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, ["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, ["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, ["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, ["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, ["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, ["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, ["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, ["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, ["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, ["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, ["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, } -- de som har två prickar ovanför vokalen hiatus = { ["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, } -- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken for i,v in pairs(versaler) do if(alfa[i]) then latinska[i] = latinska["Α"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["α"] end elseif(epsilon[i]) then latinska[i] = latinska["Ε"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ε"] end elseif(eta[i]) then latinska[i] = latinska["Η"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["η"] end elseif(jota[i]) then latinska[i] = latinska["Ι"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ι"] end elseif(omikron[i]) then latinska[i] = latinska["Ο"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["Ρ"] if(spiritus_asper[i]) then latinska[i] = latinska[i].."h" end elseif(ypsilon[i]) then latinska[i] = latinska["Υ"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["υ"] end elseif(omega[i]) then latinska[i] = latinska["Ω"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ω"] end end end for i,v in pairs(gemener) do if(alfa[i]) then if (akut_accent[i]) then latinska[i] = "á" else latinska[i] = latinska["α"] end elseif(epsilon[i]) then if (akut_accent[i]) then latinska[i] = "é" else latinska[i] = latinska["ε"] end elseif(eta[i]) then if (akut_accent[i]) then latinska[i] = "ḗ" else latinska[i] = latinska["η"] end elseif(jota[i]) then if (akut_accent[i]) then latinska[i] = "í" else latinska[i] = latinska["ι"] end elseif(omikron[i]) then if (akut_accent[i]) then latinska[i] = "ó" else latinska[i] = latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["ρ"] elseif(ypsilon[i]) then if (akut_accent[i]) then latinska[i] = "ý" else latinska[i] = latinska["υ"] end elseif(omega[i]) then if (akut_accent[i]) then latinska[i] = "ṓ" else latinska[i] = latinska["ω"] end end if(spiritus_asper[i]) then if(rho[i]) then latinska[i] = latinska[i].."h" else latinska[i] = "h"..latinska[i] end end end -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för forngrekiska function transkribera_grc(text) -- Två köer: en för grekiska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-grekiskt tecken enqueue(utdata, x) -- diverse undantag, startar med "spiritus asper" som del av en diftong elseif (((u == -1) or string.match(u," ")) and spiritus_asper[y]) then enqueue(utdata, string.sub(latinska[y],1,1)) -- versalt "H" eller gement "h" if (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, latinska[x]) end if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, string.sub(latinska[y],2)) end dequeue(indata) -- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ" elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then enqueue(utdata, latinska[x]) if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end dequeue(indata) -- sen diftongen "υι" elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x] and spiritus_asper[x]) then enqueue(utdata, "hú") elseif(akut_accent[x]) then enqueue(utdata, "ú") elseif(spiritus_asper[x]) then enqueue(utdata, "hu") else enqueue(utdata, "u") end enqueue(utdata, latinska[y]) dequeue(indata) -- sen, när "spiritus asper" hanteras med modifierare elseif (string.match(y,"̔")) then enqueue(utdata, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger? enqueue(utdata, latinska[x]) dequeue(indata) else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) table.insert(returndata,x) until (utdata.first > utdata.last) return returndata end function export.transkribera( argument ) local text = argument.args["text"] outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end function export.tr( argument ) local text = argument outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end return export 94v44eqda9simwy8m4emmlctbcjd1k3 3703213 3703210 2022-08-18T12:22:24Z Gabbe 1153 kommenterar bort funktionen som anropar modulen direkt från en mall Scribunto text/plain -- Denna modul används för att transkribera antik grekiska till svenska. -- -- För att transkribera modern grekiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- [TODO] -- -- -- Denna modul strävar efter att följa det system som används av -- "Library of Congress". Det finns i skrivande stund beskrivet här: -- -- https://www.loc.gov/catdir/cpso/romanization/greek.pdf -- -- Några avsteg har gjorts för att bättre reflektera hur orden vanligen -- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis", -- inte "phronēsis". -- -- Notera att det finns andra sätt för att transkribera forngrekiska. -- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B -- eller den cypriska stavelseskriften. -- -- Lägg också märke till att denna version av modulen hanterar de flesta -- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan -- (och bör) göra detta mer nyanserat. -- -- -- Denna modul används av följande mall: -- {{tr}} -- -- Kända brister -- * Bokstavskombinationer av typen "γγ", "γκ", "γξ", "γχ" -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = {} -- börja med de vanliga bokstäverna latinska["Α"]="A"; latinska["α"]="a" latinska["Β"]="B"; latinska["β"]="b" latinska["Γ"]="G"; latinska["γ"]="g" latinska["Δ"]="D"; latinska["δ"]="d" latinska["Ε"]="E"; latinska["ε"]="e" latinska["Ζ"]="Z"; latinska["ζ"]="z" latinska["Η"]="Ē"; latinska["η"]="ē" latinska["Θ"]="Th"; latinska["θ"]="th" latinska["Ι"]="I"; latinska["ι"]="i" latinska["Κ"]="K"; latinska["κ"]="k" latinska["Λ"]="L"; latinska["λ"]="l" latinska["Μ"]="M"; latinska["μ"]="m" latinska["Ν"]="N"; latinska["ν"]="n" latinska["Ξ"]="X"; latinska["ξ"]="x" latinska["Ο"]="O"; latinska["ο"]="o" latinska["Π"]="P"; latinska["π"]="p" latinska["Ρ"]="R"; latinska["ρ"]="r" latinska["Σ"]="S"; latinska["σ"]="s"; latinska["ς"]="s" latinska["Τ"]="T"; latinska["τ"]="t" latinska["Υ"]="Y"; latinska["υ"]="y" latinska["Φ"]="F"; latinska["φ"]="f" latinska["Χ"]="Ch"; latinska["χ"]="ch" latinska["Ψ"]="Ps"; latinska["ψ"]="ps" latinska["Ω"]="Ō"; latinska["ω"]="ō" -- särvariant av sigma latinska["Ϲ"]="S"; latinska["ϲ"]="s" -- två arkaiska bokstäver latinska["Ϝ"]="W"; latinska["ϝ"]="w" latinska["Ϙ"]="Ḳ"; latinska["ϙ"]="ḳ" -- sen en separat tabell för att hålla reda på vilka som har "spiritus asper": spiritus_asper = { ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, } -- sen en separat tabell för versalerna: versaler = { ["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true, ["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, ["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, ["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, ["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, ["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, ["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, ["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, ["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, ["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true, } -- sen en för gemenerna: gemener = { ["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, ["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, ["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, ["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, ["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, ["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, ["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, ["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, ["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, ["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true, ["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, ["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, ["ῠ"] = true, } -- sen en tabell för de med akut accent: akut_accent = { ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true, } -- sen några separata tabeller för att hålla reda på vilken slags bokstav det är alfa = { ["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true, ["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, ["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, ["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, ["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, ["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, ["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, ["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, ["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, ["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, ["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true, ["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, } epsilon = { ["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true, ["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true, ["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true, ["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true, ["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true, ["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true, ["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true, ["Ὲ"] = true, } eta = { ["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true, ["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true, ["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true, ["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true, ["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true, ["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true, ["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true, ["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true, ["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true, ["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true, ["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true, ["ῌ"] = true, } jota = { ["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, ["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, ["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, ["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, ["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, ["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, ["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, ["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, ["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, ["ι"] = true, ["ͺ"] = true, } omikron = { ["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true, ["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true, ["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true, ["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true, ["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true, ["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true, } rho = { ["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, ["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, ["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, ["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, ["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, } ypsilon = { ["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, ["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, ["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, ["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, ["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, ["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, ["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, ["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, ["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, } omega = { ["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, ["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, ["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, ["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, ["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, ["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, ["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, ["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, ["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, ["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, ["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, ["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, } -- de som har två prickar ovanför vokalen hiatus = { ["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, } -- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken for i,v in pairs(versaler) do if(alfa[i]) then latinska[i] = latinska["Α"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["α"] end elseif(epsilon[i]) then latinska[i] = latinska["Ε"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ε"] end elseif(eta[i]) then latinska[i] = latinska["Η"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["η"] end elseif(jota[i]) then latinska[i] = latinska["Ι"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ι"] end elseif(omikron[i]) then latinska[i] = latinska["Ο"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["Ρ"] if(spiritus_asper[i]) then latinska[i] = latinska[i].."h" end elseif(ypsilon[i]) then latinska[i] = latinska["Υ"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["υ"] end elseif(omega[i]) then latinska[i] = latinska["Ω"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ω"] end end end for i,v in pairs(gemener) do if(alfa[i]) then if (akut_accent[i]) then latinska[i] = "á" else latinska[i] = latinska["α"] end elseif(epsilon[i]) then if (akut_accent[i]) then latinska[i] = "é" else latinska[i] = latinska["ε"] end elseif(eta[i]) then if (akut_accent[i]) then latinska[i] = "ḗ" else latinska[i] = latinska["η"] end elseif(jota[i]) then if (akut_accent[i]) then latinska[i] = "í" else latinska[i] = latinska["ι"] end elseif(omikron[i]) then if (akut_accent[i]) then latinska[i] = "ó" else latinska[i] = latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["ρ"] elseif(ypsilon[i]) then if (akut_accent[i]) then latinska[i] = "ý" else latinska[i] = latinska["υ"] end elseif(omega[i]) then if (akut_accent[i]) then latinska[i] = "ṓ" else latinska[i] = latinska["ω"] end end if(spiritus_asper[i]) then if(rho[i]) then latinska[i] = latinska[i].."h" else latinska[i] = "h"..latinska[i] end end end -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för forngrekiska function transkribera_grc(text) -- Två köer: en för grekiska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-grekiskt tecken enqueue(utdata, x) -- diverse undantag, startar med "spiritus asper" som del av en diftong elseif (((u == -1) or string.match(u," ")) and spiritus_asper[y]) then enqueue(utdata, string.sub(latinska[y],1,1)) -- versalt "H" eller gement "h" if (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, latinska[x]) end if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, string.sub(latinska[y],2)) end dequeue(indata) -- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ" elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then enqueue(utdata, latinska[x]) if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end dequeue(indata) -- sen diftongen "υι" elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x] and spiritus_asper[x]) then enqueue(utdata, "hú") elseif(akut_accent[x]) then enqueue(utdata, "ú") elseif(spiritus_asper[x]) then enqueue(utdata, "hu") else enqueue(utdata, "u") end enqueue(utdata, latinska[y]) dequeue(indata) -- sen, när "spiritus asper" hanteras med modifierare elseif (string.match(y,"̔")) then enqueue(utdata, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger? enqueue(utdata, latinska[x]) dequeue(indata) else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) table.insert(returndata,x) until (utdata.first > utdata.last) return returndata end --[[ function export.transkribera( argument ) local text = argument.args["text"] outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end return export jrmxm3qsogrfnc44bij1f8whx7jxwpd 3703220 3703213 2022-08-18T12:59:57Z Gabbe 1153 la till hantering av bokstavsföljden "gamma + gamma" Scribunto text/plain -- Denna modul används för att transkribera antik grekiska till svenska. -- -- För att transkribera modern grekiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- [TODO] -- -- -- Denna modul strävar efter att följa det system som används av -- "Library of Congress". Det finns i skrivande stund beskrivet här: -- -- https://www.loc.gov/catdir/cpso/romanization/greek.pdf -- -- Några avsteg har gjorts för att bättre reflektera hur orden vanligen -- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis", -- inte "phronēsis". -- -- Notera att det finns andra sätt för att transkribera forngrekiska. -- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B -- eller den cypriska stavelseskriften. -- -- Lägg också märke till att denna version av modulen hanterar de flesta -- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan -- (och bör) göra detta mer nyanserat. -- -- -- Denna modul används av följande mall: -- {{tr}} -- -- Kända brister -- * Bokstavskombinationer av typen "γκ", "γξ", "γχ" -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = {} -- börja med de vanliga bokstäverna latinska["Α"]="A"; latinska["α"]="a" latinska["Β"]="B"; latinska["β"]="b" latinska["Γ"]="G"; latinska["γ"]="g" latinska["Δ"]="D"; latinska["δ"]="d" latinska["Ε"]="E"; latinska["ε"]="e" latinska["Ζ"]="Z"; latinska["ζ"]="z" latinska["Η"]="Ē"; latinska["η"]="ē" latinska["Θ"]="Th"; latinska["θ"]="th" latinska["Ι"]="I"; latinska["ι"]="i" latinska["Κ"]="K"; latinska["κ"]="k" latinska["Λ"]="L"; latinska["λ"]="l" latinska["Μ"]="M"; latinska["μ"]="m" latinska["Ν"]="N"; latinska["ν"]="n" latinska["Ξ"]="X"; latinska["ξ"]="x" latinska["Ο"]="O"; latinska["ο"]="o" latinska["Π"]="P"; latinska["π"]="p" latinska["Ρ"]="R"; latinska["ρ"]="r" latinska["Σ"]="S"; latinska["σ"]="s"; latinska["ς"]="s" latinska["Τ"]="T"; latinska["τ"]="t" latinska["Υ"]="Y"; latinska["υ"]="y" latinska["Φ"]="F"; latinska["φ"]="f" latinska["Χ"]="Ch"; latinska["χ"]="ch" latinska["Ψ"]="Ps"; latinska["ψ"]="ps" latinska["Ω"]="Ō"; latinska["ω"]="ō" -- särvariant av sigma latinska["Ϲ"]="S"; latinska["ϲ"]="s" -- två arkaiska bokstäver latinska["Ϝ"]="W"; latinska["ϝ"]="w" latinska["Ϙ"]="Ḳ"; latinska["ϙ"]="ḳ" -- sen en separat tabell för att hålla reda på vilka som har "spiritus asper": spiritus_asper = { ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, } -- sen en separat tabell för versalerna: versaler = { ["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true, ["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, ["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, ["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, ["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, ["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, ["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, ["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, ["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, ["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true, } -- sen en för gemenerna: gemener = { ["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, ["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, ["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, ["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, ["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, ["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, ["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, ["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, ["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, ["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true, ["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, ["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, ["ῠ"] = true, } -- sen en tabell för de med akut accent: akut_accent = { ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true, } -- sen några separata tabeller för att hålla reda på vilken slags bokstav det är alfa = { ["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true, ["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, ["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, ["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, ["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, ["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, ["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, ["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, ["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, ["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, ["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true, ["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, } gamma = { ["γ"] = true, ["𝛄"] = true, ["𝛾"] = true, ["𝜸"] = true, ["𝝲"] = true, ["𝞬"] = true, ["Γ"] = true, ["𝚪"] = true, ["𝛤"] = true, ["𝜞"] = true, ["𝝘"] = true, ["𝞒"] = true, ["ℽ"] = true, ["ℾ"] = true, ["ᵞ"] = true, ["ᵧ"] = true, ["ᴦ"] = true, } epsilon = { ["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true, ["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true, ["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true, ["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true, ["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true, ["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true, ["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true, ["Ὲ"] = true, } eta = { ["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true, ["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true, ["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true, ["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true, ["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true, ["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true, ["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true, ["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true, ["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true, ["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true, ["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true, ["ῌ"] = true, } jota = { ["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, ["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, ["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, ["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, ["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, ["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, ["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, ["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, ["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, ["ι"] = true, ["ͺ"] = true, } omikron = { ["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true, ["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true, ["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true, ["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true, ["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true, ["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true, } rho = { ["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, ["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, ["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, ["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, ["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, } ypsilon = { ["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, ["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, ["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, ["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, ["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, ["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, ["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, ["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, ["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, } omega = { ["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, ["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, ["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, ["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, ["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, ["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, ["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, ["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, ["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, ["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, ["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, ["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, } -- de som har två prickar ovanför vokalen hiatus = { ["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, } -- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken for i,v in pairs(versaler) do if(alfa[i]) then latinska[i] = latinska["Α"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["α"] end elseif(epsilon[i]) then latinska[i] = latinska["Ε"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ε"] end elseif(eta[i]) then latinska[i] = latinska["Η"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["η"] end elseif(jota[i]) then latinska[i] = latinska["Ι"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ι"] end elseif(omikron[i]) then latinska[i] = latinska["Ο"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["Ρ"] if(spiritus_asper[i]) then latinska[i] = latinska[i].."h" end elseif(ypsilon[i]) then latinska[i] = latinska["Υ"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["υ"] end elseif(omega[i]) then latinska[i] = latinska["Ω"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ω"] end end end for i,v in pairs(gemener) do if(alfa[i]) then if (akut_accent[i]) then latinska[i] = "á" else latinska[i] = latinska["α"] end elseif(epsilon[i]) then if (akut_accent[i]) then latinska[i] = "é" else latinska[i] = latinska["ε"] end elseif(eta[i]) then if (akut_accent[i]) then latinska[i] = "ḗ" else latinska[i] = latinska["η"] end elseif(jota[i]) then if (akut_accent[i]) then latinska[i] = "í" else latinska[i] = latinska["ι"] end elseif(omikron[i]) then if (akut_accent[i]) then latinska[i] = "ó" else latinska[i] = latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["ρ"] elseif(ypsilon[i]) then if (akut_accent[i]) then latinska[i] = "ý" else latinska[i] = latinska["υ"] end elseif(omega[i]) then if (akut_accent[i]) then latinska[i] = "ṓ" else latinska[i] = latinska["ω"] end end if(spiritus_asper[i]) then if(rho[i]) then latinska[i] = latinska[i].."h" else latinska[i] = "h"..latinska[i] end end end -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för forngrekiska function transkribera_grc(text) -- Två köer: en för grekiska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-grekiskt tecken enqueue(utdata, x) -- diverse undantag, startar med "spiritus asper" som del av en diftong elseif (((u == -1) or string.match(u," ")) and spiritus_asper[y]) then enqueue(utdata, string.sub(latinska[y],1,1)) -- versalt "H" eller gement "h" if (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, latinska[x]) end if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, string.sub(latinska[y],2)) end dequeue(indata) -- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ" elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then enqueue(utdata, latinska[x]) if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end dequeue(indata) -- sen diftongen "υι" elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x] and spiritus_asper[x]) then enqueue(utdata, "hú") elseif(akut_accent[x]) then enqueue(utdata, "ú") elseif(spiritus_asper[x]) then enqueue(utdata, "hu") else enqueue(utdata, "u") end enqueue(utdata, latinska[y]) dequeue(indata) -- sen bokstavsföljden "γγ" elseif (gamma[x] and gamma[y]) then enqueue(utdata,"n") enqueue(utdata,"g") dequeue(indata) -- sen, när "spiritus asper" hanteras med modifierare elseif (string.match(y,"̔")) then enqueue(utdata, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger? enqueue(utdata, latinska[x]) dequeue(indata) else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) table.insert(returndata,x) until (utdata.first > utdata.last) return returndata end --[[ function export.transkribera( argument ) local text = argument.args["text"] outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end return export 2wthjw132injehacoo74c30qgzwl6zm 3703222 3703220 2022-08-18T13:19:26Z Gabbe 1153 hanterade "γξ" Scribunto text/plain -- Denna modul används för att transkribera antik grekiska till svenska. -- -- För att transkribera modern grekiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- [TODO] -- -- -- Denna modul strävar efter att följa det system som används av -- "Library of Congress". Det finns i skrivande stund beskrivet här: -- -- https://www.loc.gov/catdir/cpso/romanization/greek.pdf -- -- Några avsteg har gjorts för att bättre reflektera hur orden vanligen -- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis", -- inte "phronēsis". -- -- Notera att det finns andra sätt för att transkribera forngrekiska. -- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B -- eller den cypriska stavelseskriften. -- -- Lägg också märke till att denna version av modulen hanterar de flesta -- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan -- (och bör) göra detta mer nyanserat. -- -- -- Denna modul används av följande mall: -- {{tr}} -- -- Kända brister -- * Bokstavskombinationer av typen "γκ", "γχ" -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = {} -- börja med de vanliga bokstäverna latinska["Α"]="A"; latinska["α"]="a" latinska["Β"]="B"; latinska["β"]="b" latinska["Γ"]="G"; latinska["γ"]="g" latinska["Δ"]="D"; latinska["δ"]="d" latinska["Ε"]="E"; latinska["ε"]="e" latinska["Ζ"]="Z"; latinska["ζ"]="z" latinska["Η"]="Ē"; latinska["η"]="ē" latinska["Θ"]="Th"; latinska["θ"]="th" latinska["Ι"]="I"; latinska["ι"]="i" latinska["Κ"]="K"; latinska["κ"]="k" latinska["Λ"]="L"; latinska["λ"]="l" latinska["Μ"]="M"; latinska["μ"]="m" latinska["Ν"]="N"; latinska["ν"]="n" latinska["Ξ"]="X"; latinska["ξ"]="x" latinska["Ο"]="O"; latinska["ο"]="o" latinska["Π"]="P"; latinska["π"]="p" latinska["Ρ"]="R"; latinska["ρ"]="r" latinska["Σ"]="S"; latinska["σ"]="s"; latinska["ς"]="s" latinska["Τ"]="T"; latinska["τ"]="t" latinska["Υ"]="Y"; latinska["υ"]="y" latinska["Φ"]="F"; latinska["φ"]="f" latinska["Χ"]="Ch"; latinska["χ"]="ch" latinska["Ψ"]="Ps"; latinska["ψ"]="ps" latinska["Ω"]="Ō"; latinska["ω"]="ō" -- särvariant av sigma latinska["Ϲ"]="S"; latinska["ϲ"]="s" -- två arkaiska bokstäver latinska["Ϝ"]="W"; latinska["ϝ"]="w" latinska["Ϙ"]="Ḳ"; latinska["ϙ"]="ḳ" -- sen en separat tabell för att hålla reda på vilka som har "spiritus asper": spiritus_asper = { ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, } -- sen en separat tabell för versalerna: versaler = { ["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true, ["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, ["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, ["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, ["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, ["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, ["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, ["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, ["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, ["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true, } -- sen en för gemenerna: gemener = { ["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, ["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, ["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, ["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, ["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, ["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, ["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, ["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, ["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, ["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true, ["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, ["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, ["ῠ"] = true, } -- sen en tabell för de med akut accent: akut_accent = { ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true, } -- sen några separata tabeller för att hålla reda på vilken slags bokstav det är alfa = { ["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true, ["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, ["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, ["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, ["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, ["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, ["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, ["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, ["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, ["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, ["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true, ["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, } gamma = { ["γ"] = true, ["𝛄"] = true, ["𝛾"] = true, ["𝜸"] = true, ["𝝲"] = true, ["𝞬"] = true, ["Γ"] = true, ["𝚪"] = true, ["𝛤"] = true, ["𝜞"] = true, ["𝝘"] = true, ["𝞒"] = true, ["ℽ"] = true, ["ℾ"] = true, ["ᵞ"] = true, ["ᵧ"] = true, ["ᴦ"] = true, } epsilon = { ["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true, ["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true, ["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true, ["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true, ["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true, ["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true, ["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true, ["Ὲ"] = true, } eta = { ["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true, ["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true, ["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true, ["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true, ["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true, ["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true, ["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true, ["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true, ["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true, ["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true, ["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true, ["ῌ"] = true, } jota = { ["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, ["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, ["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, ["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, ["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, ["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, ["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, ["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, ["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, ["ι"] = true, ["ͺ"] = true, } xi = { ["ξ"] = true, ["𝛏"] = true, ["𝜉"] = true, ["𝝃"] = true, ["𝝽"] = true, ["𝞷"] = true, ["Ξ"] = true, ["𝚵"] = true, ["𝛯"] = true, ["𝜩"] = true, ["𝝣"] = true, ["𝞝"] = true, } omikron = { ["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true, ["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true, ["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true, ["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true, ["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true, ["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true, } rho = { ["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, ["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, ["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, ["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, ["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, } ypsilon = { ["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, ["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, ["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, ["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, ["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, ["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, ["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, ["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, ["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, } omega = { ["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, ["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, ["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, ["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, ["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, ["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, ["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, ["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, ["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, ["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, ["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, ["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, } -- de som har två prickar ovanför vokalen hiatus = { ["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, } -- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken for i,v in pairs(versaler) do if(alfa[i]) then latinska[i] = latinska["Α"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["α"] end elseif(epsilon[i]) then latinska[i] = latinska["Ε"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ε"] end elseif(eta[i]) then latinska[i] = latinska["Η"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["η"] end elseif(jota[i]) then latinska[i] = latinska["Ι"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ι"] end elseif(omikron[i]) then latinska[i] = latinska["Ο"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["Ρ"] if(spiritus_asper[i]) then latinska[i] = latinska[i].."h" end elseif(ypsilon[i]) then latinska[i] = latinska["Υ"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["υ"] end elseif(omega[i]) then latinska[i] = latinska["Ω"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ω"] end end end for i,v in pairs(gemener) do if(alfa[i]) then if (akut_accent[i]) then latinska[i] = "á" else latinska[i] = latinska["α"] end elseif(epsilon[i]) then if (akut_accent[i]) then latinska[i] = "é" else latinska[i] = latinska["ε"] end elseif(eta[i]) then if (akut_accent[i]) then latinska[i] = "ḗ" else latinska[i] = latinska["η"] end elseif(jota[i]) then if (akut_accent[i]) then latinska[i] = "í" else latinska[i] = latinska["ι"] end elseif(omikron[i]) then if (akut_accent[i]) then latinska[i] = "ó" else latinska[i] = latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["ρ"] elseif(ypsilon[i]) then if (akut_accent[i]) then latinska[i] = "ý" else latinska[i] = latinska["υ"] end elseif(omega[i]) then if (akut_accent[i]) then latinska[i] = "ṓ" else latinska[i] = latinska["ω"] end end if(spiritus_asper[i]) then if(rho[i]) then latinska[i] = latinska[i].."h" else latinska[i] = "h"..latinska[i] end end end -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för forngrekiska function transkribera_grc(text) -- Två köer: en för grekiska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-grekiskt tecken enqueue(utdata, x) -- diverse undantag, startar med "spiritus asper" som del av en diftong elseif (((u == -1) or string.match(u," ")) and spiritus_asper[y]) then enqueue(utdata, string.sub(latinska[y],1,1)) -- versalt "H" eller gement "h" if (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, latinska[x]) end if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, string.sub(latinska[y],2)) end dequeue(indata) -- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ" elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then enqueue(utdata, latinska[x]) if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end dequeue(indata) -- sen diftongen "υι" elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x] and spiritus_asper[x]) then enqueue(utdata, "hú") elseif(akut_accent[x]) then enqueue(utdata, "ú") elseif(spiritus_asper[x]) then enqueue(utdata, "hu") else enqueue(utdata, "u") end enqueue(utdata, latinska[y]) dequeue(indata) -- sen bokstavsföljden "γγ" elseif (gamma[x] and gamma[y]) then enqueue(utdata,"n") enqueue(utdata,"g") dequeue(indata) -- sen bokstavsföljden "γξ" elseif (gamma[x] and xi[y]) then enqueue(utdata,"n") enqueue(utdata,"x") dequeue(indata) -- sen, när "spiritus asper" hanteras med modifierare elseif (string.match(y,"̔")) then enqueue(utdata, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger? enqueue(utdata, latinska[x]) dequeue(indata) else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) table.insert(returndata,x) until (utdata.first > utdata.last) return returndata end --[[ function export.transkribera( argument ) local text = argument.args["text"] outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end return export pmu5ggm7voxl24rc5siarmrika48gko 3703224 3703222 2022-08-18T13:26:20Z Gabbe 1153 la till hantering av "gamma + chi" Scribunto text/plain -- Denna modul används för att transkribera antik grekiska till svenska. -- -- För att transkribera modern grekiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- [TODO] -- -- -- Denna modul strävar efter att följa det system som används av -- "Library of Congress". Det finns i skrivande stund beskrivet här: -- -- https://www.loc.gov/catdir/cpso/romanization/greek.pdf -- -- Några avsteg har gjorts för att bättre reflektera hur orden vanligen -- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis", -- inte "phronēsis". -- -- Notera att det finns andra sätt för att transkribera forngrekiska. -- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B -- eller den cypriska stavelseskriften. -- -- Lägg också märke till att denna version av modulen hanterar de flesta -- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan -- (och bör) göra detta mer nyanserat. -- -- -- Denna modul används av följande mall: -- {{tr}} -- -- Kända brister -- * Bokstavskombinationer av typen "γκ" -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = {} -- börja med de vanliga bokstäverna latinska["Α"]="A"; latinska["α"]="a" latinska["Β"]="B"; latinska["β"]="b" latinska["Γ"]="G"; latinska["γ"]="g" latinska["Δ"]="D"; latinska["δ"]="d" latinska["Ε"]="E"; latinska["ε"]="e" latinska["Ζ"]="Z"; latinska["ζ"]="z" latinska["Η"]="Ē"; latinska["η"]="ē" latinska["Θ"]="Th"; latinska["θ"]="th" latinska["Ι"]="I"; latinska["ι"]="i" latinska["Κ"]="K"; latinska["κ"]="k" latinska["Λ"]="L"; latinska["λ"]="l" latinska["Μ"]="M"; latinska["μ"]="m" latinska["Ν"]="N"; latinska["ν"]="n" latinska["Ξ"]="X"; latinska["ξ"]="x" latinska["Ο"]="O"; latinska["ο"]="o" latinska["Π"]="P"; latinska["π"]="p" latinska["Ρ"]="R"; latinska["ρ"]="r" latinska["Σ"]="S"; latinska["σ"]="s"; latinska["ς"]="s" latinska["Τ"]="T"; latinska["τ"]="t" latinska["Υ"]="Y"; latinska["υ"]="y" latinska["Φ"]="F"; latinska["φ"]="f" latinska["Χ"]="Ch"; latinska["χ"]="ch" latinska["Ψ"]="Ps"; latinska["ψ"]="ps" latinska["Ω"]="Ō"; latinska["ω"]="ō" -- särvariant av sigma latinska["Ϲ"]="S"; latinska["ϲ"]="s" -- två arkaiska bokstäver latinska["Ϝ"]="W"; latinska["ϝ"]="w" latinska["Ϙ"]="Ḳ"; latinska["ϙ"]="ḳ" -- sen en separat tabell för att hålla reda på vilka som har "spiritus asper": spiritus_asper = { ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, } -- sen en separat tabell för versalerna: versaler = { ["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true, ["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, ["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, ["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, ["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, ["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, ["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, ["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, ["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, ["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true, } -- sen en för gemenerna: gemener = { ["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, ["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, ["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, ["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, ["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, ["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, ["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, ["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, ["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, ["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true, ["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, ["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, ["ῠ"] = true, } -- sen en tabell för de med akut accent: akut_accent = { ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true, } -- sen några separata tabeller för att hålla reda på vilken slags bokstav det är alfa = { ["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true, ["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, ["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, ["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, ["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, ["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, ["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, ["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, ["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, ["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, ["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true, ["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, } gamma = { ["γ"] = true, ["𝛄"] = true, ["𝛾"] = true, ["𝜸"] = true, ["𝝲"] = true, ["𝞬"] = true, ["Γ"] = true, ["𝚪"] = true, ["𝛤"] = true, ["𝜞"] = true, ["𝝘"] = true, ["𝞒"] = true, ["ℽ"] = true, ["ℾ"] = true, ["ᵞ"] = true, ["ᵧ"] = true, ["ᴦ"] = true, } epsilon = { ["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true, ["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true, ["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true, ["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true, ["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true, ["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true, ["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true, ["Ὲ"] = true, } eta = { ["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true, ["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true, ["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true, ["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true, ["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true, ["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true, ["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true, ["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true, ["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true, ["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true, ["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true, ["ῌ"] = true, } jota = { ["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, ["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, ["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, ["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, ["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, ["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, ["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, ["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, ["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, ["ι"] = true, ["ͺ"] = true, } xi = { ["ξ"] = true, ["𝛏"] = true, ["𝜉"] = true, ["𝝃"] = true, ["𝝽"] = true, ["𝞷"] = true, ["Ξ"] = true, ["𝚵"] = true, ["𝛯"] = true, ["𝜩"] = true, ["𝝣"] = true, ["𝞝"] = true, } omikron = { ["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true, ["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true, ["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true, ["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true, ["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true, ["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true, } rho = { ["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, ["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, ["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, ["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, ["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, } ypsilon = { ["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, ["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, ["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, ["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, ["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, ["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, ["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, ["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, ["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, } chi = { ["χ"] = true, ["𝛘"] = true, ["𝜒"] = true, ["𝝌"] = true, ["𝞆"] = true, ["𝟀"] = true, ["Χ"] = true, ["𝚾"] = true, ["𝛸"] = true, ["𝜲"] = true, ["𝝬"] = true, ["𝞦"] = true, ["ᵡ"] = true, ["ᵪ"] = true } omega = { ["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, ["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, ["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, ["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, ["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, ["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, ["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, ["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, ["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, ["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, ["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, ["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, } -- de som har två prickar ovanför vokalen hiatus = { ["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, } -- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken for i,v in pairs(versaler) do if(alfa[i]) then latinska[i] = latinska["Α"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["α"] end elseif(epsilon[i]) then latinska[i] = latinska["Ε"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ε"] end elseif(eta[i]) then latinska[i] = latinska["Η"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["η"] end elseif(jota[i]) then latinska[i] = latinska["Ι"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ι"] end elseif(omikron[i]) then latinska[i] = latinska["Ο"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["Ρ"] if(spiritus_asper[i]) then latinska[i] = latinska[i].."h" end elseif(ypsilon[i]) then latinska[i] = latinska["Υ"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["υ"] end elseif(omega[i]) then latinska[i] = latinska["Ω"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ω"] end end end for i,v in pairs(gemener) do if(alfa[i]) then if (akut_accent[i]) then latinska[i] = "á" else latinska[i] = latinska["α"] end elseif(epsilon[i]) then if (akut_accent[i]) then latinska[i] = "é" else latinska[i] = latinska["ε"] end elseif(eta[i]) then if (akut_accent[i]) then latinska[i] = "ḗ" else latinska[i] = latinska["η"] end elseif(jota[i]) then if (akut_accent[i]) then latinska[i] = "í" else latinska[i] = latinska["ι"] end elseif(omikron[i]) then if (akut_accent[i]) then latinska[i] = "ó" else latinska[i] = latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["ρ"] elseif(ypsilon[i]) then if (akut_accent[i]) then latinska[i] = "ý" else latinska[i] = latinska["υ"] end elseif(omega[i]) then if (akut_accent[i]) then latinska[i] = "ṓ" else latinska[i] = latinska["ω"] end end if(spiritus_asper[i]) then if(rho[i]) then latinska[i] = latinska[i].."h" else latinska[i] = "h"..latinska[i] end end end -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för forngrekiska function transkribera_grc(text) -- Två köer: en för grekiska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-grekiskt tecken enqueue(utdata, x) -- diverse undantag, startar med "spiritus asper" som del av en diftong elseif (((u == -1) or string.match(u," ")) and spiritus_asper[y]) then enqueue(utdata, string.sub(latinska[y],1,1)) -- versalt "H" eller gement "h" if (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, latinska[x]) end if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, string.sub(latinska[y],2)) end dequeue(indata) -- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ" elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then enqueue(utdata, latinska[x]) if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end dequeue(indata) -- sen diftongen "υι" elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x] and spiritus_asper[x]) then enqueue(utdata, "hú") elseif(akut_accent[x]) then enqueue(utdata, "ú") elseif(spiritus_asper[x]) then enqueue(utdata, "hu") else enqueue(utdata, "u") end enqueue(utdata, latinska[y]) dequeue(indata) -- sen bokstavsföljden "γγ" elseif (gamma[x] and gamma[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["γ"]) dequeue(indata) -- sen bokstavsföljden "γξ" elseif (gamma[x] and xi[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["ξ"]) dequeue(indata) -- sen bokstavsföljden "γχ" elseif (gamma[x] and xi[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["χ"]) dequeue(indata) -- sen, när "spiritus asper" hanteras med modifierare elseif (string.match(y,"̔")) then enqueue(utdata, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger? enqueue(utdata, latinska[x]) dequeue(indata) else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) table.insert(returndata,x) until (utdata.first > utdata.last) return returndata end --[[ function export.transkribera( argument ) local text = argument.args["text"] outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end return export ns7wbt33scc4ujexv3ntzj25uz30w0h 3703225 3703224 2022-08-18T13:27:10Z Gabbe 1153 "chi", inte "xi" Scribunto text/plain -- Denna modul används för att transkribera antik grekiska till svenska. -- -- För att transkribera modern grekiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- [TODO] -- -- -- Denna modul strävar efter att följa det system som används av -- "Library of Congress". Det finns i skrivande stund beskrivet här: -- -- https://www.loc.gov/catdir/cpso/romanization/greek.pdf -- -- Några avsteg har gjorts för att bättre reflektera hur orden vanligen -- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis", -- inte "phronēsis". -- -- Notera att det finns andra sätt för att transkribera forngrekiska. -- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B -- eller den cypriska stavelseskriften. -- -- Lägg också märke till att denna version av modulen hanterar de flesta -- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan -- (och bör) göra detta mer nyanserat. -- -- -- Denna modul används av följande mall: -- {{tr}} -- -- Kända brister -- * Bokstavskombinationer av typen "γκ" -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = {} -- börja med de vanliga bokstäverna latinska["Α"]="A"; latinska["α"]="a" latinska["Β"]="B"; latinska["β"]="b" latinska["Γ"]="G"; latinska["γ"]="g" latinska["Δ"]="D"; latinska["δ"]="d" latinska["Ε"]="E"; latinska["ε"]="e" latinska["Ζ"]="Z"; latinska["ζ"]="z" latinska["Η"]="Ē"; latinska["η"]="ē" latinska["Θ"]="Th"; latinska["θ"]="th" latinska["Ι"]="I"; latinska["ι"]="i" latinska["Κ"]="K"; latinska["κ"]="k" latinska["Λ"]="L"; latinska["λ"]="l" latinska["Μ"]="M"; latinska["μ"]="m" latinska["Ν"]="N"; latinska["ν"]="n" latinska["Ξ"]="X"; latinska["ξ"]="x" latinska["Ο"]="O"; latinska["ο"]="o" latinska["Π"]="P"; latinska["π"]="p" latinska["Ρ"]="R"; latinska["ρ"]="r" latinska["Σ"]="S"; latinska["σ"]="s"; latinska["ς"]="s" latinska["Τ"]="T"; latinska["τ"]="t" latinska["Υ"]="Y"; latinska["υ"]="y" latinska["Φ"]="F"; latinska["φ"]="f" latinska["Χ"]="Ch"; latinska["χ"]="ch" latinska["Ψ"]="Ps"; latinska["ψ"]="ps" latinska["Ω"]="Ō"; latinska["ω"]="ō" -- särvariant av sigma latinska["Ϲ"]="S"; latinska["ϲ"]="s" -- två arkaiska bokstäver latinska["Ϝ"]="W"; latinska["ϝ"]="w" latinska["Ϙ"]="Ḳ"; latinska["ϙ"]="ḳ" -- sen en separat tabell för att hålla reda på vilka som har "spiritus asper": spiritus_asper = { ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, } -- sen en separat tabell för versalerna: versaler = { ["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true, ["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, ["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, ["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, ["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, ["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, ["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, ["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, ["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, ["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true, } -- sen en för gemenerna: gemener = { ["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, ["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, ["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, ["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, ["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, ["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, ["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, ["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, ["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, ["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true, ["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, ["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, ["ῠ"] = true, } -- sen en tabell för de med akut accent: akut_accent = { ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true, } -- sen några separata tabeller för att hålla reda på vilken slags bokstav det är alfa = { ["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true, ["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, ["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, ["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, ["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, ["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, ["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, ["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, ["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, ["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, ["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true, ["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, } gamma = { ["γ"] = true, ["𝛄"] = true, ["𝛾"] = true, ["𝜸"] = true, ["𝝲"] = true, ["𝞬"] = true, ["Γ"] = true, ["𝚪"] = true, ["𝛤"] = true, ["𝜞"] = true, ["𝝘"] = true, ["𝞒"] = true, ["ℽ"] = true, ["ℾ"] = true, ["ᵞ"] = true, ["ᵧ"] = true, ["ᴦ"] = true, } epsilon = { ["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true, ["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true, ["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true, ["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true, ["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true, ["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true, ["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true, ["Ὲ"] = true, } eta = { ["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true, ["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true, ["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true, ["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true, ["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true, ["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true, ["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true, ["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true, ["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true, ["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true, ["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true, ["ῌ"] = true, } jota = { ["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, ["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, ["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, ["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, ["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, ["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, ["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, ["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, ["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, ["ι"] = true, ["ͺ"] = true, } xi = { ["ξ"] = true, ["𝛏"] = true, ["𝜉"] = true, ["𝝃"] = true, ["𝝽"] = true, ["𝞷"] = true, ["Ξ"] = true, ["𝚵"] = true, ["𝛯"] = true, ["𝜩"] = true, ["𝝣"] = true, ["𝞝"] = true, } omikron = { ["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true, ["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true, ["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true, ["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true, ["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true, ["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true, } rho = { ["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, ["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, ["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, ["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, ["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, } ypsilon = { ["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, ["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, ["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, ["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, ["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, ["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, ["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, ["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, ["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, } chi = { ["χ"] = true, ["𝛘"] = true, ["𝜒"] = true, ["𝝌"] = true, ["𝞆"] = true, ["𝟀"] = true, ["Χ"] = true, ["𝚾"] = true, ["𝛸"] = true, ["𝜲"] = true, ["𝝬"] = true, ["𝞦"] = true, ["ᵡ"] = true, ["ᵪ"] = true } omega = { ["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, ["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, ["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, ["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, ["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, ["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, ["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, ["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, ["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, ["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, ["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, ["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, } -- de som har två prickar ovanför vokalen hiatus = { ["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, } -- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken for i,v in pairs(versaler) do if(alfa[i]) then latinska[i] = latinska["Α"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["α"] end elseif(epsilon[i]) then latinska[i] = latinska["Ε"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ε"] end elseif(eta[i]) then latinska[i] = latinska["Η"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["η"] end elseif(jota[i]) then latinska[i] = latinska["Ι"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ι"] end elseif(omikron[i]) then latinska[i] = latinska["Ο"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["Ρ"] if(spiritus_asper[i]) then latinska[i] = latinska[i].."h" end elseif(ypsilon[i]) then latinska[i] = latinska["Υ"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["υ"] end elseif(omega[i]) then latinska[i] = latinska["Ω"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ω"] end end end for i,v in pairs(gemener) do if(alfa[i]) then if (akut_accent[i]) then latinska[i] = "á" else latinska[i] = latinska["α"] end elseif(epsilon[i]) then if (akut_accent[i]) then latinska[i] = "é" else latinska[i] = latinska["ε"] end elseif(eta[i]) then if (akut_accent[i]) then latinska[i] = "ḗ" else latinska[i] = latinska["η"] end elseif(jota[i]) then if (akut_accent[i]) then latinska[i] = "í" else latinska[i] = latinska["ι"] end elseif(omikron[i]) then if (akut_accent[i]) then latinska[i] = "ó" else latinska[i] = latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["ρ"] elseif(ypsilon[i]) then if (akut_accent[i]) then latinska[i] = "ý" else latinska[i] = latinska["υ"] end elseif(omega[i]) then if (akut_accent[i]) then latinska[i] = "ṓ" else latinska[i] = latinska["ω"] end end if(spiritus_asper[i]) then if(rho[i]) then latinska[i] = latinska[i].."h" else latinska[i] = "h"..latinska[i] end end end -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för forngrekiska function transkribera_grc(text) -- Två köer: en för grekiska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-grekiskt tecken enqueue(utdata, x) -- diverse undantag, startar med "spiritus asper" som del av en diftong elseif (((u == -1) or string.match(u," ")) and spiritus_asper[y]) then enqueue(utdata, string.sub(latinska[y],1,1)) -- versalt "H" eller gement "h" if (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, latinska[x]) end if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, string.sub(latinska[y],2)) end dequeue(indata) -- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ" elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then enqueue(utdata, latinska[x]) if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end dequeue(indata) -- sen diftongen "υι" elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x] and spiritus_asper[x]) then enqueue(utdata, "hú") elseif(akut_accent[x]) then enqueue(utdata, "ú") elseif(spiritus_asper[x]) then enqueue(utdata, "hu") else enqueue(utdata, "u") end enqueue(utdata, latinska[y]) dequeue(indata) -- sen bokstavsföljden "γγ" elseif (gamma[x] and gamma[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["γ"]) dequeue(indata) -- sen bokstavsföljden "γξ" elseif (gamma[x] and xi[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["ξ"]) dequeue(indata) -- sen bokstavsföljden "γχ" elseif (gamma[x] and chi[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["χ"]) dequeue(indata) -- sen, när "spiritus asper" hanteras med modifierare elseif (string.match(y,"̔")) then enqueue(utdata, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger? enqueue(utdata, latinska[x]) dequeue(indata) else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) table.insert(returndata,x) until (utdata.first > utdata.last) return returndata end --[[ function export.transkribera( argument ) local text = argument.args["text"] outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end return export bh9gumv8feln4ynnxcun7t7cl0zh7vi 3703233 3703225 2022-08-18T14:26:01Z Gabbe 1153 la till särvariant av beta Scribunto text/plain -- Denna modul används för att transkribera antik grekiska till svenska. -- -- För att transkribera modern grekiska kan ett liknande system användas. -- Det hanteras dock av särskilda moduler. Se: -- -- [TODO] -- -- -- Denna modul strävar efter att följa det system som används av -- "Library of Congress". Det finns i skrivande stund beskrivet här: -- -- https://www.loc.gov/catdir/cpso/romanization/greek.pdf -- -- Några avsteg har gjorts för att bättre reflektera hur orden vanligen -- transkriberas till svenska. Exempelvis förvandlas φρόνησις till "frónēsis", -- inte "phronēsis". -- -- Notera att det finns andra sätt för att transkribera forngrekiska. -- Notera även att denna modul inte (ännu) hanterar skriftsystem som Linear B -- eller den cypriska stavelseskriften. -- -- Lägg också märke till att denna version av modulen hanterar de flesta -- diakriter på ett ganska styvmoderligt sätt. Framtida versioner kan -- (och bör) göra detta mer nyanserat. -- -- -- Denna modul används av följande mall: -- {{tr}} -- -- Kända brister -- * Bokstavskombinationer av typen "γκ" -- -- Modulen är författad av (och underhålls av) [[Användare:Gabbe]] local export = {} latinska = {} -- börja med de vanliga bokstäverna latinska["Α"]="A"; latinska["α"]="a" latinska["Β"]="B"; latinska["β"]="b" latinska["Γ"]="G"; latinska["γ"]="g" latinska["Δ"]="D"; latinska["δ"]="d" latinska["Ε"]="E"; latinska["ε"]="e" latinska["Ζ"]="Z"; latinska["ζ"]="z" latinska["Η"]="Ē"; latinska["η"]="ē" latinska["Θ"]="Th"; latinska["θ"]="th" latinska["Ι"]="I"; latinska["ι"]="i" latinska["Κ"]="K"; latinska["κ"]="k" latinska["Λ"]="L"; latinska["λ"]="l" latinska["Μ"]="M"; latinska["μ"]="m" latinska["Ν"]="N"; latinska["ν"]="n" latinska["Ξ"]="X"; latinska["ξ"]="x" latinska["Ο"]="O"; latinska["ο"]="o" latinska["Π"]="P"; latinska["π"]="p" latinska["Ρ"]="R"; latinska["ρ"]="r" latinska["Σ"]="S"; latinska["σ"]="s"; latinska["ς"]="s" latinska["Τ"]="T"; latinska["τ"]="t" latinska["Υ"]="Y"; latinska["υ"]="y" latinska["Φ"]="F"; latinska["φ"]="f" latinska["Χ"]="Ch"; latinska["χ"]="ch" latinska["Ψ"]="Ps"; latinska["ψ"]="ps" latinska["Ω"]="Ō"; latinska["ω"]="ō" -- särvariant av sigma latinska["Ϲ"]="S"; latinska["ϲ"]="s" -- särvariant av beta latinska["ϐ"]="b" -- två arkaiska bokstäver latinska["Ϝ"]="W"; latinska["ϝ"]="w" latinska["Ϙ"]="Ḳ"; latinska["ϙ"]="ḳ" -- sen en separat tabell för att hålla reda på vilka som har "spiritus asper": spiritus_asper = { ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, } -- sen en separat tabell för versalerna: versaler = { ["Α"] = true, ["Ε"] = true, ["Η"] = true, ["Ι"] = true, ["Ο"] = true, ["Υ"] = true, ["Ω"] = true, ["ᾼ"] = true, ["ῌ"] = true, ["ῼ"] = true, ["Ρ"] = true, ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ὰ"] = true, ["Ὲ"] = true, ["Ὴ"] = true, ["Ὶ"] = true, ["Ὸ"] = true, ["Ὺ"] = true, ["Ὼ"] = true, ["Ἀ"] = true, ["Ἐ"] = true, ["Ἠ"] = true, ["Ἰ"] = true, ["Ὀ"] = true, ["Ὠ"] = true, ["ᾈ"] = true, ["ᾘ"] = true, ["ᾨ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἂ"] = true, ["Ἒ"] = true, ["Ἢ"] = true, ["Ἲ"] = true, ["Ὂ"] = true, ["Ὢ"] = true, ["ᾊ"] = true, ["ᾚ"] = true, ["ᾪ"] = true, ["Ἆ"] = true, ["Ἦ"] = true, ["Ἶ"] = true, ["Ὦ"] = true, ["ᾎ"] = true, ["ᾞ"] = true, ["ᾮ"] = true, ["Ἁ"] = true, ["Ἑ"] = true, ["Ἡ"] = true, ["Ἱ"] = true, ["Ὁ"] = true, ["Ὑ"] = true, ["Ὡ"] = true, ["ᾉ"] = true, ["ᾙ"] = true, ["ᾩ"] = true, ["Ῥ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["Ἃ"] = true, ["Ἓ"] = true, ["Ἣ"] = true, ["Ἳ"] = true, ["Ὃ"] = true, ["Ὓ"] = true, ["Ὣ"] = true, ["ᾋ"] = true, ["ᾛ"] = true, ["ᾫ"] = true, ["Ἇ"] = true, ["Ἧ"] = true, ["Ἷ"] = true, ["Ὗ"] = true, ["Ὧ"] = true, ["ᾏ"] = true, ["ᾟ"] = true, ["ᾯ"] = true, ["Ᾱ"] = true, ["Ῑ"] = true, ["Ῡ"] = true, ["Ᾰ"] = true, ["Ῐ"] = true, ["Ῠ"] = true, } -- sen en för gemenerna: gemener = { ["α"] = true, ["ε"] = true, ["η"] = true, ["ι"] = true, ["ο"] = true, ["υ"] = true, ["ω"] = true, ["ᾳ"] = true, ["ῃ"] = true, ["ῳ"] = true, ["ρ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ὰ"] = true, ["ὲ"] = true, ["ὴ"] = true, ["ὶ"] = true, ["ὸ"] = true, ["ὺ"] = true, ["ὼ"] = true, ["ᾲ"] = true, ["ῂ"] = true, ["ῲ"] = true, ["ᾶ"] = true, ["ῆ"] = true, ["ῖ"] = true, ["ῦ"] = true, ["ῶ"] = true, ["ᾷ"] = true, ["ῇ"] = true, ["ῷ"] = true, ["ἀ"] = true, ["ἐ"] = true, ["ἠ"] = true, ["ἰ"] = true, ["ὀ"] = true, ["ὐ"] = true, ["ὠ"] = true, ["ᾀ"] = true, ["ᾐ"] = true, ["ᾠ"] = true, ["ῤ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἂ"] = true, ["ἒ"] = true, ["ἢ"] = true, ["ἲ"] = true, ["ὂ"] = true, ["ὒ"] = true, ["ὢ"] = true, ["ᾂ"] = true, ["ᾒ"] = true, ["ᾢ"] = true, ["ἆ"] = true, ["ἦ"] = true, ["ἶ"] = true, ["ὖ"] = true, ["ὦ"] = true, ["ᾆ"] = true, ["ᾖ"] = true, ["ᾦ"] = true, ["ἁ"] = true, ["ἑ"] = true, ["ἡ"] = true, ["ἱ"] = true, ["ὁ"] = true, ["ὑ"] = true, ["ὡ"] = true, ["ᾁ"] = true, ["ᾑ"] = true, ["ᾡ"] = true, ["ῥ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ἃ"] = true, ["ἓ"] = true, ["ἣ"] = true, ["ἳ"] = true, ["ὃ"] = true, ["ὓ"] = true, ["ὣ"] = true, ["ᾃ"] = true, ["ᾓ"] = true, ["ᾣ"] = true, ["ἇ"] = true, ["ἧ"] = true, ["ἷ"] = true, ["ὗ"] = true, ["ὧ"] = true, ["ᾇ"] = true, ["ᾗ"] = true, ["ᾧ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, ["ᾱ"] = true, ["ῑ"] = true, ["ῡ"] = true, ["ᾰ"] = true, ["ῐ"] = true, ["ῠ"] = true, } -- sen en tabell för de med akut accent: akut_accent = { ["Ά"] = true, ["Έ"] = true, ["Ή"] = true, ["Ί"] = true, ["Ό"] = true, ["Ύ"] = true, ["Ώ"] = true, ["Ἄ"] = true, ["Ἔ"] = true, ["Ἤ"] = true, ["Ἴ"] = true, ["Ὄ"] = true, ["Ὤ"] = true, ["ᾌ"] = true, ["ᾜ"] = true, ["ᾬ"] = true, ["Ἅ"] = true, ["Ἕ"] = true, ["Ἥ"] = true, ["Ἵ"] = true, ["Ὅ"] = true, ["Ὕ"] = true, ["Ὥ"] = true, ["ᾍ"] = true, ["ᾝ"] = true, ["ᾭ"] = true, ["ά"] = true, ["έ"] = true, ["ή"] = true, ["ί"] = true, ["ό"] = true, ["ύ"] = true, ["ώ"] = true, ["ᾴ"] = true, ["ῄ"] = true, ["ῴ"] = true, ["ἄ"] = true, ["ἔ"] = true, ["ἤ"] = true, ["ἴ"] = true, ["ὄ"] = true, ["ὔ"] = true, ["ὤ"] = true, ["ᾄ"] = true, ["ᾔ"] = true, ["ᾤ"] = true, ["ἅ"] = true, ["ἕ"] = true, ["ἥ"] = true, ["ἵ"] = true, ["ὅ"] = true, ["ὕ"] = true, ["ὥ"] = true, ["ᾅ"] = true, ["ᾕ"] = true, ["ᾥ"] = true, ["ΐ"] = true, ["ΰ"] = true, } -- sen några separata tabeller för att hålla reda på vilken slags bokstav det är alfa = { ["α"] = true, ["𝛂"] = true, ["𝛼"] = true, ["𝜶"] = true, ["𝝰"] = true, ["𝞪"] = true, ["Α"] = true, ["𝚨"] = true, ["𝛢"] = true, ["𝜜"] = true, ["𝝖"] = true, ["𝞐"] = true, ["ἀ"] = true, ["Ἀ"] = true, ["ἄ"] = true, ["Ἄ"] = true, ["ᾄ"] = true, ["ᾌ"] = true, ["ἂ"] = true, ["Ἂ"] = true, ["ᾂ"] = true, ["ᾊ"] = true, ["ἆ"] = true, ["Ἆ"] = true, ["ᾆ"] = true, ["ᾎ"] = true, ["ᾀ"] = true, ["ᾈ"] = true, ["ἁ"] = true, ["Ἁ"] = true, ["ἅ"] = true, ["Ἅ"] = true, ["ᾅ"] = true, ["ᾍ"] = true, ["ἃ"] = true, ["Ἃ"] = true, ["ᾃ"] = true, ["ᾋ"] = true, ["ἇ"] = true, ["Ἇ"] = true, ["ᾇ"] = true, ["ᾏ"] = true, ["ᾁ"] = true, ["ᾉ"] = true, ["ά"] = true, ["ά"] = true, ["Ά"] = true, ["Ά"] = true, ["ᾴ"] = true, ["ὰ"] = true, ["Ὰ"] = true, ["ᾲ"] = true, ["ᾰ"] = true, ["Ᾰ"] = true, ["ᾶ"] = true, ["ᾷ"] = true, ["ᾱ"] = true, ["Ᾱ"] = true, ["ᾳ"] = true, ["ᾼ"] = true, } gamma = { ["γ"] = true, ["𝛄"] = true, ["𝛾"] = true, ["𝜸"] = true, ["𝝲"] = true, ["𝞬"] = true, ["Γ"] = true, ["𝚪"] = true, ["𝛤"] = true, ["𝜞"] = true, ["𝝘"] = true, ["𝞒"] = true, ["ℽ"] = true, ["ℾ"] = true, ["ᵞ"] = true, ["ᵧ"] = true, ["ᴦ"] = true, } epsilon = { ["ε"] = true, ["ϵ"] = true, ["𝛆"] = true, ["𝛜"] = true, ["𝜀"] = true, ["𝜖"] = true, ["𝜺"] = true, ["𝝐"] = true, ["𝝴"] = true, ["𝞊"] = true, ["𝞮"] = true, ["𝟄"] = true, ["Ε"] = true, ["𝚬"] = true, ["𝛦"] = true, ["𝜠"] = true, ["𝝚"] = true, ["𝞔"] = true, ["ἐ"] = true, ["Ἐ"] = true, ["ἔ"] = true, ["Ἔ"] = true, ["ἒ"] = true, ["Ἒ"] = true, ["ἑ"] = true, ["Ἑ"] = true, ["ἕ"] = true, ["Ἕ"] = true, ["ἓ"] = true, ["Ἓ"] = true, ["έ"] = true, ["έ"] = true, ["Έ"] = true, ["Έ"] = true, ["ὲ"] = true, ["Ὲ"] = true, } eta = { ["η"] = true, ["𝛈"] = true, ["𝜂"] = true, ["𝜼"] = true, ["𝝶"] = true, ["𝞰"] = true, ["Η"] = true, ["𝚮"] = true, ["𝛨"] = true, ["𝜢"] = true, ["𝝜"] = true, ["𝞖"] = true, ["ἠ"] = true, ["Ἠ"] = true, ["ἤ"] = true, ["Ἤ"] = true, ["ᾔ"] = true, ["ᾜ"] = true, ["ἢ"] = true, ["Ἢ"] = true, ["ᾒ"] = true, ["ᾚ"] = true, ["ἦ"] = true, ["Ἦ"] = true, ["ᾖ"] = true, ["ᾞ"] = true, ["ᾐ"] = true, ["ᾘ"] = true, ["ἡ"] = true, ["Ἡ"] = true, ["ἥ"] = true, ["Ἥ"] = true, ["ᾕ"] = true, ["ᾝ"] = true, ["ἣ"] = true, ["Ἣ"] = true, ["ᾓ"] = true, ["ᾛ"] = true, ["ἧ"] = true, ["Ἧ"] = true, ["ᾗ"] = true, ["ᾟ"] = true, ["ᾑ"] = true, ["ᾙ"] = true, ["ή"] = true, ["ή"] = true, ["Ή"] = true, ["Ή"] = true, ["ῄ"] = true, ["ὴ"] = true, ["Ὴ"] = true, ["ῂ"] = true, ["ῆ"] = true, ["ῇ"] = true, ["ῃ"] = true, ["ῌ"] = true, } jota = { ["ι"] = true, ["𝛊"] = true, ["𝜄"] = true, ["𝜾"] = true, ["𝝸"] = true, ["𝞲"] = true, ["Ι"] = true, ["𝚰"] = true, ["𝛪"] = true, ["𝜤"] = true, ["𝝞"] = true, ["𝞘"] = true, ["ἰ"] = true, ["Ἰ"] = true, ["ἴ"] = true, ["Ἴ"] = true, ["ἲ"] = true, ["Ἲ"] = true, ["ἶ"] = true, ["Ἶ"] = true, ["ἱ"] = true, ["Ἱ"] = true, ["ἵ"] = true, ["Ἵ"] = true, ["ἳ"] = true, ["Ἳ"] = true, ["ἷ"] = true, ["Ἷ"] = true, ["ί"] = true, ["ί"] = true, ["Ί"] = true, ["Ί"] = true, ["ὶ"] = true, ["Ὶ"] = true, ["ῐ"] = true, ["Ῐ"] = true, ["ῖ"] = true, ["ϊ"] = true, ["Ϊ"] = true, ["ΐ"] = true, ["ΐ"] = true, ["ῒ"] = true, ["ῗ"] = true, ["ῑ"] = true, ["Ῑ"] = true, ["ι"] = true, ["ͺ"] = true, } xi = { ["ξ"] = true, ["𝛏"] = true, ["𝜉"] = true, ["𝝃"] = true, ["𝝽"] = true, ["𝞷"] = true, ["Ξ"] = true, ["𝚵"] = true, ["𝛯"] = true, ["𝜩"] = true, ["𝝣"] = true, ["𝞝"] = true, } omikron = { ["ο"] = true, ["𝛐"] = true, ["𝜊"] = true, ["𝝄"] = true, ["𝝾"] = true, ["𝞸"] = true, ["Ο"] = true, ["𝚶"] = true, ["𝛰"] = true, ["𝜪"] = true, ["𝝤"] = true, ["𝞞"] = true, ["ὀ"] = true, ["Ὀ"] = true, ["ὄ"] = true, ["Ὄ"] = true, ["ὂ"] = true, ["Ὂ"] = true, ["ὁ"] = true, ["Ὁ"] = true, ["ὅ"] = true, ["Ὅ"] = true, ["ὃ"] = true, ["Ὃ"] = true, ["ό"] = true, ["ό"] = true, ["Ό"] = true, ["Ό"] = true, ["ὸ"] = true, ["Ὸ"] = true, } rho = { ["ρ"] = true, ["ϱ"] = true, ["𝛒"] = true, ["𝛠"] = true, ["𝜌"] = true, ["𝜚"] = true, ["𝝆"] = true, ["𝝔"] = true, ["𝞀"] = true, ["𝞎"] = true, ["𝞺"] = true, ["𝟈"] = true, ["Ρ"] = true, ["𝚸"] = true, ["𝛲"] = true, ["𝜬"] = true, ["𝝦"] = true, ["𝞠"] = true, ["ᵨ"] = true, ["ῤ"] = true, ["ῥ"] = true, ["Ῥ"] = true, ["ᴩ"] = true, ["ϼ"] = true, } ypsilon = { ["υ"] = true, ["𝛖"] = true, ["𝜐"] = true, ["𝝊"] = true, ["𝞄"] = true, ["𝞾"] = true, ["Υ"] = true, ["ϒ"] = true, ["𝚼"] = true, ["𝛶"] = true, ["𝜰"] = true, ["𝝪"] = true, ["𝞤"] = true, ["ὐ"] = true, ["ὔ"] = true, ["ὒ"] = true, ["ὖ"] = true, ["ὑ"] = true, ["Ὑ"] = true, ["ὕ"] = true, ["Ὕ"] = true, ["ὓ"] = true, ["Ὓ"] = true, ["ὗ"] = true, ["Ὗ"] = true, ["ύ"] = true, ["ύ"] = true, ["Ύ"] = true, ["Ύ"] = true, ["ϓ"] = true, ["ὺ"] = true, ["Ὺ"] = true, ["ῠ"] = true, ["Ῠ"] = true, ["ῦ"] = true, ["ϋ"] = true, ["Ϋ"] = true, ["ϔ"] = true, ["ΰ"] = true, ["ΰ"] = true, ["ῢ"] = true, ["ῧ"] = true, ["ῡ"] = true, ["Ῡ"] = true, } chi = { ["χ"] = true, ["𝛘"] = true, ["𝜒"] = true, ["𝝌"] = true, ["𝞆"] = true, ["𝟀"] = true, ["Χ"] = true, ["𝚾"] = true, ["𝛸"] = true, ["𝜲"] = true, ["𝝬"] = true, ["𝞦"] = true, ["ᵡ"] = true, ["ᵪ"] = true } omega = { ["ω"] = true, ["𝛚"] = true, ["𝜔"] = true, ["𝝎"] = true, ["𝞈"] = true, ["𝟂"] = true, ["Ω"] = true, ["𝛀"] = true, ["𝛺"] = true, ["𝜴"] = true, ["𝝮"] = true, ["𝞨"] = true, ["ὠ"] = true, ["Ὠ"] = true, ["ὤ"] = true, ["Ὤ"] = true, ["ᾤ"] = true, ["ᾬ"] = true, ["ὢ"] = true, ["Ὢ"] = true, ["ᾢ"] = true, ["ᾪ"] = true, ["ὦ"] = true, ["Ὦ"] = true, ["ᾦ"] = true, ["ᾮ"] = true, ["ᾠ"] = true, ["ᾨ"] = true, ["ὡ"] = true, ["Ὡ"] = true, ["ὥ"] = true, ["Ὥ"] = true, ["ᾥ"] = true, ["ᾭ"] = true, ["ὣ"] = true, ["Ὣ"] = true, ["ᾣ"] = true, ["ᾫ"] = true, ["ὧ"] = true, ["Ὧ"] = true, ["ᾧ"] = true, ["ᾯ"] = true, ["ᾡ"] = true, ["ᾩ"] = true, ["ώ"] = true, ["ώ"] = true, ["Ώ"] = true, ["Ώ"] = true, ["ῴ"] = true, ["ὼ"] = true, ["Ὼ"] = true, ["ῲ"] = true, ["ῶ"] = true, ["ῷ"] = true, ["ῳ"] = true, ["ῼ"] = true, ["ꭥ"] = true, ["Ω"] = true, ["㏀"] = true, ["㏁"] = true, } -- de som har två prickar ovanför vokalen hiatus = { ["Ϊ"] = true, ["Ϋ"] = true, ["ϊ"] = true, ["ϋ"] = true, ["ΐ"] = true, ["ΰ"] = true, ["ῒ"] = true, ["ῢ"] = true, ["ῗ"] = true, ["ῧ"] = true, } -- generera tabellen för de övriga bokstäverna med diverse diakritiska tecken for i,v in pairs(versaler) do if(alfa[i]) then latinska[i] = latinska["Α"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["α"] end elseif(epsilon[i]) then latinska[i] = latinska["Ε"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ε"] end elseif(eta[i]) then latinska[i] = latinska["Η"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["η"] end elseif(jota[i]) then latinska[i] = latinska["Ι"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ι"] end elseif(omikron[i]) then latinska[i] = latinska["Ο"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["Ρ"] if(spiritus_asper[i]) then latinska[i] = latinska[i].."h" end elseif(ypsilon[i]) then latinska[i] = latinska["Υ"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["υ"] end elseif(omega[i]) then latinska[i] = latinska["Ω"] if(spiritus_asper[i]) then latinska[i] = "H"..latinska["ω"] end end end for i,v in pairs(gemener) do if(alfa[i]) then if (akut_accent[i]) then latinska[i] = "á" else latinska[i] = latinska["α"] end elseif(epsilon[i]) then if (akut_accent[i]) then latinska[i] = "é" else latinska[i] = latinska["ε"] end elseif(eta[i]) then if (akut_accent[i]) then latinska[i] = "ḗ" else latinska[i] = latinska["η"] end elseif(jota[i]) then if (akut_accent[i]) then latinska[i] = "í" else latinska[i] = latinska["ι"] end elseif(omikron[i]) then if (akut_accent[i]) then latinska[i] = "ó" else latinska[i] = latinska["ο"] end elseif(rho[i]) then latinska[i] = latinska["ρ"] elseif(ypsilon[i]) then if (akut_accent[i]) then latinska[i] = "ý" else latinska[i] = latinska["υ"] end elseif(omega[i]) then if (akut_accent[i]) then latinska[i] = "ṓ" else latinska[i] = latinska["ω"] end end if(spiritus_asper[i]) then if(rho[i]) then latinska[i] = latinska[i].."h" else latinska[i] = "h"..latinska[i] end end end -- Fem köfunktioner function enqueue(q, val) q.last = q.last + 1 q.data[q.last] = val end function dequeue(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] q.data[q.first] = nil q.first = q.first + 1 end return rval end function peekonce(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.first] end return rval end function peektwice(q) local rval if (q.first+1 > q.last) then rval = -1 else rval = q.data[q.first+1] end return rval end function peeklast(q) local rval if (q.first > q.last) then rval = -1 else rval = q.data[q.last] end return rval end -- Själva transkriberingsfunktionen för forngrekiska function transkribera_grc(text) -- Två köer: en för grekiska bokstäver och en för latinska bokstäver indata = {} indata.first = 0 indata.last = -1 indata.data = {} utdata = {} utdata.first = 0 utdata.last = -1 utdata.data = {} -- en separat kö att returnera på slutet local returndata = {} for c in string.gmatch(text, ".[\128-\191]*") do enqueue(indata, c) end repeat local x = dequeue(indata) local y = peekonce(indata) local z = peektwice(indata) local u = peeklast(utdata) if (latinska[x] == nil) then -- icke-grekiskt tecken enqueue(utdata, x) -- diverse undantag, startar med "spiritus asper" som del av en diftong elseif (((u == -1) or string.match(u," ")) and spiritus_asper[y]) then enqueue(utdata, string.sub(latinska[y],1,1)) -- versalt "H" eller gement "h" if (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, latinska[x]) end if ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end else enqueue(utdata, string.sub(latinska[y],2)) end dequeue(indata) -- sen diftongerna "αυ", "ευ", "ηυ", "ου", "ωυ" elseif ((alfa[x] or epsilon[x] or eta[x] or omikron[x] or omega[x]) and ypsilon[y] and (not hiatus[y])) then enqueue(utdata, latinska[x]) if(akut_accent[y]) then enqueue(utdata, "ú") else enqueue(utdata, "u") end dequeue(indata) -- sen diftongen "υι" elseif (ypsilon[x] and jota[y] and (not hiatus[y])) then if(akut_accent[x] and spiritus_asper[x]) then enqueue(utdata, "hú") elseif(akut_accent[x]) then enqueue(utdata, "ú") elseif(spiritus_asper[x]) then enqueue(utdata, "hu") else enqueue(utdata, "u") end enqueue(utdata, latinska[y]) dequeue(indata) -- sen bokstavsföljden "γγ" elseif (gamma[x] and gamma[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["γ"]) dequeue(indata) -- sen bokstavsföljden "γξ" elseif (gamma[x] and xi[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["ξ"]) dequeue(indata) -- sen bokstavsföljden "γχ" elseif (gamma[x] and chi[y]) then enqueue(utdata,"n") enqueue(utdata,latinska["χ"]) dequeue(indata) -- sen, när "spiritus asper" hanteras med modifierare elseif (string.match(y,"̔")) then enqueue(utdata, "h") -- TODO!!! Kan detta vara versalt "H"? Diftonger? enqueue(utdata, latinska[x]) dequeue(indata) else enqueue(utdata, latinska[x]) end until (indata.first > indata.last) repeat local x = dequeue(utdata) table.insert(returndata,x) until (utdata.first > utdata.last) return returndata end --[[ function export.transkribera( argument ) local text = argument.args["text"] outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end --]] function export.tr( argument ) local text = argument outputdata = transkribera_grc(text) outputtext = table.concat(outputdata,"") return outputtext end return export nawaborz1hjwukq56ofms54rth4rhgo Modul:translit 828 928924 3703211 3703185 2022-08-18T12:19:45Z Gabbe 1153 lägger till även "grc" på prov Scribunto text/plain -- Denna modul fungerar som ett "paraply" för mer specifika transkriberingsmoduler. -- Dessa har alla namn av formatet "Modul:translit/[språkkod]" -- -- Syftet med denna modul är att kunna åberopas av mallen {{tr}} -- samt eventuellt av andra moduler local export = {} export.available_lang = function ( lang ) working_lang = { ["ru"] = true, ["be"] = true, ["bg"] = true, ["uk"] = true, ["grc"] = true, --["ar"] = true, } return not (not working_lang[lang]) end export.tr = function ( argument ) local langcode = argument.args["lang"] local text = argument.args["text"] local utdata = "" if export.available_lang(langcode) then local tr_modul = require("Modul:translit/"..langcode) utdata = tr_modul.tr (text) end--if return utdata end return export 8yq1qird0v3be9g53c1gxj7zj43oi8x Modul:translit/ru/test 828 928999 3703300 3703157 2022-08-19T00:03:36Z Dodde 309 börjar på tester för isolerade tecken, börjar på tester för ord med bara versaler vs ord med både versaler och gemener som innehåller tecken som translittereras till mutipla tecken Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/ru") function t:test1_isolated_uppercase_characters() self:equals('mut.tr("А,Б,В,Г,Д")', mut.tr("А,Б,В,Г,Д"), "A,B,V,G,D") self:equals('mut.tr("Е,Ё,Ж,З,И")', mut.tr("Е,Ё,Ж,З,И"), "JE,JO,ZJ,Z,I") -- etc... end function t:test2_isolated_lowercase_characters() self:equals('mut.tr("а,б,в,г,д")', mut.tr("а,б,в,г,д"), "a,b,v,g,d") self:equals('mut.tr("е,ё,ж,з,и")', mut.tr("е,ё,ж,з,и"), "je,jo,zj,z,i") -- etc... end function t:test3_uppercase_vs_mixedcase_words() self:equals('mut.tr("ЖА,Жa")', mut.tr("ЖА,Жa"), "ZJA,Zja") -- etc... (alla tecken som translittererar till multipla tecken) end function t:test4_example() self:equals('mut.tr("Горбачёв")', mut.tr("Горбачёв"), "Gorbatjóv") end function t:test5_example() -- de från Svenska skrivregler self:equals('mut.tr("Анна")', mut.tr("Анна"), "Anna") self:equals('mut.tr("Борис")', mut.tr("Борис"), "Boris") self:equals('mut.tr("Волга")', mut.tr("Волга"), "Volga") self:equals('mut.tr("Горький")', mut.tr("Горький"), "Gorkij") self:equals('mut.tr("Дон")', mut.tr("Дон"), "Don") self:equals('mut.tr("Афанасьев")', mut.tr("Афанасьев"), "Afanasiev") self:equals('mut.tr("Днепр")', mut.tr("Днепр"), "Dnepr") self:equals('mut.tr("Евгений")', mut.tr("Евгений"), "Jevgenij") self:equals('mut.tr("Алексеев")', mut.tr("Алексеев"), "Aleksejev") self:equals('mut.tr("Кондратьев")', mut.tr("Кондратьев"), "Kondratiev") self:equals('mut.tr("Чёрный")', mut.tr("Чёрный"), "Tjórnyj") self:equals('mut.tr("Аксёнов")', mut.tr("Аксёнов"), "Aksiónov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Пётр")', mut.tr("Пётр"), "Pjotr") self:equals('mut.tr("Зёрнов")', mut.tr("Зёрнов"), "Ziórnov") self:equals('mut.tr("Щёлкин")', mut.tr("Щёлкин"), "Sjtjólkin") self:equals('mut.tr("Жуковский")', mut.tr("Жуковский"), "Zjukovskij") self:equals('mut.tr("Замятин")', mut.tr("Замятин"), "Zamjatin") self:equals('mut.tr("Ирина")', mut.tr("Ирина"), "Irina") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin") self:equals('mut.tr("Лесков")', mut.tr("Лесков"), "Leskov") self:equals('mut.tr("Максим")', mut.tr("Максим"), "Maksim") self:equals('mut.tr("Надя")', mut.tr("Надя"), "Nadja") self:equals('mut.tr("Онега")', mut.tr("Онега"), "Onega") self:equals('mut.tr("Пушкин")', mut.tr("Пушкин"), "Pusjkin") self:equals('mut.tr("Ростропович")', mut.tr("Ростропович"), "Rostropovitj") self:equals('mut.tr("Самара")', mut.tr("Самара"), "Samara") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Устинов")', mut.tr("Устинов"), "Ustinov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Тихонов")', mut.tr("Тихонов"), "Tichonov") self:equals('mut.tr("Донец")', mut.tr("Донец"), "Donets") self:equals('mut.tr("Чайковский")', mut.tr("Чайковский"), "Tjajkovskij") self:equals('mut.tr("Шостакович")', mut.tr("Шостакович"), "Sjostakovitj") self:equals('mut.tr("Щедрин")', mut.tr("Щедрин"), "Sjtjedrin") self:equals('mut.tr("Подъячев")', mut.tr("Подъячев"), "Podjatjev") self:equals('mut.tr("Белый")', mut.tr("Белый"), "Belyj") self:equals('mut.tr("Ильич")', mut.tr("Ильич"), "Iljitj") self:equals('mut.tr("Игорь")', mut.tr("Игорь"), "Igor") self:equals('mut.tr("Эдуард")', mut.tr("Эдуард"), "Eduard") self:equals('mut.tr("Юрий")', mut.tr("Юрий"), "Jurij") self:equals('mut.tr("Актюбинск")', mut.tr("Актюбинск"), "Aktiubinsk") self:equals('mut.tr("Союз")', mut.tr("Союз"), "Sojuz") self:equals('mut.tr("Татьяна")', mut.tr("Татьяна"), "Tatiana") self:equals('mut.tr("Зябков")', mut.tr("Зябков"), "Ziabkov") self:equals('mut.tr("Ярослав")', mut.tr("Ярослав"), "Jaroslav") end return t ai4bduh541ev5iegd0swa4ebi9m443b 3703351 3703300 2022-08-19T09:36:43Z Dodde 309 korrigerar förväntade testresultat enligt vad som förklarats på diskussionssidan (Ж -> Zj, inte ZJ, oavsett ordets övriga tecken är versaler eller gemener) Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/ru") function t:test1_isolated_uppercase_characters() self:equals('mut.tr("А,Б,В,Г,Д")', mut.tr("А,Б,В,Г,Д"), "A,B,V,G,D") self:equals('mut.tr("Е,Ё,Ж,З,И")', mut.tr("Е,Ё,Ж,З,И"), "Je,Jo,Zj,Z,I") -- etc... end function t:test2_isolated_lowercase_characters() self:equals('mut.tr("а,б,в,г,д")', mut.tr("а,б,в,г,д"), "a,b,v,g,d") self:equals('mut.tr("е,ё,ж,з,и")', mut.tr("е,ё,ж,з,и"), "je,jo,zj,z,i") -- etc... end function t:test3_uppercase_vs_mixedcase_words() self:equals('mut.tr("ЖА,Жa")', mut.tr("ЖА,Жa"), "ZjA,Zja") -- etc... (alla tecken som translittererar till multipla tecken) end function t:test4_example() self:equals('mut.tr("Горбачёв")', mut.tr("Горбачёв"), "Gorbatjóv") end function t:test5_example() -- de från Svenska skrivregler self:equals('mut.tr("Анна")', mut.tr("Анна"), "Anna") self:equals('mut.tr("Борис")', mut.tr("Борис"), "Boris") self:equals('mut.tr("Волга")', mut.tr("Волга"), "Volga") self:equals('mut.tr("Горький")', mut.tr("Горький"), "Gorkij") self:equals('mut.tr("Дон")', mut.tr("Дон"), "Don") self:equals('mut.tr("Афанасьев")', mut.tr("Афанасьев"), "Afanasiev") self:equals('mut.tr("Днепр")', mut.tr("Днепр"), "Dnepr") self:equals('mut.tr("Евгений")', mut.tr("Евгений"), "Jevgenij") self:equals('mut.tr("Алексеев")', mut.tr("Алексеев"), "Aleksejev") self:equals('mut.tr("Кондратьев")', mut.tr("Кондратьев"), "Kondratiev") self:equals('mut.tr("Чёрный")', mut.tr("Чёрный"), "Tjórnyj") self:equals('mut.tr("Аксёнов")', mut.tr("Аксёнов"), "Aksiónov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Пётр")', mut.tr("Пётр"), "Pjotr") self:equals('mut.tr("Зёрнов")', mut.tr("Зёрнов"), "Ziórnov") self:equals('mut.tr("Щёлкин")', mut.tr("Щёлкин"), "Sjtjólkin") self:equals('mut.tr("Жуковский")', mut.tr("Жуковский"), "Zjukovskij") self:equals('mut.tr("Замятин")', mut.tr("Замятин"), "Zamjatin") self:equals('mut.tr("Ирина")', mut.tr("Ирина"), "Irina") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin") self:equals('mut.tr("Лесков")', mut.tr("Лесков"), "Leskov") self:equals('mut.tr("Максим")', mut.tr("Максим"), "Maksim") self:equals('mut.tr("Надя")', mut.tr("Надя"), "Nadja") self:equals('mut.tr("Онега")', mut.tr("Онега"), "Onega") self:equals('mut.tr("Пушкин")', mut.tr("Пушкин"), "Pusjkin") self:equals('mut.tr("Ростропович")', mut.tr("Ростропович"), "Rostropovitj") self:equals('mut.tr("Самара")', mut.tr("Самара"), "Samara") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Устинов")', mut.tr("Устинов"), "Ustinov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Тихонов")', mut.tr("Тихонов"), "Tichonov") self:equals('mut.tr("Донец")', mut.tr("Донец"), "Donets") self:equals('mut.tr("Чайковский")', mut.tr("Чайковский"), "Tjajkovskij") self:equals('mut.tr("Шостакович")', mut.tr("Шостакович"), "Sjostakovitj") self:equals('mut.tr("Щедрин")', mut.tr("Щедрин"), "Sjtjedrin") self:equals('mut.tr("Подъячев")', mut.tr("Подъячев"), "Podjatjev") self:equals('mut.tr("Белый")', mut.tr("Белый"), "Belyj") self:equals('mut.tr("Ильич")', mut.tr("Ильич"), "Iljitj") self:equals('mut.tr("Игорь")', mut.tr("Игорь"), "Igor") self:equals('mut.tr("Эдуард")', mut.tr("Эдуард"), "Eduard") self:equals('mut.tr("Юрий")', mut.tr("Юрий"), "Jurij") self:equals('mut.tr("Актюбинск")', mut.tr("Актюбинск"), "Aktiubinsk") self:equals('mut.tr("Союз")', mut.tr("Союз"), "Sojuz") self:equals('mut.tr("Татьяна")', mut.tr("Татьяна"), "Tatiana") self:equals('mut.tr("Зябков")', mut.tr("Зябков"), "Ziabkov") self:equals('mut.tr("Ярослав")', mut.tr("Ярослав"), "Jaroslav") end return t rriup1lcfu52mapx3lmr4lc43rpwr8m 3703360 3703351 2022-08-19T11:05:46Z Gabbe 1153 la till ett några stycken Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/ru") function t:test1_isolated_uppercase_characters() self:equals('mut.tr("А,Б,В,Г,Д")', mut.tr("А,Б,В,Г,Д"), "A,B,V,G,D") self:equals('mut.tr("Е,Ё,Ж,З,И")', mut.tr("Е,Ё,Ж,З,И"), "Je,Jo,Zj,Z,I") -- etc... end function t:test2_isolated_lowercase_characters() self:equals('mut.tr("а,б,в,г,д")', mut.tr("а,б,в,г,д"), "a,b,v,g,d") self:equals('mut.tr("е,ё,ж,з,и")', mut.tr("е,ё,ж,з,и"), "je,jo,zj,z,i") -- etc... end function t:test3_uppercase_vs_mixedcase_words() self:equals('mut.tr("ЖА,Жa")', mut.tr("ЖА,Жa"), "ZjA,Zja") -- etc... (alla tecken som translittererar till multipla tecken) end function t:test4_example() self:equals('mut.tr("Горбачёв")', mut.tr("Горбачёв"), "Gorbatjóv") end function t:test5_example() -- de från Svenska skrivregler self:equals('mut.tr("Анна")', mut.tr("Анна"), "Anna") self:equals('mut.tr("Борис")', mut.tr("Борис"), "Boris") self:equals('mut.tr("Волга")', mut.tr("Волга"), "Volga") self:equals('mut.tr("Горький")', mut.tr("Горький"), "Gorkij") self:equals('mut.tr("Дон")', mut.tr("Дон"), "Don") self:equals('mut.tr("Афанасьев")', mut.tr("Афанасьев"), "Afanasiev") self:equals('mut.tr("Днепр")', mut.tr("Днепр"), "Dnepr") self:equals('mut.tr("Евгений")', mut.tr("Евгений"), "Jevgenij") self:equals('mut.tr("Алексеев")', mut.tr("Алексеев"), "Aleksejev") self:equals('mut.tr("Кондратьев")', mut.tr("Кондратьев"), "Kondratiev") self:equals('mut.tr("Чёрный")', mut.tr("Чёрный"), "Tjórnyj") self:equals('mut.tr("Аксёнов")', mut.tr("Аксёнов"), "Aksiónov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Пётр")', mut.tr("Пётр"), "Pjotr") self:equals('mut.tr("Зёрнов")', mut.tr("Зёрнов"), "Ziórnov") self:equals('mut.tr("Щёлкин")', mut.tr("Щёлкин"), "Sjtjólkin") self:equals('mut.tr("Жуковский")', mut.tr("Жуковский"), "Zjukovskij") self:equals('mut.tr("Замятин")', mut.tr("Замятин"), "Zamjatin") self:equals('mut.tr("Ирина")', mut.tr("Ирина"), "Irina") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin") self:equals('mut.tr("Лесков")', mut.tr("Лесков"), "Leskov") self:equals('mut.tr("Максим")', mut.tr("Максим"), "Maksim") self:equals('mut.tr("Надя")', mut.tr("Надя"), "Nadja") self:equals('mut.tr("Онега")', mut.tr("Онега"), "Onega") self:equals('mut.tr("Пушкин")', mut.tr("Пушкин"), "Pusjkin") self:equals('mut.tr("Ростропович")', mut.tr("Ростропович"), "Rostropovitj") self:equals('mut.tr("Самара")', mut.tr("Самара"), "Samara") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Устинов")', mut.tr("Устинов"), "Ustinov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Тихонов")', mut.tr("Тихонов"), "Tichonov") self:equals('mut.tr("Донец")', mut.tr("Донец"), "Donets") self:equals('mut.tr("Чайковский")', mut.tr("Чайковский"), "Tjajkovskij") self:equals('mut.tr("Шостакович")', mut.tr("Шостакович"), "Sjostakovitj") self:equals('mut.tr("Щедрин")', mut.tr("Щедрин"), "Sjtjedrin") self:equals('mut.tr("Подъячев")', mut.tr("Подъячев"), "Podjatjev") self:equals('mut.tr("Белый")', mut.tr("Белый"), "Belyj") self:equals('mut.tr("Ильич")', mut.tr("Ильич"), "Iljitj") self:equals('mut.tr("Игорь")', mut.tr("Игорь"), "Igor") self:equals('mut.tr("Эдуард")', mut.tr("Эдуард"), "Eduard") self:equals('mut.tr("Юрий")', mut.tr("Юрий"), "Jurij") self:equals('mut.tr("Актюбинск")', mut.tr("Актюбинск"), "Aktiubinsk") self:equals('mut.tr("Союз")', mut.tr("Союз"), "Sojuz") self:equals('mut.tr("Татьяна")', mut.tr("Татьяна"), "Tatiana") self:equals('mut.tr("Зябков")', mut.tr("Зябков"), "Ziabkov") self:equals('mut.tr("Ярослав")', mut.tr("Ярослав"), "Jaroslav") end function t:test6_automatically_accentuate_polysyllabic_yo() self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Пётр")', mut.tr("Пётр"), "Pjotr") end function t:test7_never_treat_e_like_yo() self:equals('mut.tr("Пeтр")', mut.tr("Пeтр"), "Petr") end return t g05gxi2j7rhlna406gt22ug8vryh9s2 3703362 3703360 2022-08-19T11:27:19Z Gabbe 1153 la till ett par ytterligare Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/ru") function t:test1_isolated_uppercase_characters() self:equals('mut.tr("А,Б,В,Г,Д")', mut.tr("А,Б,В,Г,Д"), "A,B,V,G,D") self:equals('mut.tr("Е,Ё,Ж,З,И")', mut.tr("Е,Ё,Ж,З,И"), "Je,Jo,Zj,Z,I") -- etc... end function t:test2_isolated_lowercase_characters() self:equals('mut.tr("а,б,в,г,д")', mut.tr("а,б,в,г,д"), "a,b,v,g,d") self:equals('mut.tr("е,ё,ж,з,и")', mut.tr("е,ё,ж,з,и"), "je,jo,zj,z,i") -- etc... end function t:test3_uppercase_vs_mixedcase_words() self:equals('mut.tr("ЖА,Жa")', mut.tr("ЖА,Жa"), "ZjA,Zja") -- etc... (alla tecken som translittererar till multipla tecken) end function t:test4_example() self:equals('mut.tr("Горбачёв")', mut.tr("Горбачёв"), "Gorbatjóv") end function t:test5_example() -- de från Svenska skrivregler self:equals('mut.tr("Анна")', mut.tr("Анна"), "Anna") self:equals('mut.tr("Борис")', mut.tr("Борис"), "Boris") self:equals('mut.tr("Волга")', mut.tr("Волга"), "Volga") self:equals('mut.tr("Горький")', mut.tr("Горький"), "Gorkij") self:equals('mut.tr("Дон")', mut.tr("Дон"), "Don") self:equals('mut.tr("Афанасьев")', mut.tr("Афанасьев"), "Afanasiev") self:equals('mut.tr("Днепр")', mut.tr("Днепр"), "Dnepr") self:equals('mut.tr("Евгений")', mut.tr("Евгений"), "Jevgenij") self:equals('mut.tr("Алексеев")', mut.tr("Алексеев"), "Aleksejev") self:equals('mut.tr("Кондратьев")', mut.tr("Кондратьев"), "Kondratiev") self:equals('mut.tr("Чёрный")', mut.tr("Чёрный"), "Tjórnyj") self:equals('mut.tr("Аксёнов")', mut.tr("Аксёнов"), "Aksiónov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Пётр")', mut.tr("Пётр"), "Pjotr") self:equals('mut.tr("Зёрнов")', mut.tr("Зёрнов"), "Ziórnov") self:equals('mut.tr("Щёлкин")', mut.tr("Щёлкин"), "Sjtjólkin") self:equals('mut.tr("Жуковский")', mut.tr("Жуковский"), "Zjukovskij") self:equals('mut.tr("Замятин")', mut.tr("Замятин"), "Zamjatin") self:equals('mut.tr("Ирина")', mut.tr("Ирина"), "Irina") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin") self:equals('mut.tr("Лесков")', mut.tr("Лесков"), "Leskov") self:equals('mut.tr("Максим")', mut.tr("Максим"), "Maksim") self:equals('mut.tr("Надя")', mut.tr("Надя"), "Nadja") self:equals('mut.tr("Онега")', mut.tr("Онега"), "Onega") self:equals('mut.tr("Пушкин")', mut.tr("Пушкин"), "Pusjkin") self:equals('mut.tr("Ростропович")', mut.tr("Ростропович"), "Rostropovitj") self:equals('mut.tr("Самара")', mut.tr("Самара"), "Samara") self:equals('mut.tr("Толстой")', mut.tr("Толстой"), "Tolstoj") self:equals('mut.tr("Устинов")', mut.tr("Устинов"), "Ustinov") self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Тихонов")', mut.tr("Тихонов"), "Tichonov") self:equals('mut.tr("Донец")', mut.tr("Донец"), "Donets") self:equals('mut.tr("Чайковский")', mut.tr("Чайковский"), "Tjajkovskij") self:equals('mut.tr("Шостакович")', mut.tr("Шостакович"), "Sjostakovitj") self:equals('mut.tr("Щедрин")', mut.tr("Щедрин"), "Sjtjedrin") self:equals('mut.tr("Подъячев")', mut.tr("Подъячев"), "Podjatjev") self:equals('mut.tr("Белый")', mut.tr("Белый"), "Belyj") self:equals('mut.tr("Ильич")', mut.tr("Ильич"), "Iljitj") self:equals('mut.tr("Игорь")', mut.tr("Игорь"), "Igor") self:equals('mut.tr("Эдуард")', mut.tr("Эдуард"), "Eduard") self:equals('mut.tr("Юрий")', mut.tr("Юрий"), "Jurij") self:equals('mut.tr("Актюбинск")', mut.tr("Актюбинск"), "Aktiubinsk") self:equals('mut.tr("Союз")', mut.tr("Союз"), "Sojuz") self:equals('mut.tr("Татьяна")', mut.tr("Татьяна"), "Tatiana") self:equals('mut.tr("Зябков")', mut.tr("Зябков"), "Ziabkov") self:equals('mut.tr("Ярослав")', mut.tr("Ярослав"), "Jaroslav") end function t:test6_automatically_accentuate_polysyllabic_yo() self:equals('mut.tr("Фёдор")', mut.tr("Фёдор"), "Fjódor") self:equals('mut.tr("Пётр")', mut.tr("Пётр"), "Pjotr") end function t:test7_never_treat_e_like_yo() self:equals('mut.tr("Пeтр")', mut.tr("Пeтр"), "Petr") end function t:test8_return_unaccentuated_from_unaccentuated_input() self:equals('mut.tr("замок")', mut.tr("замок"), "zamok") end function t:test9_pass_through_non_cyrillic_input() self:equals('mut.tr("IP-адрес")', mut.tr("IP-адрес"), "IP-adres") self:equals('mut.tr("β-распад")', mut.tr("β-распад"), "β-raspad") end return t eyfombxuftljkcd8gkqs52h8k6i2uij Moduldiskussion:translit/ru/test 829 929004 3703299 3703201 2022-08-19T00:01:08Z Dodde 309 /* Stilguide för moduler */ wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) 7kw9i7a83hedsmccc90f76w8djki45a 3703301 3703299 2022-08-19T03:51:33Z Dodde 309 /* Några funderingar om modulkoden */ nytt avsnitt wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) == Några funderingar om modulkoden == Har några funderingar om modulkoden och förslag på ändringar: 1. Varför inte ange argumentets namn direkt? <br><code>function export.tr( argument )</code> <br><code>local text = argument</code> <br>-> <br><code>function export.tr(text)</code> 2. a)Varför heter funktionen accentuera_jo och inte bara accentuera? Vad betyder jo? (föreslår att mellanslagen tas bort för enhetligt utseende). Också bra med engelska namn på funktioner. Kommentaren är vilseledande <br> <code>function accentuera_jo ( text )</code> <br>-> <br><code>function accentuate(text)</code> 3. Stilguiden rekommenderar kod utan kommentarer och erbjuder länkar till fördjupning om skälen till varför det är bra. Kan funktionens namn göras tydligare så slipper vi kommentarer helt. Kan man säga att man explicit lägger till accenter till textsträngen? I så fall kanske funktionen kan heta <br><code>function accentuate_explicitly(text)</code> 4. Bra med engelska namn på funktioner, och att ha "ru" i funktionsnamnet är överflödigt. <br><code>function transkribera_ru(text)</code> <br>-> <br><code>function transliterate(text)</code> 5. Att accentuera den ryska texten, är inte det en del av translitterationsprocessen? Isåfall kanske anropet till accentuera-funktionen ska flytta in i transliterate-funktionen. 6. Varför returnerar inte transliterate-funktionen det vi vill ha? Den returnerar en tabell som vi måste hantera och göra om till en textsträng. Det kan transliterate-funktionen ta hand om. En textsträng borde vi kunna få serverat på ett silverfat istället. Koden blir isåfall: <code>function export.tr(text) return transliterate(text) end</code> 7. Wow. Det enda tr-funktionen gör är att anropa transliterate-funktionen och returnera vad den funktionen returnerar. Nu blir det uppenbart att vi inte behöver nån transliterate-funktion då vi lika gärna kan placera koden direkt i tr-funktionen. 8. De där köfunktionerna verkar återanvändas i flera moduler. Det finns en programmeringsprincip som heter DIY - don't repeat yourself. De borde kanske brytas ut till en egen hjälpmodul? Samtidigt ser det rätt rörigt ut när de används. Man måste liksom veta vad koden är tänkt att göra för att förstå vad den gör. Jag undrar om det finns något alternativt angreppssätt. Kanske inte. Jag får fundera lite till. Man kan säkert fila på det lite grann, åtminstone. Men lättare när testerna är på plats... ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 05.51 (CEST) 8uqeiw6f4pzljuux37fmzw07drdd5s0 3703302 3703301 2022-08-19T06:07:11Z Gabbe 1153 några svar wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) :{{@|Dodde}}: Några kommentarer. Jag håller med om att en chatt skulle gå snabbare, men det är tyvärr inte ett alternativ för mig. Vidare angående (3) som är en viktig fråga: Normalt use-case på Wiktionary är ord med enbart gemener. Naturligtvis finns det många ord som innehåller versaler. Ett ord som ''[[кубик Рубика]]'', då ska stora bokstaven i andra ordet bli stor. Däremot är det mindre vanligt med ord som har två stora versaler på rad. I sådana fall är det vanligast (i den verkligen världen utanför Wiktionary) att ЖА blir ZjA. Detta för att förtydliga att "j":et inte är en oberoende bokstav. Eftersom det bara finns en stor bokstav innan A på kyrilliska bör texten med latinska bokstäver också bara ha en stor bokstav innan A:et. Det är det konventionella sättet att göra. När en stor bokstav på kyrilliska blir fler än en bokstav på latinska, då är det bara den första av de två bokstäverna som ska vara stor. Se till exempel inledningen till Wikipediasidan "[[w:en:Cheka|Cheka]]". Där blir förkortningen ВЧК till VChK (inte VCHK). På svenska är det vanligaste sättet att göra ВЧК till VTjK (inte VTJK), vilket min modul också gör idag. Det finns bara tre stora bokstäver på kyrilliska, därför finns det bara tre stora bokstäver på dess motsvarighet i latinska bokstäver. En person kan se VTjK på svenska och omedelbart fatta att det är en trebokstavsförkortning på ryska. Finns det välmotiverade argument till att "VTJK" skulle vara det konventionella sättet att göra på i svenska så är jag lyhörd för det. Annars lägger jag till att ВЧК ska bli VTjK som en rad i "/test", samt tar bort "JE,JO,ZJ,ZJA". Min uppfattning är att de senare är felaktiga allihopa. :Det är naturligtvis okej att du ändrar i mallar och moduler direkt! {{=)}} Det här är ju en wiki, trots allt. Jag "äger" inte något av detta. Om du gör en ändring som jag uppfattar som en förändring till det sämre kan jag ju alltid revert:a. :Jag kan lägga till fler rader som förtydligar exakt vad varje test testar för något. Jag antar att det är via funktionsnamnet på engelska som det ska klargöras (som du gjorde)? Fem och fem låter förståndigt. Finns det något tak på hur många tester testsidan kan innehålla? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) == Några funderingar om modulkoden == Har några funderingar om modulkoden och förslag på ändringar: 1. Varför inte ange argumentets namn direkt? <br><code>function export.tr( argument )</code> <br><code>local text = argument</code> <br>-> <br><code>function export.tr(text)</code> 2. a)Varför heter funktionen accentuera_jo och inte bara accentuera? Vad betyder jo? (föreslår att mellanslagen tas bort för enhetligt utseende). Också bra med engelska namn på funktioner. Kommentaren är vilseledande <br> <code>function accentuera_jo ( text )</code> <br>-> <br><code>function accentuate(text)</code> 3. Stilguiden rekommenderar kod utan kommentarer och erbjuder länkar till fördjupning om skälen till varför det är bra. Kan funktionens namn göras tydligare så slipper vi kommentarer helt. Kan man säga att man explicit lägger till accenter till textsträngen? I så fall kanske funktionen kan heta <br><code>function accentuate_explicitly(text)</code> 4. Bra med engelska namn på funktioner, och att ha "ru" i funktionsnamnet är överflödigt. <br><code>function transkribera_ru(text)</code> <br>-> <br><code>function transliterate(text)</code> 5. Att accentuera den ryska texten, är inte det en del av translitterationsprocessen? Isåfall kanske anropet till accentuera-funktionen ska flytta in i transliterate-funktionen. 6. Varför returnerar inte transliterate-funktionen det vi vill ha? Den returnerar en tabell som vi måste hantera och göra om till en textsträng. Det kan transliterate-funktionen ta hand om. En textsträng borde vi kunna få serverat på ett silverfat istället. Koden blir isåfall: <code>function export.tr(text) return transliterate(text) end</code> 7. Wow. Det enda tr-funktionen gör är att anropa transliterate-funktionen och returnera vad den funktionen returnerar. Nu blir det uppenbart att vi inte behöver nån transliterate-funktion då vi lika gärna kan placera koden direkt i tr-funktionen. 8. De där köfunktionerna verkar återanvändas i flera moduler. Det finns en programmeringsprincip som heter DIY - don't repeat yourself. De borde kanske brytas ut till en egen hjälpmodul? Samtidigt ser det rätt rörigt ut när de används. Man måste liksom veta vad koden är tänkt att göra för att förstå vad den gör. Jag undrar om det finns något alternativt angreppssätt. Kanske inte. Jag får fundera lite till. Man kan säkert fila på det lite grann, åtminstone. Men lättare när testerna är på plats... ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 05.51 (CEST) :{{@|Dodde}}: Jag har ännu inte hunnit översatt alla variabel- och funktionsnamn till engelska. Jag har för avsikt att hinna färdigt med det innan månaden är slut. Funktionen "accentuera_jo" heter så eftersom den accentuerar (sätter dit en akut accent "´") på bokstaven "jo" (ё). En översättning till engelska skulle alltså bli "accentuate_yo". Den accentuerar inte någon annan bokstav än just ''jo'' ("yo" på engelska). Syftet med den funktionen är just det här problemet med Gorbatjov / Gorbatjóv. Att det förut blev "Gorbatjov" (utan accent) betraktade jag som en feature, inte en bugg. LA2 beskrev det som mycket mer användarvänligt om det görs automatiskt. Man kan ha olika åsikter, men jag är benägen att hålla med LA2. Jag kan föreställa mig att det finns situationer där man faktiskt vill ha utan accent. Då kommer det eventuellt vara relevant att kunna anropa den större funktionen utan att ha kört "accentuera_jo" / "accentuate_yo" först. Det kan man antingen lösa genom att anropa olika funktionsnamn, eller genom att ha en "boolean" som avgör huruvida "accentuera_jo" ska köras innan resten av funktionen körs. :Att köfunktionerna används i flera moduler har du rätt i. Om det finns en konsensus här att det vore bättre att därför ha dem utanför modulen så kan jag flytta dem till en separat modul med generella köfunktioner. Jag tänkte att det var en lite för "simpel" sak för att ha en egen modul för. Köer är rätt grundläggande. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) 65fob5jmta4dftn568h5t5fu3ui40o9 3703333 3703302 2022-08-19T07:48:48Z Gabbe 1153 /* Några funderingar om modulkoden */ Elegant kod är förstås viktigt, men har "/test" högre prioritet? wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) :{{@|Dodde}}: Några kommentarer. Jag håller med om att en chatt skulle gå snabbare, men det är tyvärr inte ett alternativ för mig. Vidare angående (3) som är en viktig fråga: Normalt use-case på Wiktionary är ord med enbart gemener. Naturligtvis finns det många ord som innehåller versaler. Ett ord som ''[[кубик Рубика]]'', då ska stora bokstaven i andra ordet bli stor. Däremot är det mindre vanligt med ord som har två stora versaler på rad. I sådana fall är det vanligast (i den verkligen världen utanför Wiktionary) att ЖА blir ZjA. Detta för att förtydliga att "j":et inte är en oberoende bokstav. Eftersom det bara finns en stor bokstav innan A på kyrilliska bör texten med latinska bokstäver också bara ha en stor bokstav innan A:et. Det är det konventionella sättet att göra. När en stor bokstav på kyrilliska blir fler än en bokstav på latinska, då är det bara den första av de två bokstäverna som ska vara stor. Se till exempel inledningen till Wikipediasidan "[[w:en:Cheka|Cheka]]". Där blir förkortningen ВЧК till VChK (inte VCHK). På svenska är det vanligaste sättet att göra ВЧК till VTjK (inte VTJK), vilket min modul också gör idag. Det finns bara tre stora bokstäver på kyrilliska, därför finns det bara tre stora bokstäver på dess motsvarighet i latinska bokstäver. En person kan se VTjK på svenska och omedelbart fatta att det är en trebokstavsförkortning på ryska. Finns det välmotiverade argument till att "VTJK" skulle vara det konventionella sättet att göra på i svenska så är jag lyhörd för det. Annars lägger jag till att ВЧК ska bli VTjK som en rad i "/test", samt tar bort "JE,JO,ZJ,ZJA". Min uppfattning är att de senare är felaktiga allihopa. :Det är naturligtvis okej att du ändrar i mallar och moduler direkt! {{=)}} Det här är ju en wiki, trots allt. Jag "äger" inte något av detta. Om du gör en ändring som jag uppfattar som en förändring till det sämre kan jag ju alltid revert:a. :Jag kan lägga till fler rader som förtydligar exakt vad varje test testar för något. Jag antar att det är via funktionsnamnet på engelska som det ska klargöras (som du gjorde)? Fem och fem låter förståndigt. Finns det något tak på hur många tester testsidan kan innehålla? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) == Några funderingar om modulkoden == Har några funderingar om modulkoden och förslag på ändringar: 1. Varför inte ange argumentets namn direkt? <br><code>function export.tr( argument )</code> <br><code>local text = argument</code> <br>-> <br><code>function export.tr(text)</code> 2. a)Varför heter funktionen accentuera_jo och inte bara accentuera? Vad betyder jo? (föreslår att mellanslagen tas bort för enhetligt utseende). Också bra med engelska namn på funktioner. Kommentaren är vilseledande <br> <code>function accentuera_jo ( text )</code> <br>-> <br><code>function accentuate(text)</code> 3. Stilguiden rekommenderar kod utan kommentarer och erbjuder länkar till fördjupning om skälen till varför det är bra. Kan funktionens namn göras tydligare så slipper vi kommentarer helt. Kan man säga att man explicit lägger till accenter till textsträngen? I så fall kanske funktionen kan heta <br><code>function accentuate_explicitly(text)</code> 4. Bra med engelska namn på funktioner, och att ha "ru" i funktionsnamnet är överflödigt. <br><code>function transkribera_ru(text)</code> <br>-> <br><code>function transliterate(text)</code> 5. Att accentuera den ryska texten, är inte det en del av translitterationsprocessen? Isåfall kanske anropet till accentuera-funktionen ska flytta in i transliterate-funktionen. 6. Varför returnerar inte transliterate-funktionen det vi vill ha? Den returnerar en tabell som vi måste hantera och göra om till en textsträng. Det kan transliterate-funktionen ta hand om. En textsträng borde vi kunna få serverat på ett silverfat istället. Koden blir isåfall: <code>function export.tr(text) return transliterate(text) end</code> 7. Wow. Det enda tr-funktionen gör är att anropa transliterate-funktionen och returnera vad den funktionen returnerar. Nu blir det uppenbart att vi inte behöver nån transliterate-funktion då vi lika gärna kan placera koden direkt i tr-funktionen. 8. De där köfunktionerna verkar återanvändas i flera moduler. Det finns en programmeringsprincip som heter DIY - don't repeat yourself. De borde kanske brytas ut till en egen hjälpmodul? Samtidigt ser det rätt rörigt ut när de används. Man måste liksom veta vad koden är tänkt att göra för att förstå vad den gör. Jag undrar om det finns något alternativt angreppssätt. Kanske inte. Jag får fundera lite till. Man kan säkert fila på det lite grann, åtminstone. Men lättare när testerna är på plats... ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 05.51 (CEST) :{{@|Dodde}}: Jag har ännu inte hunnit översatt alla variabel- och funktionsnamn till engelska. Jag har för avsikt att hinna färdigt med det innan månaden är slut. Funktionen "accentuera_jo" heter så eftersom den accentuerar (sätter dit en akut accent "´") på bokstaven "jo" (ё). En översättning till engelska skulle alltså bli "accentuate_yo". Den accentuerar inte någon annan bokstav än just ''jo'' ("yo" på engelska). Syftet med den funktionen är just det här problemet med Gorbatjov / Gorbatjóv. Att det förut blev "Gorbatjov" (utan accent) betraktade jag som en feature, inte en bugg. LA2 beskrev det som mycket mer användarvänligt om det görs automatiskt. Man kan ha olika åsikter, men jag är benägen att hålla med LA2. Jag kan föreställa mig att det finns situationer där man faktiskt vill ha utan accent. Då kommer det eventuellt vara relevant att kunna anropa den större funktionen utan att ha kört "accentuera_jo" / "accentuate_yo" först. Det kan man antingen lösa genom att anropa olika funktionsnamn, eller genom att ha en "boolean" som avgör huruvida "accentuera_jo" ska köras innan resten av funktionen körs. :Att köfunktionerna används i flera moduler har du rätt i. Om det finns en konsensus här att det vore bättre att därför ha dem utanför modulen så kan jag flytta dem till en separat modul med generella köfunktioner. Jag tänkte att det var en lite för "simpel" sak för att ha en egen modul för. Köer är rätt grundläggande. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) :{{@|Dodde}}: Jag kan väl också säga så här: Från och med september kommer jag ha saker i mitt liv utanför Wiktionary som gör att jag kommer delta här i mer begränsad omfattning. Jag kommer inte sluta med Wiktionary, men jag kommer vara märkbart mindre aktiv än vad jag varit den här veckan. Tills dess har jag alltså begränsat med tid. Den tiden kan prioriteras på lite olika saker. Några exempel (i ingen särskild ordning): :#Lägga till nya funktioner. Exempel på det vore det LA2 pratade om, att när ett ord på ryska har fler än en stavelse, men inga accent-tecken, så ska sidan som anropar modulen placeras i en dold kategori. Då har användaren varit "lat" och glömt att accentuera texten tillräckligt, vilket borde åtgärdas manuellt. :#Göra "/test" mer utförlig angående vad jag betraktar som modulernas features redan idag, så att andra användare lättare förstår vad som mallen och modulen "förväntas" göra. :#Göra dokumentationen som ska ligga under "/dok" :#Göra "estetiska" förändringar av själva källkoden. Med det menar jag sådant som gör koden mer i linje med Stilguiden (engelska funktionsnamn, tabbar för indentering, osv), men som i övrigt inte förändrar vilken utdata som kommer ifrån en given indata. Sånt är även det viktigt för att andra användare lättare ska kunna ändra koden. :Detta gäller för såväl de här modulerna som används av {{mall|tr}}, men även för ett annat projekt jag jobbat med, nämligen {{mall|fr-verb-test}} (och de moduler som den använder, [[Modul:fr-verb-artikel]] och [[Modul:fr-verb-konj]]). Helst ska jag förstås göra alla de ovanstående de närmsta två veckorna. Men det kommer jag nog inte hinna om vi ska vara realistiska. Det jag beskriver ovan tar olika lång tid och är olika viktigt. Om du fick önska, vad tycker du vore mest högprioriterat av dessa? I vilken ordning borde jag fokusera min energi de närmsta par veckorna? Jag tänker mig att en gedigen "/test" för varje modul är det som har allra högst prioritet. Håller du med? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 09.48 (CEST) qih1fwxhpgivo9og3hqx7u8uw4qnils 3703344 3703333 2022-08-19T09:19:50Z Dodde 309 /* Några funderingar om modulkoden */ wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) :{{@|Dodde}}: Några kommentarer. Jag håller med om att en chatt skulle gå snabbare, men det är tyvärr inte ett alternativ för mig. Vidare angående (3) som är en viktig fråga: Normalt use-case på Wiktionary är ord med enbart gemener. Naturligtvis finns det många ord som innehåller versaler. Ett ord som ''[[кубик Рубика]]'', då ska stora bokstaven i andra ordet bli stor. Däremot är det mindre vanligt med ord som har två stora versaler på rad. I sådana fall är det vanligast (i den verkligen världen utanför Wiktionary) att ЖА blir ZjA. Detta för att förtydliga att "j":et inte är en oberoende bokstav. Eftersom det bara finns en stor bokstav innan A på kyrilliska bör texten med latinska bokstäver också bara ha en stor bokstav innan A:et. Det är det konventionella sättet att göra. När en stor bokstav på kyrilliska blir fler än en bokstav på latinska, då är det bara den första av de två bokstäverna som ska vara stor. Se till exempel inledningen till Wikipediasidan "[[w:en:Cheka|Cheka]]". Där blir förkortningen ВЧК till VChK (inte VCHK). På svenska är det vanligaste sättet att göra ВЧК till VTjK (inte VTJK), vilket min modul också gör idag. Det finns bara tre stora bokstäver på kyrilliska, därför finns det bara tre stora bokstäver på dess motsvarighet i latinska bokstäver. En person kan se VTjK på svenska och omedelbart fatta att det är en trebokstavsförkortning på ryska. Finns det välmotiverade argument till att "VTJK" skulle vara det konventionella sättet att göra på i svenska så är jag lyhörd för det. Annars lägger jag till att ВЧК ska bli VTjK som en rad i "/test", samt tar bort "JE,JO,ZJ,ZJA". Min uppfattning är att de senare är felaktiga allihopa. :Det är naturligtvis okej att du ändrar i mallar och moduler direkt! {{=)}} Det här är ju en wiki, trots allt. Jag "äger" inte något av detta. Om du gör en ändring som jag uppfattar som en förändring till det sämre kan jag ju alltid revert:a. :Jag kan lägga till fler rader som förtydligar exakt vad varje test testar för något. Jag antar att det är via funktionsnamnet på engelska som det ska klargöras (som du gjorde)? Fem och fem låter förståndigt. Finns det något tak på hur många tester testsidan kan innehålla? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) == Några funderingar om modulkoden == Har några funderingar om modulkoden och förslag på ändringar: 1. Varför inte ange argumentets namn direkt? <br><code>function export.tr( argument )</code> <br><code>local text = argument</code> <br>-> <br><code>function export.tr(text)</code> 2. a)Varför heter funktionen accentuera_jo och inte bara accentuera? Vad betyder jo? (föreslår att mellanslagen tas bort för enhetligt utseende). Också bra med engelska namn på funktioner. Kommentaren är vilseledande <br> <code>function accentuera_jo ( text )</code> <br>-> <br><code>function accentuate(text)</code> 3. Stilguiden rekommenderar kod utan kommentarer och erbjuder länkar till fördjupning om skälen till varför det är bra. Kan funktionens namn göras tydligare så slipper vi kommentarer helt. Kan man säga att man explicit lägger till accenter till textsträngen? I så fall kanske funktionen kan heta <br><code>function accentuate_explicitly(text)</code> 4. Bra med engelska namn på funktioner, och att ha "ru" i funktionsnamnet är överflödigt. <br><code>function transkribera_ru(text)</code> <br>-> <br><code>function transliterate(text)</code> 5. Att accentuera den ryska texten, är inte det en del av translitterationsprocessen? Isåfall kanske anropet till accentuera-funktionen ska flytta in i transliterate-funktionen. 6. Varför returnerar inte transliterate-funktionen det vi vill ha? Den returnerar en tabell som vi måste hantera och göra om till en textsträng. Det kan transliterate-funktionen ta hand om. En textsträng borde vi kunna få serverat på ett silverfat istället. Koden blir isåfall: <code>function export.tr(text) return transliterate(text) end</code> 7. Wow. Det enda tr-funktionen gör är att anropa transliterate-funktionen och returnera vad den funktionen returnerar. Nu blir det uppenbart att vi inte behöver nån transliterate-funktion då vi lika gärna kan placera koden direkt i tr-funktionen. 8. De där köfunktionerna verkar återanvändas i flera moduler. Det finns en programmeringsprincip som heter DIY - don't repeat yourself. De borde kanske brytas ut till en egen hjälpmodul? Samtidigt ser det rätt rörigt ut när de används. Man måste liksom veta vad koden är tänkt att göra för att förstå vad den gör. Jag undrar om det finns något alternativt angreppssätt. Kanske inte. Jag får fundera lite till. Man kan säkert fila på det lite grann, åtminstone. Men lättare när testerna är på plats... ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 05.51 (CEST) :{{@|Dodde}}: Jag har ännu inte hunnit översatt alla variabel- och funktionsnamn till engelska. Jag har för avsikt att hinna färdigt med det innan månaden är slut. Funktionen "accentuera_jo" heter så eftersom den accentuerar (sätter dit en akut accent "´") på bokstaven "jo" (ё). En översättning till engelska skulle alltså bli "accentuate_yo". Den accentuerar inte någon annan bokstav än just ''jo'' ("yo" på engelska). Syftet med den funktionen är just det här problemet med Gorbatjov / Gorbatjóv. Att det förut blev "Gorbatjov" (utan accent) betraktade jag som en feature, inte en bugg. LA2 beskrev det som mycket mer användarvänligt om det görs automatiskt. Man kan ha olika åsikter, men jag är benägen att hålla med LA2. Jag kan föreställa mig att det finns situationer där man faktiskt vill ha utan accent. Då kommer det eventuellt vara relevant att kunna anropa den större funktionen utan att ha kört "accentuera_jo" / "accentuate_yo" först. Det kan man antingen lösa genom att anropa olika funktionsnamn, eller genom att ha en "boolean" som avgör huruvida "accentuera_jo" ska köras innan resten av funktionen körs. :Att köfunktionerna används i flera moduler har du rätt i. Om det finns en konsensus här att det vore bättre att därför ha dem utanför modulen så kan jag flytta dem till en separat modul med generella köfunktioner. Jag tänkte att det var en lite för "simpel" sak för att ha en egen modul för. Köer är rätt grundläggande. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) :{{@|Dodde}}: Jag kan väl också säga så här: Från och med september kommer jag ha saker i mitt liv utanför Wiktionary som gör att jag kommer delta här i mer begränsad omfattning. Jag kommer inte sluta med Wiktionary, men jag kommer vara märkbart mindre aktiv än vad jag varit den här veckan. Tills dess har jag alltså begränsat med tid. Den tiden kan prioriteras på lite olika saker. Några exempel (i ingen särskild ordning): :#Lägga till nya funktioner. Exempel på det vore det LA2 pratade om, att när ett ord på ryska har fler än en stavelse, men inga accent-tecken, så ska sidan som anropar modulen placeras i en dold kategori. Då har användaren varit "lat" och glömt att accentuera texten tillräckligt, vilket borde åtgärdas manuellt. :#Göra "/test" mer utförlig angående vad jag betraktar som modulernas features redan idag, så att andra användare lättare förstår vad som mallen och modulen "förväntas" göra. :#Göra dokumentationen som ska ligga under "/dok" :#Göra "estetiska" förändringar av själva källkoden. Med det menar jag sådant som gör koden mer i linje med Stilguiden (engelska funktionsnamn, tabbar för indentering, osv), men som i övrigt inte förändrar vilken utdata som kommer ifrån en given indata. Sånt är även det viktigt för att andra användare lättare ska kunna ändra koden. :Detta gäller för såväl de här modulerna som används av {{mall|tr}}, men även för ett annat projekt jag jobbat med, nämligen {{mall|fr-verb-test}} (och de moduler som den använder, [[Modul:fr-verb-artikel]] och [[Modul:fr-verb-konj]]). Helst ska jag förstås göra alla de ovanstående de närmsta två veckorna. Men det kommer jag nog inte hinna om vi ska vara realistiska. Det jag beskriver ovan tar olika lång tid och är olika viktigt. Om du fick önska, vad tycker du vore mest högprioriterat av dessa? I vilken ordning borde jag fokusera min energi de närmsta par veckorna? Jag tänker mig att en gedigen "/test" för varje modul är det som har allra högst prioritet. Håller du med? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 09.48 (CEST) ::{{@|Gabbe}} Tack för förklaringen av "jo". Då förstår jag. Jag ska ändra testerna rörande detta. :: ::Att ha genomtänkta gedigna tester är a och o ur så många synvinklar. Jag håller med om att det är prioriterat. Kvalitet före kvantitet. Men också: Gör Modul:translit/ru ordentligt först, så blir Modul:translit/uk så gott som ett copy-paste-jobb. Med DRY-principen behöver dessutom minimalt med kod copy-pastas. Och med bra, genomtänkt kod, blir även andra moduler enklare att göra. Man behöver inte diskutera hur man löser samma problem, om och om igen. Har man löst ett problem på ett tillfredsställande sätt i en modul, kan man återanvända den lösningen. När testerna är genomtänkta och kompletta, så finns det inget sätt för modulkoden att göra fel (utan att testerna misslyckas) och på så sätt bäddar man för att fler kan bidra till modulen i framtiden utan att någon ska behöva vara orolig för att det får oväntade konsekvenser. :: ::Angående extra funktionalitet. Är det bra, genomtänkt funktionalitet, lägg till det som en del av testerna i ett tidigt skede. Skulle det visa sig att en del funktioner är komplicerade att inkludera, så kan man kommentera ut testerna så länge, längre fram. Om du inte vet exakt hur testerna ska utformas, skriv en kommentar med en beskrivning och vad som behöver testas, så kan man återkomma till det så fort man har en lösning på det. :: ::När det gäller kosmetiska förändringar. Framförallt är det viktigt att funktioner som exporteras har genomtänkta namn och att deras syntax är genomtänkta. Det är endast dessa som bör dokumenteras. Det blir lksom ett kontrakt med användaren, att "om du använder dig av modulen på det som beskrivs här, så kan du lita på att det fungerar, även i framtiden". Om vi vill ändra på en funktions namn eller hur den fungerar, så måste vi ta höjd för alla andra moduler och/eller mallar, och i förlängningen mallanrop på sidor med uppslag, korrigeras så att de fungerar med vår uppdatering. Och det kan vara ett stort jobb, som kräver att tiotusentals sidor uppdateras. Ungefär som är nödvändigt med sidor som använder {{mall|härledning}} just nu. Men, det är svårt att förutse alla situationer som kan uppstå. Därför hamnar vi ändå i de här situationerna ibland. Men om vi lägger extra tid och energi på att få det rätt från början, genom att fokusera på kvalitet i varje del, så undviker vi att skapa onödigt jobb för oss, och andra, i framtiden. Och vi undviker att skapa så stora jobb att ingen nånsin lär orka ta tag i dem ens. Hur man ska anropa modulens tr-funktion i olika fall som att accentuera "jo" eller inte är en sådan relevant sak att ta i beaktning. Och här kan man behöva fundera på att sättet att anropa Modul:translit-ru sker på ett liknande sätt som hur andra språkspecifika translit-moduler funkar, eftersom ju den generella Modul:translit är den som anropas från olika språks mallar. Angående Modul:fr-verb-konj så tänker jag att enhetlig namngivning på grammatikmoduler är språkkod-ordklass. "Konj" bör eventuellt vara en parameter. Och det är viktigt att alla grammatikmoduler bygger på [[Modul:grammar]] och [[Modul:grammar-table]]. Se mer här: [[Modul:grammar-example]]. Kanske försöker du återuppfinna hjulet på nytt i vissa avseenden? :: ::När det gäller dokumentationen så tänker jag att den kan göras i slutet, när man löst alla problem och vet hur modulen (eller mallen) faktiskt fungerar. I slutet ''men(!)'' innan modulen börjar användas. Det finns inget tristare än att behöva gå igenom sidor med uppslag manuellt och ändra mallsyntax för att mallen eller modulen börjat användas innan den varit klar och genomtänkt. När man skriver dokumentationen så kan man upptäcka saker, precis som när man skapar testerna, allt man har missat att tänka på någonting. Och det bjuder också in andra deltagare att använda mallen och förstå hur den funkar. Alla är inte programmerare eller mallkodsexperter. Vi har tyvärr grammatikmallar och andra mallar idag som endast den personen som skapade mallen förstår sig på och kan använda. Det kanske kan ordnas med robotändringar och syntaxändringar i framtiden, men det hade ju varit önskvärt om det hade gjorts ordentligt från början. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 11.19 (CEST) l9d4l8xn6kh7uo3c6tb4un4vd173771 3703345 3703344 2022-08-19T09:21:39Z Dodde 309 /* Några funderingar om modulkoden */ wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) :{{@|Dodde}}: Några kommentarer. Jag håller med om att en chatt skulle gå snabbare, men det är tyvärr inte ett alternativ för mig. Vidare angående (3) som är en viktig fråga: Normalt use-case på Wiktionary är ord med enbart gemener. Naturligtvis finns det många ord som innehåller versaler. Ett ord som ''[[кубик Рубика]]'', då ska stora bokstaven i andra ordet bli stor. Däremot är det mindre vanligt med ord som har två stora versaler på rad. I sådana fall är det vanligast (i den verkligen världen utanför Wiktionary) att ЖА blir ZjA. Detta för att förtydliga att "j":et inte är en oberoende bokstav. Eftersom det bara finns en stor bokstav innan A på kyrilliska bör texten med latinska bokstäver också bara ha en stor bokstav innan A:et. Det är det konventionella sättet att göra. När en stor bokstav på kyrilliska blir fler än en bokstav på latinska, då är det bara den första av de två bokstäverna som ska vara stor. Se till exempel inledningen till Wikipediasidan "[[w:en:Cheka|Cheka]]". Där blir förkortningen ВЧК till VChK (inte VCHK). På svenska är det vanligaste sättet att göra ВЧК till VTjK (inte VTJK), vilket min modul också gör idag. Det finns bara tre stora bokstäver på kyrilliska, därför finns det bara tre stora bokstäver på dess motsvarighet i latinska bokstäver. En person kan se VTjK på svenska och omedelbart fatta att det är en trebokstavsförkortning på ryska. Finns det välmotiverade argument till att "VTJK" skulle vara det konventionella sättet att göra på i svenska så är jag lyhörd för det. Annars lägger jag till att ВЧК ska bli VTjK som en rad i "/test", samt tar bort "JE,JO,ZJ,ZJA". Min uppfattning är att de senare är felaktiga allihopa. :Det är naturligtvis okej att du ändrar i mallar och moduler direkt! {{=)}} Det här är ju en wiki, trots allt. Jag "äger" inte något av detta. Om du gör en ändring som jag uppfattar som en förändring till det sämre kan jag ju alltid revert:a. :Jag kan lägga till fler rader som förtydligar exakt vad varje test testar för något. Jag antar att det är via funktionsnamnet på engelska som det ska klargöras (som du gjorde)? Fem och fem låter förståndigt. Finns det något tak på hur många tester testsidan kan innehålla? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) == Några funderingar om modulkoden == Har några funderingar om modulkoden och förslag på ändringar: 1. Varför inte ange argumentets namn direkt? <br><code>function export.tr( argument )</code> <br><code>local text = argument</code> <br>-> <br><code>function export.tr(text)</code> 2. a)Varför heter funktionen accentuera_jo och inte bara accentuera? Vad betyder jo? (föreslår att mellanslagen tas bort för enhetligt utseende). Också bra med engelska namn på funktioner. Kommentaren är vilseledande <br> <code>function accentuera_jo ( text )</code> <br>-> <br><code>function accentuate(text)</code> 3. Stilguiden rekommenderar kod utan kommentarer och erbjuder länkar till fördjupning om skälen till varför det är bra. Kan funktionens namn göras tydligare så slipper vi kommentarer helt. Kan man säga att man explicit lägger till accenter till textsträngen? I så fall kanske funktionen kan heta <br><code>function accentuate_explicitly(text)</code> 4. Bra med engelska namn på funktioner, och att ha "ru" i funktionsnamnet är överflödigt. <br><code>function transkribera_ru(text)</code> <br>-> <br><code>function transliterate(text)</code> 5. Att accentuera den ryska texten, är inte det en del av translitterationsprocessen? Isåfall kanske anropet till accentuera-funktionen ska flytta in i transliterate-funktionen. 6. Varför returnerar inte transliterate-funktionen det vi vill ha? Den returnerar en tabell som vi måste hantera och göra om till en textsträng. Det kan transliterate-funktionen ta hand om. En textsträng borde vi kunna få serverat på ett silverfat istället. Koden blir isåfall: <code>function export.tr(text) return transliterate(text) end</code> 7. Wow. Det enda tr-funktionen gör är att anropa transliterate-funktionen och returnera vad den funktionen returnerar. Nu blir det uppenbart att vi inte behöver nån transliterate-funktion då vi lika gärna kan placera koden direkt i tr-funktionen. 8. De där köfunktionerna verkar återanvändas i flera moduler. Det finns en programmeringsprincip som heter DIY - don't repeat yourself. De borde kanske brytas ut till en egen hjälpmodul? Samtidigt ser det rätt rörigt ut när de används. Man måste liksom veta vad koden är tänkt att göra för att förstå vad den gör. Jag undrar om det finns något alternativt angreppssätt. Kanske inte. Jag får fundera lite till. Man kan säkert fila på det lite grann, åtminstone. Men lättare när testerna är på plats... ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 05.51 (CEST) :{{@|Dodde}}: Jag har ännu inte hunnit översatt alla variabel- och funktionsnamn till engelska. Jag har för avsikt att hinna färdigt med det innan månaden är slut. Funktionen "accentuera_jo" heter så eftersom den accentuerar (sätter dit en akut accent "´") på bokstaven "jo" (ё). En översättning till engelska skulle alltså bli "accentuate_yo". Den accentuerar inte någon annan bokstav än just ''jo'' ("yo" på engelska). Syftet med den funktionen är just det här problemet med Gorbatjov / Gorbatjóv. Att det förut blev "Gorbatjov" (utan accent) betraktade jag som en feature, inte en bugg. LA2 beskrev det som mycket mer användarvänligt om det görs automatiskt. Man kan ha olika åsikter, men jag är benägen att hålla med LA2. Jag kan föreställa mig att det finns situationer där man faktiskt vill ha utan accent. Då kommer det eventuellt vara relevant att kunna anropa den större funktionen utan att ha kört "accentuera_jo" / "accentuate_yo" först. Det kan man antingen lösa genom att anropa olika funktionsnamn, eller genom att ha en "boolean" som avgör huruvida "accentuera_jo" ska köras innan resten av funktionen körs. :Att köfunktionerna används i flera moduler har du rätt i. Om det finns en konsensus här att det vore bättre att därför ha dem utanför modulen så kan jag flytta dem till en separat modul med generella köfunktioner. Jag tänkte att det var en lite för "simpel" sak för att ha en egen modul för. Köer är rätt grundläggande. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) :{{@|Dodde}}: Jag kan väl också säga så här: Från och med september kommer jag ha saker i mitt liv utanför Wiktionary som gör att jag kommer delta här i mer begränsad omfattning. Jag kommer inte sluta med Wiktionary, men jag kommer vara märkbart mindre aktiv än vad jag varit den här veckan. Tills dess har jag alltså begränsat med tid. Den tiden kan prioriteras på lite olika saker. Några exempel (i ingen särskild ordning): :#Lägga till nya funktioner. Exempel på det vore det LA2 pratade om, att när ett ord på ryska har fler än en stavelse, men inga accent-tecken, så ska sidan som anropar modulen placeras i en dold kategori. Då har användaren varit "lat" och glömt att accentuera texten tillräckligt, vilket borde åtgärdas manuellt. :#Göra "/test" mer utförlig angående vad jag betraktar som modulernas features redan idag, så att andra användare lättare förstår vad som mallen och modulen "förväntas" göra. :#Göra dokumentationen som ska ligga under "/dok" :#Göra "estetiska" förändringar av själva källkoden. Med det menar jag sådant som gör koden mer i linje med Stilguiden (engelska funktionsnamn, tabbar för indentering, osv), men som i övrigt inte förändrar vilken utdata som kommer ifrån en given indata. Sånt är även det viktigt för att andra användare lättare ska kunna ändra koden. :Detta gäller för såväl de här modulerna som används av {{mall|tr}}, men även för ett annat projekt jag jobbat med, nämligen {{mall|fr-verb-test}} (och de moduler som den använder, [[Modul:fr-verb-artikel]] och [[Modul:fr-verb-konj]]). Helst ska jag förstås göra alla de ovanstående de närmsta två veckorna. Men det kommer jag nog inte hinna om vi ska vara realistiska. Det jag beskriver ovan tar olika lång tid och är olika viktigt. Om du fick önska, vad tycker du vore mest högprioriterat av dessa? I vilken ordning borde jag fokusera min energi de närmsta par veckorna? Jag tänker mig att en gedigen "/test" för varje modul är det som har allra högst prioritet. Håller du med? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 09.48 (CEST) ::{{@|Gabbe}} Tack för förklaringen av "jo". Då förstår jag. Jag ska ändra testerna rörande detta. <br> ::Att ha genomtänkta gedigna tester är a och o ur så många synvinklar. Jag håller med om att det är prioriterat. Kvalitet före kvantitet. Men också: Gör Modul:translit/ru ordentligt först, så blir Modul:translit/uk så gott som ett copy-paste-jobb. Med DRY-principen behöver dessutom minimalt med kod copy-pastas. Och med bra, genomtänkt kod, blir även andra moduler enklare att göra. Man behöver inte diskutera hur man löser samma problem, om och om igen. Har man löst ett problem på ett tillfredsställande sätt i en modul, kan man återanvända den lösningen. När testerna är genomtänkta och kompletta, så finns det inget sätt för modulkoden att göra fel (utan att testerna misslyckas) och på så sätt bäddar man för att fler kan bidra till modulen i framtiden utan att någon ska behöva vara orolig för att det får oväntade konsekvenser. <br> ::Angående extra funktionalitet. Är det bra, genomtänkt funktionalitet, lägg till det som en del av testerna i ett tidigt skede. Skulle det visa sig att en del funktioner är komplicerade att inkludera, så kan man kommentera ut testerna så länge, längre fram. Om du inte vet exakt hur testerna ska utformas, skriv en kommentar med en beskrivning och vad som behöver testas, så kan man återkomma till det så fort man har en lösning på det. <br> ::När det gäller kosmetiska förändringar. Framförallt är det viktigt att funktioner som exporteras har genomtänkta namn och att deras syntax är genomtänkta. Det är endast dessa som bör dokumenteras. Det blir lksom ett kontrakt med användaren, att "om du använder dig av modulen på det som beskrivs här, så kan du lita på att det fungerar, även i framtiden". Om vi vill ändra på en funktions namn eller hur den fungerar, så måste vi ta höjd för alla andra moduler och/eller mallar, och i förlängningen mallanrop på sidor med uppslag, korrigeras så att de fungerar med vår uppdatering. Och det kan vara ett stort jobb, som kräver att tiotusentals sidor uppdateras. Ungefär som är nödvändigt med sidor som använder {{mall|härledning}} just nu. Men, det är svårt att förutse alla situationer som kan uppstå. Därför hamnar vi ändå i de här situationerna ibland. Men om vi lägger extra tid och energi på att få det rätt från början, genom att fokusera på kvalitet i varje del, så undviker vi att skapa onödigt jobb för oss, och andra, i framtiden. Och vi undviker att skapa så stora jobb att ingen nånsin lär orka ta tag i dem ens. Hur man ska anropa modulens tr-funktion i olika fall som att accentuera "jo" eller inte är en sådan relevant sak att ta i beaktning. Och här kan man behöva fundera på att sättet att anropa Modul:translit-ru sker på ett liknande sätt som hur andra språkspecifika translit-moduler funkar, eftersom ju den generella Modul:translit är den som anropas från olika språks mallar. Angående Modul:fr-verb-konj så tänker jag att enhetlig namngivning på grammatikmoduler är språkkod-ordklass. "Konj" bör eventuellt vara en parameter. Och det är viktigt att alla grammatikmoduler bygger på [[Modul:grammar]] och [[Modul:grammar-table]]. Se mer här: [[Modul:grammar-example]]. Kanske försöker du återuppfinna hjulet på nytt i vissa avseenden? <br> ::När det gäller dokumentationen så tänker jag att den kan göras i slutet, när man löst alla problem och vet hur modulen (eller mallen) faktiskt fungerar. I slutet ''men(!)'' innan modulen börjar användas. Det finns inget tristare än att behöva gå igenom sidor med uppslag manuellt och ändra mallsyntax för att mallen eller modulen börjat användas innan den varit klar och genomtänkt. När man skriver dokumentationen så kan man upptäcka saker, precis som när man skapar testerna, allt man har missat att tänka på någonting. Och det bjuder också in andra deltagare att använda mallen och förstå hur den funkar. Alla är inte programmerare eller mallkodsexperter. Vi har tyvärr grammatikmallar och andra mallar idag som endast den personen som skapade mallen förstår sig på och kan använda. Det kanske kan ordnas med robotändringar och syntaxändringar i framtiden, men det hade ju varit önskvärt om det hade gjorts ordentligt från början. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 11.19 (CEST) l7tc96szh0wtzebwdf1c346xfvex9z2 3703349 3703345 2022-08-19T09:32:53Z Dodde 309 /* Stilguide för moduler */ wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) :{{@|Dodde}}: Några kommentarer. Jag håller med om att en chatt skulle gå snabbare, men det är tyvärr inte ett alternativ för mig. Vidare angående (3) som är en viktig fråga: Normalt use-case på Wiktionary är ord med enbart gemener. Naturligtvis finns det många ord som innehåller versaler. Ett ord som ''[[кубик Рубика]]'', då ska stora bokstaven i andra ordet bli stor. Däremot är det mindre vanligt med ord som har två stora versaler på rad. I sådana fall är det vanligast (i den verkligen världen utanför Wiktionary) att ЖА blir ZjA. Detta för att förtydliga att "j":et inte är en oberoende bokstav. Eftersom det bara finns en stor bokstav innan A på kyrilliska bör texten med latinska bokstäver också bara ha en stor bokstav innan A:et. Det är det konventionella sättet att göra. När en stor bokstav på kyrilliska blir fler än en bokstav på latinska, då är det bara den första av de två bokstäverna som ska vara stor. Se till exempel inledningen till Wikipediasidan "[[w:en:Cheka|Cheka]]". Där blir förkortningen ВЧК till VChK (inte VCHK). På svenska är det vanligaste sättet att göra ВЧК till VTjK (inte VTJK), vilket min modul också gör idag. Det finns bara tre stora bokstäver på kyrilliska, därför finns det bara tre stora bokstäver på dess motsvarighet i latinska bokstäver. En person kan se VTjK på svenska och omedelbart fatta att det är en trebokstavsförkortning på ryska. Finns det välmotiverade argument till att "VTJK" skulle vara det konventionella sättet att göra på i svenska så är jag lyhörd för det. Annars lägger jag till att ВЧК ska bli VTjK som en rad i "/test", samt tar bort "JE,JO,ZJ,ZJA". Min uppfattning är att de senare är felaktiga allihopa. :Det är naturligtvis okej att du ändrar i mallar och moduler direkt! {{=)}} Det här är ju en wiki, trots allt. Jag "äger" inte något av detta. Om du gör en ändring som jag uppfattar som en förändring till det sämre kan jag ju alltid revert:a. :Jag kan lägga till fler rader som förtydligar exakt vad varje test testar för något. Jag antar att det är via funktionsnamnet på engelska som det ska klargöras (som du gjorde)? Fem och fem låter förståndigt. Finns det något tak på hur många tester testsidan kan innehålla? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) ::{{@|Gabbe}}: Jag respekterar naturligtvis att chatt inte funkar för dig, oavsett anledning. :) Angående ZjA osv, tack för den utförliga förklaringen, då förstår jag. Jag ska korrigera testerna som byggde på det felaktiga antagandet. Tack för tillåtelsen, ja precis, då är det bara att reverta. :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 11.32 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) == Några funderingar om modulkoden == Har några funderingar om modulkoden och förslag på ändringar: 1. Varför inte ange argumentets namn direkt? <br><code>function export.tr( argument )</code> <br><code>local text = argument</code> <br>-> <br><code>function export.tr(text)</code> 2. a)Varför heter funktionen accentuera_jo och inte bara accentuera? Vad betyder jo? (föreslår att mellanslagen tas bort för enhetligt utseende). Också bra med engelska namn på funktioner. Kommentaren är vilseledande <br> <code>function accentuera_jo ( text )</code> <br>-> <br><code>function accentuate(text)</code> 3. Stilguiden rekommenderar kod utan kommentarer och erbjuder länkar till fördjupning om skälen till varför det är bra. Kan funktionens namn göras tydligare så slipper vi kommentarer helt. Kan man säga att man explicit lägger till accenter till textsträngen? I så fall kanske funktionen kan heta <br><code>function accentuate_explicitly(text)</code> 4. Bra med engelska namn på funktioner, och att ha "ru" i funktionsnamnet är överflödigt. <br><code>function transkribera_ru(text)</code> <br>-> <br><code>function transliterate(text)</code> 5. Att accentuera den ryska texten, är inte det en del av translitterationsprocessen? Isåfall kanske anropet till accentuera-funktionen ska flytta in i transliterate-funktionen. 6. Varför returnerar inte transliterate-funktionen det vi vill ha? Den returnerar en tabell som vi måste hantera och göra om till en textsträng. Det kan transliterate-funktionen ta hand om. En textsträng borde vi kunna få serverat på ett silverfat istället. Koden blir isåfall: <code>function export.tr(text) return transliterate(text) end</code> 7. Wow. Det enda tr-funktionen gör är att anropa transliterate-funktionen och returnera vad den funktionen returnerar. Nu blir det uppenbart att vi inte behöver nån transliterate-funktion då vi lika gärna kan placera koden direkt i tr-funktionen. 8. De där köfunktionerna verkar återanvändas i flera moduler. Det finns en programmeringsprincip som heter DIY - don't repeat yourself. De borde kanske brytas ut till en egen hjälpmodul? Samtidigt ser det rätt rörigt ut när de används. Man måste liksom veta vad koden är tänkt att göra för att förstå vad den gör. Jag undrar om det finns något alternativt angreppssätt. Kanske inte. Jag får fundera lite till. Man kan säkert fila på det lite grann, åtminstone. Men lättare när testerna är på plats... ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 05.51 (CEST) :{{@|Dodde}}: Jag har ännu inte hunnit översatt alla variabel- och funktionsnamn till engelska. Jag har för avsikt att hinna färdigt med det innan månaden är slut. Funktionen "accentuera_jo" heter så eftersom den accentuerar (sätter dit en akut accent "´") på bokstaven "jo" (ё). En översättning till engelska skulle alltså bli "accentuate_yo". Den accentuerar inte någon annan bokstav än just ''jo'' ("yo" på engelska). Syftet med den funktionen är just det här problemet med Gorbatjov / Gorbatjóv. Att det förut blev "Gorbatjov" (utan accent) betraktade jag som en feature, inte en bugg. LA2 beskrev det som mycket mer användarvänligt om det görs automatiskt. Man kan ha olika åsikter, men jag är benägen att hålla med LA2. Jag kan föreställa mig att det finns situationer där man faktiskt vill ha utan accent. Då kommer det eventuellt vara relevant att kunna anropa den större funktionen utan att ha kört "accentuera_jo" / "accentuate_yo" först. Det kan man antingen lösa genom att anropa olika funktionsnamn, eller genom att ha en "boolean" som avgör huruvida "accentuera_jo" ska köras innan resten av funktionen körs. :Att köfunktionerna används i flera moduler har du rätt i. Om det finns en konsensus här att det vore bättre att därför ha dem utanför modulen så kan jag flytta dem till en separat modul med generella köfunktioner. Jag tänkte att det var en lite för "simpel" sak för att ha en egen modul för. Köer är rätt grundläggande. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) :{{@|Dodde}}: Jag kan väl också säga så här: Från och med september kommer jag ha saker i mitt liv utanför Wiktionary som gör att jag kommer delta här i mer begränsad omfattning. Jag kommer inte sluta med Wiktionary, men jag kommer vara märkbart mindre aktiv än vad jag varit den här veckan. Tills dess har jag alltså begränsat med tid. Den tiden kan prioriteras på lite olika saker. Några exempel (i ingen särskild ordning): :#Lägga till nya funktioner. Exempel på det vore det LA2 pratade om, att när ett ord på ryska har fler än en stavelse, men inga accent-tecken, så ska sidan som anropar modulen placeras i en dold kategori. Då har användaren varit "lat" och glömt att accentuera texten tillräckligt, vilket borde åtgärdas manuellt. :#Göra "/test" mer utförlig angående vad jag betraktar som modulernas features redan idag, så att andra användare lättare förstår vad som mallen och modulen "förväntas" göra. :#Göra dokumentationen som ska ligga under "/dok" :#Göra "estetiska" förändringar av själva källkoden. Med det menar jag sådant som gör koden mer i linje med Stilguiden (engelska funktionsnamn, tabbar för indentering, osv), men som i övrigt inte förändrar vilken utdata som kommer ifrån en given indata. Sånt är även det viktigt för att andra användare lättare ska kunna ändra koden. :Detta gäller för såväl de här modulerna som används av {{mall|tr}}, men även för ett annat projekt jag jobbat med, nämligen {{mall|fr-verb-test}} (och de moduler som den använder, [[Modul:fr-verb-artikel]] och [[Modul:fr-verb-konj]]). Helst ska jag förstås göra alla de ovanstående de närmsta två veckorna. Men det kommer jag nog inte hinna om vi ska vara realistiska. Det jag beskriver ovan tar olika lång tid och är olika viktigt. Om du fick önska, vad tycker du vore mest högprioriterat av dessa? I vilken ordning borde jag fokusera min energi de närmsta par veckorna? Jag tänker mig att en gedigen "/test" för varje modul är det som har allra högst prioritet. Håller du med? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 09.48 (CEST) ::{{@|Gabbe}} Tack för förklaringen av "jo". Då förstår jag. Jag ska ändra testerna rörande detta. <br> ::Att ha genomtänkta gedigna tester är a och o ur så många synvinklar. Jag håller med om att det är prioriterat. Kvalitet före kvantitet. Men också: Gör Modul:translit/ru ordentligt först, så blir Modul:translit/uk så gott som ett copy-paste-jobb. Med DRY-principen behöver dessutom minimalt med kod copy-pastas. Och med bra, genomtänkt kod, blir även andra moduler enklare att göra. Man behöver inte diskutera hur man löser samma problem, om och om igen. Har man löst ett problem på ett tillfredsställande sätt i en modul, kan man återanvända den lösningen. När testerna är genomtänkta och kompletta, så finns det inget sätt för modulkoden att göra fel (utan att testerna misslyckas) och på så sätt bäddar man för att fler kan bidra till modulen i framtiden utan att någon ska behöva vara orolig för att det får oväntade konsekvenser. <br> ::Angående extra funktionalitet. Är det bra, genomtänkt funktionalitet, lägg till det som en del av testerna i ett tidigt skede. Skulle det visa sig att en del funktioner är komplicerade att inkludera, så kan man kommentera ut testerna så länge, längre fram. Om du inte vet exakt hur testerna ska utformas, skriv en kommentar med en beskrivning och vad som behöver testas, så kan man återkomma till det så fort man har en lösning på det. <br> ::När det gäller kosmetiska förändringar. Framförallt är det viktigt att funktioner som exporteras har genomtänkta namn och att deras syntax är genomtänkta. Det är endast dessa som bör dokumenteras. Det blir lksom ett kontrakt med användaren, att "om du använder dig av modulen på det som beskrivs här, så kan du lita på att det fungerar, även i framtiden". Om vi vill ändra på en funktions namn eller hur den fungerar, så måste vi ta höjd för alla andra moduler och/eller mallar, och i förlängningen mallanrop på sidor med uppslag, korrigeras så att de fungerar med vår uppdatering. Och det kan vara ett stort jobb, som kräver att tiotusentals sidor uppdateras. Ungefär som är nödvändigt med sidor som använder {{mall|härledning}} just nu. Men, det är svårt att förutse alla situationer som kan uppstå. Därför hamnar vi ändå i de här situationerna ibland. Men om vi lägger extra tid och energi på att få det rätt från början, genom att fokusera på kvalitet i varje del, så undviker vi att skapa onödigt jobb för oss, och andra, i framtiden. Och vi undviker att skapa så stora jobb att ingen nånsin lär orka ta tag i dem ens. Hur man ska anropa modulens tr-funktion i olika fall som att accentuera "jo" eller inte är en sådan relevant sak att ta i beaktning. Och här kan man behöva fundera på att sättet att anropa Modul:translit-ru sker på ett liknande sätt som hur andra språkspecifika translit-moduler funkar, eftersom ju den generella Modul:translit är den som anropas från olika språks mallar. Angående Modul:fr-verb-konj så tänker jag att enhetlig namngivning på grammatikmoduler är språkkod-ordklass. "Konj" bör eventuellt vara en parameter. Och det är viktigt att alla grammatikmoduler bygger på [[Modul:grammar]] och [[Modul:grammar-table]]. Se mer här: [[Modul:grammar-example]]. Kanske försöker du återuppfinna hjulet på nytt i vissa avseenden? <br> ::När det gäller dokumentationen så tänker jag att den kan göras i slutet, när man löst alla problem och vet hur modulen (eller mallen) faktiskt fungerar. I slutet ''men(!)'' innan modulen börjar användas. Det finns inget tristare än att behöva gå igenom sidor med uppslag manuellt och ändra mallsyntax för att mallen eller modulen börjat användas innan den varit klar och genomtänkt. När man skriver dokumentationen så kan man upptäcka saker, precis som när man skapar testerna, allt man har missat att tänka på någonting. Och det bjuder också in andra deltagare att använda mallen och förstå hur den funkar. Alla är inte programmerare eller mallkodsexperter. Vi har tyvärr grammatikmallar och andra mallar idag som endast den personen som skapade mallen förstår sig på och kan använda. Det kanske kan ordnas med robotändringar och syntaxändringar i framtiden, men det hade ju varit önskvärt om det hade gjorts ordentligt från början. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 11.19 (CEST) pbo54l8wt80zd7b9hcd1anw3e5eruh3 3703361 3703349 2022-08-19T11:21:48Z Gabbe 1153 /* Några funderingar om modulkoden */ Tack! Då vet jag vad jag ska sätta tänderna i härnäst. wikitext text/x-wiki == Stilguide för moduler == Det finns en [[Wiktionary:Stilguide/Skapa_en_modul|stilguide för moduler]] som kanske har översetts när den här modulen och kanske en del andra moduler skapades. Jag skapade det här exempeltestet som en början till att belysa några av punkterna som tas upp i Stilguiden. Jag uppskattar försöket att fixa till det misslyckade enhetstestet. Att ett enhetstest misslyckas behöver inte vara något negativt. Det är grunden i TDD, test driven development, vilket är en teknik för att säkerställa att koden som skrivs är robust och inte lätt går sönder om man senare gör ändringar i koden. Den går i korthet ut på att man som steg ett skapar ett test som misslyckas. Sedan skapar man koden som får testet att lyckas. [https://canro91.github.io/2021/02/05/FailingTest/ https://canro91.github.io/2021/02/05/FailingTest/] var en sida som kom upp när jag googlade. Jag tänker att det är en relevant aspekt eftersom än skadlig ändring i en modul kan få konsekvenser för informationen på tiotusentals sidor. Så det misslyckade enhetstestet var alltså ett tecken på att någonting i själva modulen behöver åtgärdas - problemet var inte enhetstestet i sig, så att säga. Exempeltestet anropar en funktion som inte finns. Enligt stilguiden ska funktionens namn vara på engelska och skrivas med camelCase. "transkribera" är därför inte ett giltigt funktionsnamn. Jag föreslår "<s>br</s>tr", som är samma som parameternamnet i flera mallar, bl.a. översättningsmallarna. Det råkar också vara det funktionsnamn som engelska translitterationsmoduken för ryska använder. Men, andra engelska funktionsnamn kan absolut övervägas. Eftersom modulen är en hjälpmodul för huvudmodulen Modul:translit som i sin tur ska kunna användas av alla möjliga mallar och moduler tänker jag att det faktiskt är den här modulens funktioner som ska testat direkt - inte genom att anropa en mall som anropar en modul som anropar den här modulen. Om modulen endast är tänkt att användas av en specifik mall så kan det finnas skäl att använda UnitTest-funktionen "preprocess_equals" istället för "equals". När en modul anropas direkt av en mall, så ska "frame" användas som parametertabell, men Modul:translit/ru ska anropas av Modul:translit och inte direkt av en mall. Så "tr"-funktionen bör formas så att det är enkelt och smidigt att anropa funktionen - och vad är enklare och smidigare än att anropa funktionen med ett icke namngivet argument, alltså modul.tr(text_som_ska_translittereras)? Så tänkte jag när jag skapade exempelenhetstestet iallafall. Att jag benämnde det "exempeltest" var sedan att det allra bästa vore ju sedan att med enhetstester täcka in så mycket som möjligt av modulens funktionalitet. På detta sätt blir testsidan en ritning för hur man vill att modulen ska fungera och sedan är det förhållandevis enkelt att skapa själva modulen enligt den ritningen. [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 04.47 (CEST) ::{{@|Dodde}}: Ja, jag har mycket riktigt försummat stilguiden. {{=)}} Det var dock inte med flit. Jag kände inte till den förrän nu. Jag skriver om modulerna (vad gäller funktionsnamn, indentering via tabb, osv.) för att bli mer i enlighet med guiden. Jag antar att det du föreslår är att "transkribera"-funktionen ska heta '''tr''' (inte "br"). En fråga redan nu: finns det också en stilguide för dokumentationen som ska hamna på "/dok"? Eller åtminstone en modul som anses vara så exemplariskt dokumenterad att jag kan utgå ifrån den som något slags rättesnöre? ::Vad gäller enhetstesterna så har jag hittills gjort sånt offline i min Lua IDE innan jag gör någon ändring på Wiktionary. Precis som du nämner så började jag med en lista på "failing tests", för att sen skriva om modulen i enlighet med beteendet jag ville ha. Helt enligt TDD. Skälet till att jag gjort sånt på min stationära dator är att jag tycker det är lättare att utföra mer intrikata tester där. Exempelvis: när det står "ó", är det lika med "o" följt av Unicodetecknet U+0301, eller är det lika med U+00F3? Jag fattar att när en mall eller modul ska användas på tiotusentals sidor så blir det mycket mer betryggande ifall sådana tester sköts offentligt via "/test". Det är också vad jag avser göra framgent. ::Jag skriver också om modulerna så att {{mall|tr}} anropar [[Modul:translit]] som sen anropar [[Modul:translit/ru]] (istället för, som nu, att mallen direkt anropar de språkspecifika modulerna). [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 06.30 (CEST) :::{{@|Gabbe}} Haha, oops, tr, inte br, tack! Det finns ingen stilguide för dokumentation vad jag känner till, men jag tänker att lämpliga delar att ha med på en dokumentationssida kan vara att förklara modulens syfte, hur man använder den (från en mall? från en annan modul? båda?), en specifikation för hur (de publika) funktionerna beter sig, dvs. modulens gränssnitt, och slutligen att själva testerna inkluderas, t.ex. som på [[Modul:h3/dok]] som kanske inte är bra nog att utgå från som rättesnöre, men kanske den, liksom ett antal andra moduler kan fungera som lite inspiration. Olika moduler kanske kan behöva lite olika typer av dokumentation. Man kan behöva tänka på var dokumentationen placeras och att rätt information hamnar på rätt plats. Är det lämpligt att beskriva ''mallens'' användning, alltså hur en användare ska använda en tillhörande mall, i ''modulens'' dokumentation? Eller är det hur mallen, alltså den som skapar själva mallkodeen, bör använda modulen som ska beskrivas? Troligen det senare. :::Har du möjlighet att ansluta till Wiktionarys Discord-chatt? Isåfall kan vi diskutera lite testning lite mer direkt och kanske utforma relevanta tester tillsammans. Just nu klurar jag på vad det är alla dina nytillagda tester testar för något :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.48 (CEST) ::::@[[Användare:Dodde|Dodde]]: (1) Tack för tipset! Jag funderar vidare på vad som ska dokumenteras var. (2) Nej, jag har tyvärr inte möjlighet att ansluta till Wiktionarys Discord-chatt, eller något annat forum utanför Wiktionary. Ledsen för det. (3) De nytillagda testerna strävar efter att följa de som anges i [https://www.isof.se/download/18.648bef4b18093ee2f03ee80/1652364347434/Kyrillisk%20tabell%20SS2017.pdf Svenska språkregler]. Jag har tagit bort några av de rena dubbletterna, samt de som inte hör till ryska. Vad jag angett som "förväntat" beteende avviker från Svenska språkregler i två avseenden. Dels accentuerar modulen ё automatiskt i flerstaviga ord (så att det blir Gorbatjóv, inte Gorbatjov). Svenska skrivregler har istället alla ord utan accent (vilket var vad jag implementerade först). Varför jag accentuerar automatiskt följer av meningsutbytet mellan mig och LA2 på [[Wiktionary:Bybrunnen#Modul för translitterering av ryska]]. Det andra avseendet som jag avsiktligen avviker från Svenska skrivregler är deras sista exempel: namnet Ярослав. De har tyvärr skrivit Яролав, vilket egentligen blir Jarolav. Tråkigt när det är "fel i facit", så att säga, men så kan det bli. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 13.03 (CEST) :::::{{@|Gabbe}}, okej, tack för klargörande. Jag hoppas jag att det är ok att jag ändrar i mallar och moduler direkt, så kan vi diskutera ändringarna i efterhand om frågor uppstår. Eftersom replikskiftet på en diskussionssida på Wiktionary sker med mycket mer sällan än det typiskt sker i en chatt, kanske det är mer pragmatiskt att göra så, så att det inte tar onödigt lång tid att skapa en modul eller mall? :::::När det gäller testerna, så tänker jag att det är viktigt att det dels är tydligt ''vad'' som testas, men också att rätt saker testas, och att det som testas är så isolerat som möjligt. Jag tänker att testerna med namnen från Skrivregler-dokumentet i testerna inte riktigt gör det. Jag ska försöka ändra direkt i testkoden, men vi behöver hjälpas åt för att det ska bli rätt i slutänden. Här förklarar jag hur jag tänker: :::::1. gruppera liknande tester i var sin funktion och ge funktionerna talande namn. Här kan det ibland vara nödvändigt att lägga till en förklarande kommentar. Inled funktionsnamnet med något gemensamt så att de hamnar i en ordning som blir översiktlig, exempelvis test1_blabla, test2_blabla, eller test01 om antalet testgrupper är 10 eller fler. Enklare, mer allmängiltiga tester längre upp, mer specialiserade tester längre ner för att ge en bättre överblick. Testerna inkluderas ju på sidan med dokumentation, så att det ger en samlad överblick är väsentligt. :::::2. låt oss testa varje enskild funktionalitet för sig. Svenska språkregler ger exemplet "К к k Куприн → Kuprin", och nu finns testet self:equals('mut.tr("Куприн")', mut.tr("Куприн"), "Kuprin"). Vad vi är intresserade av här är egentligen att kolla att К translittereras till K, varför inte testa just bara den här bokstaven, då, varför lägga till fler felkällor än nödvändigt? Men det viktiga är att vi ju ''också'' vill testa så att к blir k, men к finns ju inte ens med i strängen "Куприн", så här missar vi något som borde testas. För att det inte ska bli så ofantligt många rader för de väldigt enkla testerna som testar varje bokstav enskilt, så grupperar jag dem fem och fem. Exakt hur grupperingar sker spelar inte så stor roll, syftet är bara att det ska bli tydligt och överskådligt. :::::3. en fråga dök upp och det borde avspeglas i testerna: borde Ж bli ZJ när det står självständigt eller i ett ord med bara kyrilliska versaler och Zj när det förekommer framför en gemen bokstav? (Vem hade ens tänkt på detta utan tester? :D) I testet använder jag mig av А och a som hjälp-bokstäver. :::::4. vad händer när (3.) skickas in som en del av en mening? Det bör testas så att man vet att modulen klarar av att translitterera rätt även när ordet inte är isolerat, utan förekommer med andra ord skiljetecken. :::::5. "visa förhandsgranskning" med "Modul:translit/ru/test" för att se att testkoden ser ut som det är tänkt. Publicera ändringar. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 02.01 (CEST) :{{@|Dodde}}: Några kommentarer. Jag håller med om att en chatt skulle gå snabbare, men det är tyvärr inte ett alternativ för mig. Vidare angående (3) som är en viktig fråga: Normalt use-case på Wiktionary är ord med enbart gemener. Naturligtvis finns det många ord som innehåller versaler. Ett ord som ''[[кубик Рубика]]'', då ska stora bokstaven i andra ordet bli stor. Däremot är det mindre vanligt med ord som har två stora versaler på rad. I sådana fall är det vanligast (i den verkligen världen utanför Wiktionary) att ЖА blir ZjA. Detta för att förtydliga att "j":et inte är en oberoende bokstav. Eftersom det bara finns en stor bokstav innan A på kyrilliska bör texten med latinska bokstäver också bara ha en stor bokstav innan A:et. Det är det konventionella sättet att göra. När en stor bokstav på kyrilliska blir fler än en bokstav på latinska, då är det bara den första av de två bokstäverna som ska vara stor. Se till exempel inledningen till Wikipediasidan "[[w:en:Cheka|Cheka]]". Där blir förkortningen ВЧК till VChK (inte VCHK). På svenska är det vanligaste sättet att göra ВЧК till VTjK (inte VTJK), vilket min modul också gör idag. Det finns bara tre stora bokstäver på kyrilliska, därför finns det bara tre stora bokstäver på dess motsvarighet i latinska bokstäver. En person kan se VTjK på svenska och omedelbart fatta att det är en trebokstavsförkortning på ryska. Finns det välmotiverade argument till att "VTJK" skulle vara det konventionella sättet att göra på i svenska så är jag lyhörd för det. Annars lägger jag till att ВЧК ska bli VTjK som en rad i "/test", samt tar bort "JE,JO,ZJ,ZJA". Min uppfattning är att de senare är felaktiga allihopa. :Det är naturligtvis okej att du ändrar i mallar och moduler direkt! {{=)}} Det här är ju en wiki, trots allt. Jag "äger" inte något av detta. Om du gör en ändring som jag uppfattar som en förändring till det sämre kan jag ju alltid revert:a. :Jag kan lägga till fler rader som förtydligar exakt vad varje test testar för något. Jag antar att det är via funktionsnamnet på engelska som det ska klargöras (som du gjorde)? Fem och fem låter förståndigt. Finns det något tak på hur många tester testsidan kan innehålla? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) ::{{@|Gabbe}}: Jag respekterar naturligtvis att chatt inte funkar för dig, oavsett anledning. :) Angående ZjA osv, tack för den utförliga förklaringen, då förstår jag. Jag ska korrigera testerna som byggde på det felaktiga antagandet. Tack för tillåtelsen, ja precis, då är det bara att reverta. :) ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 11.32 (CEST) == Gorbatjóv-testet == {{@|Gabbe}} Det förväntade resultatet av Gorbatjóv-testet är "Gorbatjóv" (ó som ett unikt "pre composed" tecken med Unicode-kodpunkt 00F3), men det som returneras av modulen är "Gorbatjóv" (ó som två separata tecken, o och ett "combining character" ´ med Unicode-kodpunkt 0301) och när dessa två strängar jämförs så misslyckas testet, även om de två strängarna ''ser'' likadana ut. Att enhetstestet misslyckas är alltså korrekt och koden behöver åtgärdas för att testat ska lyckas. (Som i stycket ovan, att åtgärda testet i sig, så att det lyckas är inte rätt väg att gå). Och kanske är det så att andra moduler behöver fixas på motsvarande sätt. Det finns något som heter Unicode normalization, och det kan lite förenklat utifrån just detta exemplet ske genom att dela upp ett tecken i två, "decompose", eller slå ihop dem till en, "compose". Givet att du har två "decomposed" tecken, o och ´, så behöver modulen en funktion som "compose" dem till en, ó , vilket kallas för NFC, Normalization Form Composition. Det finns kanske en färdig sådan kod man isåfall måste importera till svwikt. Men det bästa vore no att inte skapa några "decomposed" characters till att börja med, om det är möjligt att undvika? ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 05.58 (CEST) :{{@|Dodde}}: Jag kan ändra koden så att den inte skapar några "decomposed" som utdata. Frågan är om det är rätt väg att gå. Låt mig ge några exempel: Ett typiskt indata till den ryska modulen är ''каню́ля''. Eftersom det (vad jag vet) inte finns något "composed" tecken för ю́ så skickas det in som ю med modifiern. Det förvandlar sen min mall i nuläget till {{tr|ru|каню́ля}}, alltså "u" med "´" modifiern. Då kan man förstås göra om så att den istället returnerar kanjúlja (alltså composed). Då kommer genast en följdfråga. Här på Wiktionary har vi även möjlig indata som blandar kyrillisk och icke-kyrillisk text. Exempel är [[IP-адрес]] och [[β-распад]]. Just de två har inga modifiers på den icke-kyrilliska biten. Hur borde mallen göra ifall de hade haft det? Ska ÍP-адрес som indata ge olika utdata ifall det första tecknet är decomposed eller inte? Min tanke med modulen är att låta modifiers på icke-kyrillisk indata vara ifred. Om de var decomposed i indata blir de det i utdata också. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 07.33 (CEST) :{{@|Dodde}}: Jag har gjort så att den istället "composar" ó i Gorbatjóv (och motsvarande för de andra vokalerna i den kyrilliska delen av indatan). När indata blandar kyrilliska och icke-kyrilliska tecken så låter den däremot eventuella modifiers på den icke-kyrilliska indatan vara ifred. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.11 (CEST) ::Eller, rättare sagt, den composar á, é, ó, ú, och í, vilket är vad som kan komma från den kyrilliska delen av datan. Om de förekommer i den icke-kyrilliska delen av indata composas de också. Andra slags modifiers låter den vara. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 18 augusti 2022 kl. 08.15 (CEST) :::{{@|Gabbe}} Jag har svårt att avgöra vad modulen ''borde'' göra rörande composed och decomposed. Allt detta är i stort sett obeprövad mark för mig också :). Man kan googla och man kan snegla på enwikt som ''ibland'' redan kan ha löst problemet som man försöker lösa. Om man lägger till tester för de här sakerna så blir det också åtminstone tydligt hur vår avsikt är att modulen ska fungera, och fungerande tester visar att koden fungerar som det är tänkt. Blir man i ett senare skede klokare och vill ändra avsikt, är det lätt att ändra testerna, och sedan ändra i koden. Om indata med "decomposed" tecken förekommer kanske man kan lägga dem i en kategori dels om man anser att det är fel att ha sådan indata, dels för att senare granska de fall som uppstått och vid en senare tidpunkt avgöra vad man borde göra - korrigera indata eller göra ytterligare en ändring i modulen. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 18 augusti 2022 kl. 12.08 (CEST) == Några funderingar om modulkoden == Har några funderingar om modulkoden och förslag på ändringar: 1. Varför inte ange argumentets namn direkt? <br><code>function export.tr( argument )</code> <br><code>local text = argument</code> <br>-> <br><code>function export.tr(text)</code> 2. a)Varför heter funktionen accentuera_jo och inte bara accentuera? Vad betyder jo? (föreslår att mellanslagen tas bort för enhetligt utseende). Också bra med engelska namn på funktioner. Kommentaren är vilseledande <br> <code>function accentuera_jo ( text )</code> <br>-> <br><code>function accentuate(text)</code> 3. Stilguiden rekommenderar kod utan kommentarer och erbjuder länkar till fördjupning om skälen till varför det är bra. Kan funktionens namn göras tydligare så slipper vi kommentarer helt. Kan man säga att man explicit lägger till accenter till textsträngen? I så fall kanske funktionen kan heta <br><code>function accentuate_explicitly(text)</code> 4. Bra med engelska namn på funktioner, och att ha "ru" i funktionsnamnet är överflödigt. <br><code>function transkribera_ru(text)</code> <br>-> <br><code>function transliterate(text)</code> 5. Att accentuera den ryska texten, är inte det en del av translitterationsprocessen? Isåfall kanske anropet till accentuera-funktionen ska flytta in i transliterate-funktionen. 6. Varför returnerar inte transliterate-funktionen det vi vill ha? Den returnerar en tabell som vi måste hantera och göra om till en textsträng. Det kan transliterate-funktionen ta hand om. En textsträng borde vi kunna få serverat på ett silverfat istället. Koden blir isåfall: <code>function export.tr(text) return transliterate(text) end</code> 7. Wow. Det enda tr-funktionen gör är att anropa transliterate-funktionen och returnera vad den funktionen returnerar. Nu blir det uppenbart att vi inte behöver nån transliterate-funktion då vi lika gärna kan placera koden direkt i tr-funktionen. 8. De där köfunktionerna verkar återanvändas i flera moduler. Det finns en programmeringsprincip som heter DIY - don't repeat yourself. De borde kanske brytas ut till en egen hjälpmodul? Samtidigt ser det rätt rörigt ut när de används. Man måste liksom veta vad koden är tänkt att göra för att förstå vad den gör. Jag undrar om det finns något alternativt angreppssätt. Kanske inte. Jag får fundera lite till. Man kan säkert fila på det lite grann, åtminstone. Men lättare när testerna är på plats... ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 05.51 (CEST) :{{@|Dodde}}: Jag har ännu inte hunnit översatt alla variabel- och funktionsnamn till engelska. Jag har för avsikt att hinna färdigt med det innan månaden är slut. Funktionen "accentuera_jo" heter så eftersom den accentuerar (sätter dit en akut accent "´") på bokstaven "jo" (ё). En översättning till engelska skulle alltså bli "accentuate_yo". Den accentuerar inte någon annan bokstav än just ''jo'' ("yo" på engelska). Syftet med den funktionen är just det här problemet med Gorbatjov / Gorbatjóv. Att det förut blev "Gorbatjov" (utan accent) betraktade jag som en feature, inte en bugg. LA2 beskrev det som mycket mer användarvänligt om det görs automatiskt. Man kan ha olika åsikter, men jag är benägen att hålla med LA2. Jag kan föreställa mig att det finns situationer där man faktiskt vill ha utan accent. Då kommer det eventuellt vara relevant att kunna anropa den större funktionen utan att ha kört "accentuera_jo" / "accentuate_yo" först. Det kan man antingen lösa genom att anropa olika funktionsnamn, eller genom att ha en "boolean" som avgör huruvida "accentuera_jo" ska köras innan resten av funktionen körs. :Att köfunktionerna används i flera moduler har du rätt i. Om det finns en konsensus här att det vore bättre att därför ha dem utanför modulen så kan jag flytta dem till en separat modul med generella köfunktioner. Jag tänkte att det var en lite för "simpel" sak för att ha en egen modul för. Köer är rätt grundläggande. [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 08.06 (CEST) :{{@|Dodde}}: Jag kan väl också säga så här: Från och med september kommer jag ha saker i mitt liv utanför Wiktionary som gör att jag kommer delta här i mer begränsad omfattning. Jag kommer inte sluta med Wiktionary, men jag kommer vara märkbart mindre aktiv än vad jag varit den här veckan. Tills dess har jag alltså begränsat med tid. Den tiden kan prioriteras på lite olika saker. Några exempel (i ingen särskild ordning): :#Lägga till nya funktioner. Exempel på det vore det LA2 pratade om, att när ett ord på ryska har fler än en stavelse, men inga accent-tecken, så ska sidan som anropar modulen placeras i en dold kategori. Då har användaren varit "lat" och glömt att accentuera texten tillräckligt, vilket borde åtgärdas manuellt. :#Göra "/test" mer utförlig angående vad jag betraktar som modulernas features redan idag, så att andra användare lättare förstår vad som mallen och modulen "förväntas" göra. :#Göra dokumentationen som ska ligga under "/dok" :#Göra "estetiska" förändringar av själva källkoden. Med det menar jag sådant som gör koden mer i linje med Stilguiden (engelska funktionsnamn, tabbar för indentering, osv), men som i övrigt inte förändrar vilken utdata som kommer ifrån en given indata. Sånt är även det viktigt för att andra användare lättare ska kunna ändra koden. :Detta gäller för såväl de här modulerna som används av {{mall|tr}}, men även för ett annat projekt jag jobbat med, nämligen {{mall|fr-verb-test}} (och de moduler som den använder, [[Modul:fr-verb-artikel]] och [[Modul:fr-verb-konj]]). Helst ska jag förstås göra alla de ovanstående de närmsta två veckorna. Men det kommer jag nog inte hinna om vi ska vara realistiska. Det jag beskriver ovan tar olika lång tid och är olika viktigt. Om du fick önska, vad tycker du vore mest högprioriterat av dessa? I vilken ordning borde jag fokusera min energi de närmsta par veckorna? Jag tänker mig att en gedigen "/test" för varje modul är det som har allra högst prioritet. Håller du med? [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 09.48 (CEST) ::{{@|Gabbe}} Tack för förklaringen av "jo". Då förstår jag. Jag ska ändra testerna rörande detta. <br> ::Att ha genomtänkta gedigna tester är a och o ur så många synvinklar. Jag håller med om att det är prioriterat. Kvalitet före kvantitet. Men också: Gör Modul:translit/ru ordentligt först, så blir Modul:translit/uk så gott som ett copy-paste-jobb. Med DRY-principen behöver dessutom minimalt med kod copy-pastas. Och med bra, genomtänkt kod, blir även andra moduler enklare att göra. Man behöver inte diskutera hur man löser samma problem, om och om igen. Har man löst ett problem på ett tillfredsställande sätt i en modul, kan man återanvända den lösningen. När testerna är genomtänkta och kompletta, så finns det inget sätt för modulkoden att göra fel (utan att testerna misslyckas) och på så sätt bäddar man för att fler kan bidra till modulen i framtiden utan att någon ska behöva vara orolig för att det får oväntade konsekvenser. <br> ::Angående extra funktionalitet. Är det bra, genomtänkt funktionalitet, lägg till det som en del av testerna i ett tidigt skede. Skulle det visa sig att en del funktioner är komplicerade att inkludera, så kan man kommentera ut testerna så länge, längre fram. Om du inte vet exakt hur testerna ska utformas, skriv en kommentar med en beskrivning och vad som behöver testas, så kan man återkomma till det så fort man har en lösning på det. <br> ::När det gäller kosmetiska förändringar. Framförallt är det viktigt att funktioner som exporteras har genomtänkta namn och att deras syntax är genomtänkta. Det är endast dessa som bör dokumenteras. Det blir lksom ett kontrakt med användaren, att "om du använder dig av modulen på det som beskrivs här, så kan du lita på att det fungerar, även i framtiden". Om vi vill ändra på en funktions namn eller hur den fungerar, så måste vi ta höjd för alla andra moduler och/eller mallar, och i förlängningen mallanrop på sidor med uppslag, korrigeras så att de fungerar med vår uppdatering. Och det kan vara ett stort jobb, som kräver att tiotusentals sidor uppdateras. Ungefär som är nödvändigt med sidor som använder {{mall|härledning}} just nu. Men, det är svårt att förutse alla situationer som kan uppstå. Därför hamnar vi ändå i de här situationerna ibland. Men om vi lägger extra tid och energi på att få det rätt från början, genom att fokusera på kvalitet i varje del, så undviker vi att skapa onödigt jobb för oss, och andra, i framtiden. Och vi undviker att skapa så stora jobb att ingen nånsin lär orka ta tag i dem ens. Hur man ska anropa modulens tr-funktion i olika fall som att accentuera "jo" eller inte är en sådan relevant sak att ta i beaktning. Och här kan man behöva fundera på att sättet att anropa Modul:translit-ru sker på ett liknande sätt som hur andra språkspecifika translit-moduler funkar, eftersom ju den generella Modul:translit är den som anropas från olika språks mallar. Angående Modul:fr-verb-konj så tänker jag att enhetlig namngivning på grammatikmoduler är språkkod-ordklass. "Konj" bör eventuellt vara en parameter. Och det är viktigt att alla grammatikmoduler bygger på [[Modul:grammar]] och [[Modul:grammar-table]]. Se mer här: [[Modul:grammar-example]]. Kanske försöker du återuppfinna hjulet på nytt i vissa avseenden? <br> ::När det gäller dokumentationen så tänker jag att den kan göras i slutet, när man löst alla problem och vet hur modulen (eller mallen) faktiskt fungerar. I slutet ''men(!)'' innan modulen börjar användas. Det finns inget tristare än att behöva gå igenom sidor med uppslag manuellt och ändra mallsyntax för att mallen eller modulen börjat användas innan den varit klar och genomtänkt. När man skriver dokumentationen så kan man upptäcka saker, precis som när man skapar testerna, allt man har missat att tänka på någonting. Och det bjuder också in andra deltagare att använda mallen och förstå hur den funkar. Alla är inte programmerare eller mallkodsexperter. Vi har tyvärr grammatikmallar och andra mallar idag som endast den personen som skapade mallen förstår sig på och kan använda. Det kanske kan ordnas med robotändringar och syntaxändringar i framtiden, men det hade ju varit önskvärt om det hade gjorts ordentligt från början. ~ [[Användare:Dodde|Dodde]] ([[Användardiskussion:Dodde|diskussion]]) 19 augusti 2022 kl. 11.19 (CEST) :::{{@|Dodde}}: Tack! Jag uppskattar dina kommentarer och håller väl egentligen med om allting. Det blir lite av ett diskussionsmässigt sidospår med [[Modul:grammar]], men tack för att du nämnde dem också! Jag kände inte till dem sedan tidigare. Det jag gjorde var att (efter [[Wiktionary:Teknikvinden#Hur få moduler att returnera flera rader?|denna diskussion]] för en dryg månad sen) göra en modul som strävade att returnera samma sak som {{mall|fr-verb-er}}, {{mall|fr-verb-aître}} med flera gör idag. Det vill säga, gå in på HTML-källkod-nivån och kolla med [https://text-compare.com/ text-compare.com], liksom. Vad jag kunde se var det ingen av de mallarna som använde Modul:grammar. Det blir lite pill att gå över till grammatikmodulen, men det verkar absolut som att det kan vara värt det! {{=)}} [[Användare:Gabbe|Gabbe]] ([[Användardiskussion:Gabbe|diskussion]]) 19 augusti 2022 kl. 13.21 (CEST) gv9mv3yu28979m6c598oefqkocoum4d åkerren 0 929007 3703257 3703167 2022-08-18T16:26:07Z Christoffre 6867 /* Svenska */+Översättning wikitext text/x-wiki ==Svenska== ===Substantiv=== {{subst|sv}} '''åkerren''' #[[ouppodlad]] [[gräsbevuxen]] [[landremsa]] längst en [[åker]] #:{{citat|år=1834|titel=[https://litteraturbanken.se/f%C3%B6rfattare/GeijerEG/titlar/MinnenUtdragUrBref/sida/193/etext Minnen. Utdrag ur bref och dagböcker.]|publ=Palmblad & C.|förf=Erik Gustaf Geijer|sid=193|Fordom stod der ett Acacieträd. Det är på en grön '''åkerren'''. Folket kallar den der Schwedenrain och visar stället.}} #:{{citat|år=1868|titel=[https://litteraturbanken.se/f%C3%B6rfattare/Anonym/titlar/L%C3%A4sebokF%C3%B6rFolkskolan1868/sida/212/faksimil Läsebok för folkskolan]|publ=P. A. Norstedt & Söner|förf=Anonym|sid=212|Detta bo, som förlägges antingen i någon skogsbacke under trädrötter, stenar och berghällar, eller äfven någon gång på slätten i kanten af en '''åkerren''', är oftast försedt med flere ingångar samt för öfrigt af ganska vidsträckt omfång.}} #:{{citat|år=2022|datum=21 juni|titel=[https://jordbruksverket.se/vaxter/odling/biologisk-mangfald/natur--och-kulturmiljoer Natur- och kulturmiljöer]|förf=Jordbruksverket|Du får inte sprida slam och gödsel utanför åkern eftersom '''åkerrenar''' är viktiga livsmiljöer för växter och djur. [...] '''Åkerrenar''' är också ett viktigt skydd för småvilt som rapphöns, fasaner och hare. Även fåglar som gulsparv och sånglärka använder '''åkerrenar''' som boplats och den sällsynta kornknarren tar under våren ofta skydd i '''åkerrenens''' växtlighet.}} #:{{synonymer|åkerkant}} #:{{etymologi|{{härledning|gmq-fsv|akra ren}} Belagt sen ca 1520.<ref>{{källa-saob|åkerren|18 augusti 2022|unik=U_%C3%851_89484}}</ref>}} ====Översättningar==== {{ö-topp|ouppodlad gräsbevuxen landremsa}} *engelska: {{ö|en|balk}} *tyska: {{ö|de|Ackerrain}}, {{ö|de|Feldrain}} {{ö-botten}} ===Källor=== <references/> fordwsavao9sehk0w018qbhb4agpy71 3703258 3703257 2022-08-18T16:28:18Z Christoffre 6867 /* Översättningar */ wikitext text/x-wiki ==Svenska== ===Substantiv=== {{subst|sv}} '''åkerren''' #[[ouppodlad]] [[gräsbevuxen]] [[landremsa]] längst en [[åker]] #:{{citat|år=1834|titel=[https://litteraturbanken.se/f%C3%B6rfattare/GeijerEG/titlar/MinnenUtdragUrBref/sida/193/etext Minnen. Utdrag ur bref och dagböcker.]|publ=Palmblad & C.|förf=Erik Gustaf Geijer|sid=193|Fordom stod der ett Acacieträd. Det är på en grön '''åkerren'''. Folket kallar den der Schwedenrain och visar stället.}} #:{{citat|år=1868|titel=[https://litteraturbanken.se/f%C3%B6rfattare/Anonym/titlar/L%C3%A4sebokF%C3%B6rFolkskolan1868/sida/212/faksimil Läsebok för folkskolan]|publ=P. A. Norstedt & Söner|förf=Anonym|sid=212|Detta bo, som förlägges antingen i någon skogsbacke under trädrötter, stenar och berghällar, eller äfven någon gång på slätten i kanten af en '''åkerren''', är oftast försedt med flere ingångar samt för öfrigt af ganska vidsträckt omfång.}} #:{{citat|år=2022|datum=21 juni|titel=[https://jordbruksverket.se/vaxter/odling/biologisk-mangfald/natur--och-kulturmiljoer Natur- och kulturmiljöer]|förf=Jordbruksverket|Du får inte sprida slam och gödsel utanför åkern eftersom '''åkerrenar''' är viktiga livsmiljöer för växter och djur. [...] '''Åkerrenar''' är också ett viktigt skydd för småvilt som rapphöns, fasaner och hare. Även fåglar som gulsparv och sånglärka använder '''åkerrenar''' som boplats och den sällsynta kornknarren tar under våren ofta skydd i '''åkerrenens''' växtlighet.}} #:{{synonymer|åkerkant}} #:{{etymologi|{{härledning|gmq-fsv|akra ren}} Belagt sen ca 1520.<ref>{{källa-saob|åkerren|18 augusti 2022|unik=U_%C3%851_89484}}</ref>}} ====Översättningar==== {{ö-topp|ouppodlad gräsbevuxen landremsa}} *engelska: {{ö|en|balk}}, {{ö|en|headland}} *tyska: {{ö|de|Ackerrain}}, {{ö|de|Feldrain}} {{ö-botten}} ===Källor=== <references/> cd556lrkvkwwf8pj4sc35y5gbdx7gw4 Modul:translit/grc/test 828 929021 3703214 2022-08-18T12:24:48Z Gabbe 1153 la till första exemplet från LoC Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/grc") function t:test2_example() -- de från https://www.loc.gov/catdir/cpso/romanization/greek.pdf self:equals('mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι")', mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι"), "Hēsiódou tou Askraíou Erga kai hēmérai") end return t q1imv6mxti2z9iqjui1mydtgdq53w9h 3703215 3703214 2022-08-18T12:32:33Z Gabbe 1153 la till resten från LOC Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/grc") function t:test2_example() -- de från https://www.loc.gov/catdir/cpso/romanization/greek.pdf self:equals('mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι")', mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι"), "Hēsiódou tou Askraíou Erga kai hēmérai") self:equals('mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς")', mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς"), "Hē tou Homḗrou Iliás") self:equals('mut.tr("Φίληβος ἢ Περὶ ἡδονῆς")', mut.tr("Φίληβος ἢ Περὶ ἡδονῆς"), "Fílēbos ē Peri hēdonēs") self:equals('mut.tr("Ἀγνώστῳ θεῷ")', mut.tr("Ἀγνώστῳ θεῷ"), "Agnṓstō theō") self:equals('mut.tr("κεῖται παρ’ Ἅιδῃ")', mut.tr("κεῖται παρ’ Ἅιδῃ"), "keitai par’ Haidē") self:equals('mut.tr("Αἴτια Ῥωμαϊκά")', mut.tr("Αἴτια Ῥωμαϊκά"), "Aítia Rhōmaiká") self:equals('mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον")', mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον"), "Hoti oud’ hēdéōs zēn ésti kat’ Epíkouron") self:equals('mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ")', mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ"), "Peri tou mē rhadíōs pisteúein diabolē") self:equals('mut.tr("ἀΰπνους νύκτας ἴαυον")', mut.tr("ἀΰπνους νύκτας ἴαυον"), "aýpnous nýktas íauon") self:equals('mut.tr("Λητοῦς καὶ Διὸς υἱός")', mut.tr("Λητοῦς καὶ Διὸς υἱός"), "Lētous kai Dios huiós") self:equals('mut.tr("ὑϊκὸν πάσχειν")', mut.tr("ὑϊκὸν πάσχειν"), "hyikon páschein") self:equals('mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς")', mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς"), "eipe pros ton ándra ton heōutēs") self:equals('mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;")', mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;"), "tí toud’ an heúrēm’ hēuron eutychésteron;") self:equals('mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ")', mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ"), "Tou Kata pasōn hairéseōn elénchou biblíon aʹ") self:equals('mut.tr("καλὸν κἀγαθόν")', mut.tr("καλὸν κἀγαθόν"), "kalon kagathόn") self:equals('mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου")', mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου"), "ṓchonto thoimátion labóntes mou") self:equals('mut.tr("Περὶ ἰλίγγων")', mut.tr("Περὶ ἰλίγγων"), "Peri ilíngōn") self:equals('mut.tr("ὅτε τ’ ἴαχε σάλπιγξ")', mut.tr("ὅτε τ’ ἴαχε σάλπιγξ"), "hóte t’ íache sálpinx") self:equals('mut.tr("Ἐγχειρίδιον ἁρμονικῆς")', mut.tr("Ἐγχειρίδιον ἁρμονικῆς"), "Encheirídion harmonikēs") self:equals('mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι")', mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι"), "álasta de wérga páthon kaka mēsaménoi") self:equals('mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ")', mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ"), "Damaréta t’ eratá te Wianthemís") self:equals('mut.tr("ξένϝος")', mut.tr("ξένϝος"), "xénwos") self:equals('mut.tr("Πάτροϙλος")', mut.tr("Πάτροϙλος"), "Pátroḳlos") end return t ed4cc8waerli0mdsqkw9ei999ks9deh 3703232 3703215 2022-08-18T14:08:13Z Gabbe 1153 bytte ut ό (U+03CC) mot ó (U+00F3) Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/grc") function t:test2_example() -- de från https://www.loc.gov/catdir/cpso/romanization/greek.pdf self:equals('mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι")', mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι"), "Hēsiódou tou Askraíou Erga kai hēmérai") self:equals('mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς")', mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς"), "Hē tou Homḗrou Iliás") self:equals('mut.tr("Φίληβος ἢ Περὶ ἡδονῆς")', mut.tr("Φίληβος ἢ Περὶ ἡδονῆς"), "Fílēbos ē Peri hēdonēs") self:equals('mut.tr("Ἀγνώστῳ θεῷ")', mut.tr("Ἀγνώστῳ θεῷ"), "Agnṓstō theō") self:equals('mut.tr("κεῖται παρ’ Ἅιδῃ")', mut.tr("κεῖται παρ’ Ἅιδῃ"), "keitai par’ Haidē") self:equals('mut.tr("Αἴτια Ῥωμαϊκά")', mut.tr("Αἴτια Ῥωμαϊκά"), "Aítia Rhōmaiká") self:equals('mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον")', mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον"), "Hoti oud’ hēdéōs zēn ésti kat’ Epíkouron") self:equals('mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ")', mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ"), "Peri tou mē rhadíōs pisteúein diabolē") self:equals('mut.tr("ἀΰπνους νύκτας ἴαυον")', mut.tr("ἀΰπνους νύκτας ἴαυον"), "aýpnous nýktas íauon") self:equals('mut.tr("Λητοῦς καὶ Διὸς υἱός")', mut.tr("Λητοῦς καὶ Διὸς υἱός"), "Lētous kai Dios huiós") self:equals('mut.tr("ὑϊκὸν πάσχειν")', mut.tr("ὑϊκὸν πάσχειν"), "hyikon páschein") self:equals('mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς")', mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς"), "eipe pros ton ándra ton heōutēs") self:equals('mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;")', mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;"), "tí toud’ an heúrēm’ hēuron eutychésteron;") self:equals('mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ")', mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ"), "Tou Kata pasōn hairéseōn elénchou biblíon aʹ") self:equals('mut.tr("καλὸν κἀγαθόν")', mut.tr("καλὸν κἀγαθόν"), "kalon kagathón") self:equals('mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου")', mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου"), "ṓchonto thoimátion labóntes mou") self:equals('mut.tr("Περὶ ἰλίγγων")', mut.tr("Περὶ ἰλίγγων"), "Peri ilíngōn") self:equals('mut.tr("ὅτε τ’ ἴαχε σάλπιγξ")', mut.tr("ὅτε τ’ ἴαχε σάλπιγξ"), "hóte t’ íache sálpinx") self:equals('mut.tr("Ἐγχειρίδιον ἁρμονικῆς")', mut.tr("Ἐγχειρίδιον ἁρμονικῆς"), "Encheirídion harmonikēs") self:equals('mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι")', mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι"), "álasta de wérga páthon kaka mēsaménoi") self:equals('mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ")', mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ"), "Damaréta t’ eratá te Wianthemís") self:equals('mut.tr("ξένϝος")', mut.tr("ξένϝος"), "xénwos") self:equals('mut.tr("Πάτροϙλος")', mut.tr("Πάτροϙλος"), "Pátroḳlos") end return t og18ftrajsfija4py2uzbzcstzat965 3703234 3703232 2022-08-18T14:28:27Z Gabbe 1153 la till fyra rader Sofokles Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/grc") function t:test2_example() -- de från https://www.loc.gov/catdir/cpso/romanization/greek.pdf self:equals('mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι")', mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι"), "Hēsiódou tou Askraíou Erga kai hēmérai") self:equals('mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς")', mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς"), "Hē tou Homḗrou Iliás") self:equals('mut.tr("Φίληβος ἢ Περὶ ἡδονῆς")', mut.tr("Φίληβος ἢ Περὶ ἡδονῆς"), "Fílēbos ē Peri hēdonēs") self:equals('mut.tr("Ἀγνώστῳ θεῷ")', mut.tr("Ἀγνώστῳ θεῷ"), "Agnṓstō theō") self:equals('mut.tr("κεῖται παρ’ Ἅιδῃ")', mut.tr("κεῖται παρ’ Ἅιδῃ"), "keitai par’ Haidē") self:equals('mut.tr("Αἴτια Ῥωμαϊκά")', mut.tr("Αἴτια Ῥωμαϊκά"), "Aítia Rhōmaiká") self:equals('mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον")', mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον"), "Hoti oud’ hēdéōs zēn ésti kat’ Epíkouron") self:equals('mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ")', mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ"), "Peri tou mē rhadíōs pisteúein diabolē") self:equals('mut.tr("ἀΰπνους νύκτας ἴαυον")', mut.tr("ἀΰπνους νύκτας ἴαυον"), "aýpnous nýktas íauon") self:equals('mut.tr("Λητοῦς καὶ Διὸς υἱός")', mut.tr("Λητοῦς καὶ Διὸς υἱός"), "Lētous kai Dios huiós") self:equals('mut.tr("ὑϊκὸν πάσχειν")', mut.tr("ὑϊκὸν πάσχειν"), "hyikon páschein") self:equals('mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς")', mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς"), "eipe pros ton ándra ton heōutēs") self:equals('mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;")', mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;"), "tí toud’ an heúrēm’ hēuron eutychésteron;") self:equals('mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ")', mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ"), "Tou Kata pasōn hairéseōn elénchou biblíon aʹ") self:equals('mut.tr("καλὸν κἀγαθόν")', mut.tr("καλὸν κἀγαθόν"), "kalon kagathón") self:equals('mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου")', mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου"), "ṓchonto thoimátion labóntes mou") self:equals('mut.tr("Περὶ ἰλίγγων")', mut.tr("Περὶ ἰλίγγων"), "Peri ilíngōn") self:equals('mut.tr("ὅτε τ’ ἴαχε σάλπιγξ")', mut.tr("ὅτε τ’ ἴαχε σάλπιγξ"), "hóte t’ íache sálpinx") self:equals('mut.tr("Ἐγχειρίδιον ἁρμονικῆς")', mut.tr("Ἐγχειρίδιον ἁρμονικῆς"), "Encheirídion harmonikēs") self:equals('mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι")', mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι"), "álasta de wérga páthon kaka mēsaménoi") self:equals('mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ")', mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ"), "Damaréta t’ eratá te Wianthemís") self:equals('mut.tr("ξένϝος")', mut.tr("ξένϝος"), "xénwos") self:equals('mut.tr("Πάτροϙλος")', mut.tr("Πάτροϙλος"), "Pátroḳlos") end function t:test3_example() -- rad 1182–1185 från tragedin "Oedipus Rex" av Sofokles self:equals('mut.tr("Ἰοὺ ἰού· τὰ πάντʼ ἂν ἐξήκοι σαφῆ.")', mut.tr("Ἰοὺ ἰού· τὰ πάντʼ ἂν ἐξήκοι σαφῆ."), "Iou ioú· ta pántʼ an exḗkoi safē.") self:equals('mut.tr("Ὦ φῶς, τελευταῖόν σε προσβλέψαιμι νῦν,")', mut.tr("Ὦ φῶς, τελευταῖόν σε προσβλέψαιμι νῦν,"), "Ō fōs, teleutaión se prosblépsaimi nyn,") self:equals('mut.tr("ὅστις πέφασμαι φύς τʼ ἀφʼ ὧν οὐ χρῆν, ξὺν οἷς τʼ")', mut.tr("ὅστις πέφασμαι φύς τʼ ἀφʼ ὧν οὐ χρῆν, ξὺν οἷς τʼ"), "hóstis péfasmai fýs tʼ afʼ hōn ou chrēn, xyn hois tʼ") self:equals('mut.tr("οὐ χρῆν ὁμιλῶν, οὕς τέ μʼ οὐκ ἔδει κτανών.")', mut.tr("οὐ χρῆν ὁμιλῶν, οὕς τέ μʼ οὐκ ἔδει κτανών."), "ou chrēn homilōn, hoús té mʼ ouk édei ktanṓn.") end return t 2fggni0i6wbyfs5m8kd1jyt7rj5e5jg 3703235 3703234 2022-08-18T14:29:16Z Gabbe 1153 ... fast med sär-beta Scribunto text/plain local t = require("Modul:UnitTests") local mut = require("Modul:translit/grc") function t:test2_example() -- de från https://www.loc.gov/catdir/cpso/romanization/greek.pdf self:equals('mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι")', mut.tr("Ἡσιόδου τοῦ Ἀσκραίου Ἔργα καὶ ἡμέραι"), "Hēsiódou tou Askraíou Erga kai hēmérai") self:equals('mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς")', mut.tr("Ἡ τοῦ Ὁμήρου Ἰλιάς"), "Hē tou Homḗrou Iliás") self:equals('mut.tr("Φίληβος ἢ Περὶ ἡδονῆς")', mut.tr("Φίληβος ἢ Περὶ ἡδονῆς"), "Fílēbos ē Peri hēdonēs") self:equals('mut.tr("Ἀγνώστῳ θεῷ")', mut.tr("Ἀγνώστῳ θεῷ"), "Agnṓstō theō") self:equals('mut.tr("κεῖται παρ’ Ἅιδῃ")', mut.tr("κεῖται παρ’ Ἅιδῃ"), "keitai par’ Haidē") self:equals('mut.tr("Αἴτια Ῥωμαϊκά")', mut.tr("Αἴτια Ῥωμαϊκά"), "Aítia Rhōmaiká") self:equals('mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον")', mut.tr("Ὅτι οὐδ’ ἡδέως ζῆν ἔστι κατ’ Ἐπίκουρον"), "Hoti oud’ hēdéōs zēn ésti kat’ Epíkouron") self:equals('mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ")', mut.tr("Περὶ τοῦ μὴ ῥᾳδίως πιστεύειν διαβολῇ"), "Peri tou mē rhadíōs pisteúein diabolē") self:equals('mut.tr("ἀΰπνους νύκτας ἴαυον")', mut.tr("ἀΰπνους νύκτας ἴαυον"), "aýpnous nýktas íauon") self:equals('mut.tr("Λητοῦς καὶ Διὸς υἱός")', mut.tr("Λητοῦς καὶ Διὸς υἱός"), "Lētous kai Dios huiós") self:equals('mut.tr("ὑϊκὸν πάσχειν")', mut.tr("ὑϊκὸν πάσχειν"), "hyikon páschein") self:equals('mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς")', mut.tr("εἶπε πρὸς τὸν ἄνδρα τὸν ἑωυτῆς"), "eipe pros ton ándra ton heōutēs") self:equals('mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;")', mut.tr("τί τοῦδ’ ἂν εὕρημ’ ηὗρον εὐτυχέστερον;"), "tí toud’ an heúrēm’ hēuron eutychésteron;") self:equals('mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ")', mut.tr("Τοῦ Κατὰ πασῶν αἱρέσεων ἐλέγχου βιβλίον αʹ"), "Tou Kata pasōn hairéseōn elénchou biblíon aʹ") self:equals('mut.tr("καλὸν κἀγαθόν")', mut.tr("καλὸν κἀγαθόν"), "kalon kagathón") self:equals('mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου")', mut.tr("ᾤχοντο θοἰμάτιον λαβόντες μου"), "ṓchonto thoimátion labóntes mou") self:equals('mut.tr("Περὶ ἰλίγγων")', mut.tr("Περὶ ἰλίγγων"), "Peri ilíngōn") self:equals('mut.tr("ὅτε τ’ ἴαχε σάλπιγξ")', mut.tr("ὅτε τ’ ἴαχε σάλπιγξ"), "hóte t’ íache sálpinx") self:equals('mut.tr("Ἐγχειρίδιον ἁρμονικῆς")', mut.tr("Ἐγχειρίδιον ἁρμονικῆς"), "Encheirídion harmonikēs") self:equals('mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι")', mut.tr("ἄλαϲτα δὲ ϝέργα πάθον κακὰ μηϲαμένοι"), "álasta de wérga páthon kaka mēsaménoi") self:equals('mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ")', mut.tr("Δαμαρέτα τ’ ἐρατά τε Ϝιανθεμίϲ"), "Damaréta t’ eratá te Wianthemís") self:equals('mut.tr("ξένϝος")', mut.tr("ξένϝος"), "xénwos") self:equals('mut.tr("Πάτροϙλος")', mut.tr("Πάτροϙλος"), "Pátroḳlos") end function t:test3_example() -- rad 1182–1185 från tragedin "Oedipus Rex" av Sofokles self:equals('mut.tr("Ἰοὺ ἰού· τὰ πάντʼ ἂν ἐξήκοι σαφῆ.")', mut.tr("Ἰοὺ ἰού· τὰ πάντʼ ἂν ἐξήκοι σαφῆ."), "Iou ioú· ta pántʼ an exḗkoi safē.") self:equals('mut.tr("Ὦ φῶς, τελευταῖόν σε προσϐλέψαιμι νῦν,")', mut.tr("Ὦ φῶς, τελευταῖόν σε προσϐλέψαιμι νῦν,"), "Ō fōs, teleutaión se prosblépsaimi nyn,") self:equals('mut.tr("ὅστις πέφασμαι φύς τʼ ἀφʼ ὧν οὐ χρῆν, ξὺν οἷς τʼ")', mut.tr("ὅστις πέφασμαι φύς τʼ ἀφʼ ὧν οὐ χρῆν, ξὺν οἷς τʼ"), "hóstis péfasmai fýs tʼ afʼ hōn ou chrēn, xyn hois tʼ") self:equals('mut.tr("οὐ χρῆν ὁμιλῶν, οὕς τέ μʼ οὐκ ἔδει κτανών.")', mut.tr("οὐ χρῆν ὁμιλῶν, οὕς τέ μʼ οὐκ ἔδει κτανών."), "ou chrēn homilōn, hoús té mʼ ouk édei ktanṓn.") end return t 2ayffu121qw83qquaooeu05jmhp47yp Kategori:Japanska/Uppslag med kanji läst som いし 14 929022 3703217 2022-08-18T12:45:56Z Kusurija 8159 Kategori wikitext text/x-wiki [[Kategori:Japanska/Uppslag med kun'yomi kanji läsning|いし]] kbcd37gjeza8w6c6jpkax22uvzsbxdc Kategori:CJK/Uppslag med 石 14 929023 3703219 2022-08-18T12:57:20Z Kusurija 8159 Kategori wikitext text/x-wiki [[Kategori:CJK/Alla uppslag|石]] [[Kategori:CJK radikal/Uppslag med radikal 112 石|00]] 7vmuk2nrme09zxmqpx5o24zqehapr1q Kategori:Japanska/Uppslag med kanji läst som セキ (漢音) 14 929024 3703223 2022-08-18T13:19:44Z Kusurija 8159 Kategori wikitext text/x-wiki [[Kategori:Japanska/Uppslag med kan'on kanji läsning|セキ]] ggk2qjq8l33hxrlc0ttbicwproq5ykt pysslet 0 929025 3703227 2022-08-18T13:32:54Z Andreasl01 37996 böjningsform av [[pyssel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''pysslet''' #{{böjning|sv|subst|pyssel}} rdqk51yth9p0p94uk5qeqb0w7l1tt5n pysslen 0 929026 3703228 2022-08-18T13:33:03Z Andreasl01 37996 böjningsform av [[pyssel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''pysslen''' #{{böjning|sv|subst|pyssel}} 5e7zry2sqo8hhwxldasmml85jtc6trk pyssels 0 929027 3703229 2022-08-18T13:33:10Z Andreasl01 37996 böjningsform av [[pyssel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''pyssels''' #{{böjning|sv|subst|pyssel}} 72faup1fy1wvnzoeolna1h0wrz1raja pysslets 0 929028 3703230 2022-08-18T13:33:17Z Andreasl01 37996 böjningsform av [[pyssel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''pysslets''' #{{böjning|sv|subst|pyssel}} l0ige4948dedpko33p2wzl90qv0ac72 pysslens 0 929029 3703231 2022-08-18T13:33:24Z Andreasl01 37996 böjningsform av [[pyssel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''pysslens''' #{{böjning|sv|subst|pyssel}} a3lfzdmgr4zcm8ldmdnwszq09imhhx5 monsignore 0 929030 3703236 2022-08-18T14:54:16Z Gabbe 1153 nytt uppslag (svenska) wikitext text/x-wiki {{wikipedia|Monsignore}} ==Svenska== ===Substantiv=== {{sv-subst-n-r}} '''monsignore''' {{u}} #{{tagg|kristendom}} [[hederstitel]] för vissa [[katolsk]]a [[präst]]er #:{{etymologi|Av {{härledning-|it|monsignore}}, av {{härledning-|fr|monseigneur}}, bokstavligen "min herre" på fornfranska. Belagt på svenska sedan 1913.}} 63txwhyhpy4r7svgdpj5ajutn5mg3ni 3703237 3703236 2022-08-18T14:55:36Z Gabbe 1153 +översättningar; +en: [[monsignor]]; +fr: [[monseigneur]]; +de: [[Monsignore]] (assisterat) wikitext text/x-wiki {{wikipedia|Monsignore}} ==Svenska== ===Substantiv=== {{sv-subst-n-r}} '''monsignore''' {{u}} #{{tagg|kristendom}} [[hederstitel]] för vissa [[katolsk]]a [[präst]]er #:{{etymologi|Av {{härledning-|it|monsignore}}, av {{härledning-|fr|monseigneur}}, bokstavligen "min herre" på fornfranska. Belagt på svenska sedan 1913.}} ====Översättningar==== {{ö-topp|hederstitel för vissa katolska präster}} *engelska: {{ö+|en|monsignor}} *franska: {{ö+|fr|monseigneur|m}} *tyska: {{ö+|de|Monsignore|m}} {{ö-botten}} pv700hm8sb2gfcwviekbi9tkpwo3hhp monsignor 0 929031 3703238 2022-08-18T14:59:07Z Gabbe 1153 översättning av [[monsignore]] wikitext text/x-wiki ==Engelska== ===Substantiv=== {{subst|en}} '''monsignor''' *{{uttal|en|ipa=mɒn.ˈsiːn.jə|region=Storbritannien}} *{{uttal|en|ipa=mɑːn.ˈsiːn.jəɹ|region=Storbritannien}} #{{tagg|kat=kristendom|språk=en}} [[monsignore]] a4sussm3w4f1skiypgzdjbyd0ox9ivy flyguppvisning 0 929032 3703242 2022-08-18T15:57:56Z Gabbe 1153 nytt uppslag (svenska) wikitext text/x-wiki {{wikipedia}} ==Svenska== ===Substantiv=== {{sv-subst-n-ar}} '''[[flyga|flyg]][[uppvisning]]''' #[[organiserad]] [[uppvisning]] av [[flygning]] ojw469x5kltd39knm9l9k3kf1pnjxzn flyguppvisningen 0 929033 3703243 2022-08-18T15:58:02Z Gabbe 1153 böjningsform av [[flyguppvisning]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''flyguppvisningen''' #{{böjning|sv|subst|flyguppvisning}} am1hfck9jmdp9q40zmb0fkcdhzworph flyguppvisningar 0 929034 3703244 2022-08-18T15:58:03Z Gabbe 1153 böjningsform av [[flyguppvisning]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''flyguppvisningar''' #{{böjning|sv|subst|flyguppvisning}} dfzslhsigbqt45ucoqn26it7jw434dk flyguppvisningarna 0 929035 3703245 2022-08-18T15:58:04Z Gabbe 1153 böjningsform av [[flyguppvisning]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''flyguppvisningarna''' #{{böjning|sv|subst|flyguppvisning}} rrlbv75y6pbm3zpkw3bwzglvo5qkzwi flyguppvisnings 0 929036 3703246 2022-08-18T15:58:04Z Gabbe 1153 böjningsform av [[flyguppvisning]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''flyguppvisnings''' #{{böjning|sv|subst|flyguppvisning}} 9x1qlnfrh5nptompy09kfv2ne6be6dt flyguppvisningens 0 929037 3703247 2022-08-18T15:58:05Z Gabbe 1153 böjningsform av [[flyguppvisning]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''flyguppvisningens''' #{{böjning|sv|subst|flyguppvisning}} 06fp7qkwd0wa8obywxf8j8mwj7rfzzr flyguppvisningars 0 929038 3703248 2022-08-18T15:58:06Z Gabbe 1153 böjningsform av [[flyguppvisning]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''flyguppvisningars''' #{{böjning|sv|subst|flyguppvisning}} cgfrx58oqgxwh1zzpcgyyiuiqothqkr flyguppvisningarnas 0 929039 3703249 2022-08-18T15:58:07Z Gabbe 1153 böjningsform av [[flyguppvisning]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''flyguppvisningarnas''' #{{böjning|sv|subst|flyguppvisning}} lxsuftvddenyu4b0gd5oq580hhhxmpv monsignoren 0 929040 3703250 2022-08-18T15:58:22Z Gabbe 1153 böjningsform av [[monsignore]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''monsignoren''' #{{böjning|sv|subst|monsignore}} 25bcrw8udd7dt3ykdn3hcx95qkcy1d7 monsignorer 0 929041 3703251 2022-08-18T15:58:23Z Gabbe 1153 böjningsform av [[monsignore]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''monsignorer''' #{{böjning|sv|subst|monsignore}} cu8iub6stqrbkxunvzrzj3rr2kzfdrp monsignorerna 0 929042 3703252 2022-08-18T15:58:24Z Gabbe 1153 böjningsform av [[monsignore]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''monsignorerna''' #{{böjning|sv|subst|monsignore}} pjy7oap6mbddagwcwcz89cbjig7vxje monsignores 0 929043 3703253 2022-08-18T15:58:25Z Gabbe 1153 böjningsform av [[monsignore]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''monsignores''' #{{böjning|sv|subst|monsignore}} bmnsjfh7ggywwve7mbqjhenr8ianh02 monsignorens 0 929044 3703254 2022-08-18T15:58:26Z Gabbe 1153 böjningsform av [[monsignore]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''monsignorens''' #{{böjning|sv|subst|monsignore}} i4hnkfrkyoq2s2j5rdr41vwnd9g0w4d monsignorers 0 929045 3703255 2022-08-18T15:58:27Z Gabbe 1153 böjningsform av [[monsignore]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''monsignorers''' #{{böjning|sv|subst|monsignore}} 6eurf1onmpp1cb2je3mnkfnjg127nw7 monsignorernas 0 929046 3703256 2022-08-18T15:58:28Z Gabbe 1153 böjningsform av [[monsignore]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''monsignorernas''' #{{böjning|sv|subst|monsignore}} 4mtexitgfxzsg19s3vowesxptnzqjzy Användardiskussion:213.89.158.0 3 929047 3703273 2022-08-18T18:09:33Z Skalman 414 /* ftw */ nytt avsnitt wikitext text/x-wiki == [[ftw]] == Jag har återställt din ändring, eftersom jag hittar flera källor till de betydelser du tog bort. Säg gärna till om du funderar över något. [[Användare:Skalman|Skalman]] ([[Användardiskussion:Skalman|diskussion]]) 18 augusti 2022 kl. 20.09 (CEST) 36a6sxcio1gprq4d1dsqwjf5wjedg8z elvakaffet 0 929048 3703275 2022-08-18T19:57:44Z Andreas Rejbrand 328 böjningsform av [[elvakaffe]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''elvakaffet''' #{{böjning|sv|subst|elvakaffe}} mvslbi6flxnsat3q8fnv4d4hd4b19vg elvakaffes 0 929049 3703276 2022-08-18T19:57:44Z Andreas Rejbrand 328 böjningsform av [[elvakaffe]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''elvakaffes''' #{{böjning|sv|subst|elvakaffe}} qnppwdigjk7hdw26shpm2suyh3g1vdp elvakaffets 0 929050 3703277 2022-08-18T19:57:45Z Andreas Rejbrand 328 böjningsform av [[elvakaffe]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''elvakaffets''' #{{böjning|sv|subst|elvakaffe}} dhpchqi6r4cspv63k6kdhr60agzcyrj lösnageln 0 929051 3703278 2022-08-18T19:58:42Z Andreas Rejbrand 328 böjningsform av [[lösnagel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''lösnageln''' #{{böjning|sv|subst|lösnagel}} 899fbgr63g0reipc6ht80io76lvrrdl lösnaglarna 0 929052 3703279 2022-08-18T19:58:43Z Andreas Rejbrand 328 böjningsform av [[lösnagel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''lösnaglarna''' #{{böjning|sv|subst|lösnagel}} d69vrvqb631ct02b3wcerzt1jd1m4tm lösnagels 0 929053 3703280 2022-08-18T19:58:43Z Andreas Rejbrand 328 böjningsform av [[lösnagel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''lösnagels''' #{{böjning|sv|subst|lösnagel}} 8o0gzvl4w3dtl5pjgkxlnf6525bz5w9 lösnagelns 0 929054 3703281 2022-08-18T19:58:44Z Andreas Rejbrand 328 böjningsform av [[lösnagel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''lösnagelns''' #{{böjning|sv|subst|lösnagel}} f81znv354trijmv03pim39heclwdugr lösnaglars 0 929055 3703282 2022-08-18T19:58:44Z Andreas Rejbrand 328 böjningsform av [[lösnagel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''lösnaglars''' #{{böjning|sv|subst|lösnagel}} osqf4cb608pwpn4676qqkanr8qo9ng6 lösnaglarnas 0 929056 3703283 2022-08-18T19:58:45Z Andreas Rejbrand 328 böjningsform av [[lösnagel]] wikitext text/x-wiki ==Svenska== ===Substantiv=== '''lösnaglarnas''' #{{böjning|sv|subst|lösnagel}} pe4836zqidx9lg6403y1wyw48ouuwbc a conto-betalning 0 929057 3703285 2022-08-18T20:48:09Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{subst|sv}} '''[[a conto]]-[[betalning]]''' #{{tagg|ekonomi}} [[förskottsbetalning]] utifrån ett [[estimat]], som senare ska [[reglera]]s baserad på faktisk konsumtion #:{{jämför|[[a conto]], [[a conto-faktura]]}} 1imzikhjxt5dlgkyfnpx3yq9iquu4p9 a conto-faktura 0 929058 3703286 2022-08-18T20:48:30Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{subst|sv}} '''[[a conto]]-[[faktura]]''' #{{tagg|ekonomi}} [[faktura]] för betalning som ska göras [[a conto]] #:{{jämför|[[a conto]], [[a conto-betalning]]}} 6evmbs6pg4bpzuz4kufl5xwevuey2vx estimat 0 929059 3703287 2022-08-18T20:51:09Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0}} '''estimat''' #[[ungefärlig]], inte [[exakt]] [[beräkning]] (av värdet, storleken eller priset på något) #:{{synonymer|[[uppskattning]], [[approximation]]}} #:{{besläktade ord|[[estimera]]}} 8w1dd09n9r3a8ycbny32r6o3tl7biw0 delbetalning 0 929060 3703288 2022-08-18T21:09:25Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-oräkn|betydelser=1.}} {{sv-subst-n-ar|betydelser=2.}} '''[[del]][[betalning]]''' #[[betalsätt]] där man köper något på [[kredit]] (genom att ta ett lån) #:''I webbshopen kan man välja '''delbetalning''' i kassan.'' #enskild [[betalning]] av en [[del]] av den totala summan som ska betalas :{{avgränsare}} :{{besläktade ord|[[delbetala]]}} m1nqhcq8suytuavzx0w6i18imr3epqr betalsätt 0 929061 3703289 2022-08-18T21:14:43Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-0}} '''[[betala|betal]][[sätt]]''' #[[metod]] för att [[betala]] vid ett [[köp]], såsom [[kort]], (viss) [[mobilapp]], [[internetbank]] eller plattform för [[delbetalning]] 0702gervza8pah3xmk34a7mw26v2y1z internetbank 0 929062 3703290 2022-08-18T21:17:40Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-n-er}} '''[[internet]][[bank]]''' #[[webbplats]] som tillhör en [[bank]], där kunderna kan utföra sina [[bankärende]]n 5tx400ysml3zh6nnko12lahmdrngzch bankärende 0 929063 3703291 2022-08-18T21:23:38Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-n}} '''[[bank]][[ärende]]''' #[[uppgift]] som uträttas på en [[bank]] (på plats, via telefon eller internet), exempelvis betalning av [[räkning]]ar #:{{konstr|uträtta bankärenden}} 3hinq2yoqkhfsx8b5jslxktiw6na4gy à-pris 0 929064 3703294 2022-08-18T21:47:01Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-er}} '''[[à]]-[[pris]]''' #[[pris]] per mängd av en vara, per [[styck]], per [[kilo]] eller dylikt #:{{hyponymer|[[styckpris]], [[kilopris]]}} 90i4e90z8ztdlgs1deh42zd7g5ptz3c styckpris 0 929065 3703295 2022-08-18T21:55:23Z Skalman 414 nytt uppslag (svenska) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-er}} '''[[styck]][[pris]]''' #[[pris]] per [[styck]] av en vara; [[kostnad]] per [[exemplar]] av en vara #:{{hyperonymer|[[à-pris]]}} h2tf90or4iuavbv7qs9k5ha785eaqbc 3703303 3703295 2022-08-19T06:09:18Z Pametzma 10470 +översättningar; +de: [[Stückpreis]] (assisterat) wikitext text/x-wiki ==Svenska== ===Substantiv=== {{sv-subst-t-er}} '''[[styck]][[pris]]''' #[[pris]] per [[styck]] av en vara; [[kostnad]] per [[exemplar]] av en vara #:{{hyperonymer|[[à-pris]]}} ====Översättningar==== {{ö-topp|pris per styck av en vara}} *tyska: {{ö+|de|Stückpreis|m}} {{ö-botten}} l6np9wlna1bnp3rn26kt96c2cl4gpj9 akra ren 0 929066 3703297 2022-08-18T22:20:20Z Christoffre 6867 Ny sida wikitext text/x-wiki ==Fornsvenska== ===Substantiv=== {{subst|gmq-fsv}} '''akra ren''' #[[åkerren]] srvqiesv51q6jjmi3bhe69eaoaycwrd Stückpreis 0 929067 3703304 2022-08-19T06:13:53Z Pametzma 10470 översättning av [[styckpris]] wikitext text/x-wiki ==Tyska== ===Substantiv=== {{de-subst-m|2=Stückpreises|plural=Stückpreise}} '''Stückpreis''' {{m}} #[[styckpris]] 4xrrsoybeajnlrljkd5pmvi4xewa78t Secretario General 0 929068 3703347 2022-08-19T09:27:48Z 2A01:B740:1F:2030:49D3:34D:D129:481E översättning av [[generalsekreterare]] wikitext text/x-wiki ==Spanska== ===Substantiv=== {{subst|es}} '''[[secretario|Secretario]] [[general|General]]''' #[[generalsekreterare]] qmutjfre5hye5g005b9k2bn09b7avt8