Modul:translit/uk
Hoppa till navigering
Hoppa till sök
Dokumentation för denna modul finns på /dok (redigera), /test
Syfte[redigera]
- Den här modulen translittererar ukrainska.
- För en beskrivning av språkspecifika saker att ta i beaktning, se dokumentationen för
{{tr}}
.
Användning[redigera]
local Translit = require("Modul:translit/uk") latin_text = Translit.tr("ukrainsk text")
Specifikation[redigera]
- Publika funktioner:
tr("text")
Returnerar innehållet i "text" translittererat till latinska bokstäver på det svenska sättet.
Tester[redigera]
All tests passed. (refresh)
Text | Expected | Actual | |
---|---|---|---|
mut.tr("А,Б,В,Г,Ґ,Д") | A,B,V,H,G,D | A,B,V,H,G,D | |
mut.tr("Е,Є,Ж,З,И,І") | E,Je,Zj,Z,Y,I | E,Je,Zj,Z,Y,I | |
mut.tr("Ї,Й,К,Л,М,Н") | Ji,J,K,L,M,N | Ji,J,K,L,M,N | |
mut.tr("О,П,Р,С,Т,У") | O,P,R,S,T,U | O,P,R,S,T,U | |
mut.tr("Ф,Х,Ц,Ч,Ш,Щ") | F,Ch,Ts,Tj,Sj,Sjtj | F,Ch,Ts,Tj,Sj,Sjtj | |
mut.tr("Э,Ю,Я") | E,Ju,Ja | E,Ju,Ja |
Text | Expected | Actual | |
---|---|---|---|
mut.tr("а,б,в,г,ґ,д") | a,b,v,h,g,d | a,b,v,h,g,d | |
mut.tr("е,є,ж,з,и,і") | e,je,zj,z,y,i | e,je,zj,z,y,i | |
mut.tr("ї,й,к,л,м,н") | ji,j,k,l,m,n | ji,j,k,l,m,n | |
mut.tr("о,п,р,с,т,у") | o,p,r,s,t,u | o,p,r,s,t,u | |
mut.tr("ф,х,ц,ч,ш,щ") | f,ch,ts,tj,sj,sjtj | f,ch,ts,tj,sj,sjtj | |
mut.tr("э,ю,я") | e,ju,ja | e,ju,ja |
Text | Expected | Actual | |
---|---|---|---|
mut.tr("Ъ,Ь") | , | , | |
mut.tr("ъ,ь") | , | , |
Text | Expected | Actual | |
---|---|---|---|
mut.tr("сю,ся") | siu,sia | siu,sia | |
mut.tr("тю,тя") | tiu,tia | tiu,tia | |
mut.tr("зю,зя") | ziu,zia | ziu,zia | |
mut.tr("сью,сья") | siu,sia | siu,sia | |
mut.tr("тью,тья") | tiu,tia | tiu,tia | |
mut.tr("зью,зья") | ziu,zia | ziu,zia | |
mut.tr("Сю,Ся") | Siu,Sia | Siu,Sia | |
mut.tr("Тю,Тя") | Tiu,Tia | Tiu,Tia | |
mut.tr("Зю,Зя") | Ziu,Zia | Ziu,Zia | |
mut.tr("Сью,Сья") | Siu,Sia | Siu,Sia | |
mut.tr("Тью,Тья") | Tiu,Tia | Tiu,Tia | |
mut.tr("Зью,Зья") | Ziu,Zia | Ziu,Zia |
Text | Expected | Actual | |
---|---|---|---|
mut.tr("Кривий Ріг") | Kryvyj Rih | Kryvyj Rih | |
mut.tr("Ґалаґан") | Galagan | Galagan | |
mut.tr("Миколаїв") | Mykolajiv | Mykolajiv | |
mut.tr("Городище") | Horodysjtje | Horodysjtje | |
mut.tr("Донецьк") | Donetsk | Donetsk |
-- Denna modul används för att transkribera ukrainska.
--
-- För att transkribera bulgariska, ryska 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/ru
--
-- Systemet för translitterering 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
--
-- Denna modul används av följande mall:
-- {{tr}}
--
-- Modulen är författad av (och underhålls av) [[Användare:Gabbe]]
local export = {}
local Q = require("Modul:queue")
local multibyte_char_pattern = ".[\128-\191]*"
local latin_by_cyrillic = { ["А"]="A", ["а"]="a", ["Б"]="B", ["б"]="b", ["В"]="V",
["в"]="v", ["Г"]="H", ["г"]="h", ["Ґ"]="G", ["ґ"]="g", ["Д"]="D", ["д"]="d",
["Е"]="E", ["е"]="e", ["Є"]="Je", ["є"]="je", ["Ж"]="Zj", ["ж"]="zj",
["З"]="Z", ["з"]="z", ["И"]="Y", ["и"]="y", ["І"]="I", ["і"]="i",
["Ї"]="Ji", ["ї"]="ji", ["Й"]="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",
["Ъ"]="", ["ъ"]="", ["Ь"]="J", ["ь"]="j", ["Э"]="E", ["э"]="e",
["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja"
}
-- Själva transkriberingsfunktionen för ukrainska
function export.tr (text)
cyrillic_q = Q()
latin_q = Q()
for c in string.gmatch(text, multibyte_char_pattern) do
Q.enqueue(cyrillic_q, c)
end
repeat
local x = Q.dequeue(cyrillic_q)
local y = Q.peekFirst(cyrillic_q)
local z = Q.peekSecond(cyrillic_q)
local u = Q.peekLast(latin_q)
local accent = "́"
if not latin_by_cyrillic[x] then
Q.enqueue(latin_q, x)
elseif x == "ь" then
if y == "и" then
Q.enqueue(latin_q, "j")
end
elseif x == "Ь" then
if y == "и" or y == "И" then
Q.enqueue(latin_q, "J")
end
elseif mw.ustring.find(x, "[стзСТЗ]") then
Q.enqueue(latin_q,latin_by_cyrillic[x])
if y == "ь" then
if z == "ю" then
Q.enqueue(latin_q,"iu")
Q.dequeue(cyrillic_q)
Q.dequeue(cyrillic_q)
elseif z == "я" then
Q.enqueue(latin_q,"ia")
Q.dequeue(cyrillic_q)
Q.dequeue(cyrillic_q)
end
elseif y == "ю" then
Q.enqueue(latin_q,"iu")
Q.dequeue(cyrillic_q)
elseif y == "я" then
Q.enqueue(latin_q,"ia")
Q.dequeue(cyrillic_q)
end
else
Q.enqueue(latin_q, latin_by_cyrillic[x])
end
until Q.isEmpty(cyrillic_q)
local tbl = {}
repeat
local x = Q.dequeue(latin_q)
local y = Q.peekFirst(latin_q) or ""
local accent = "́"
if y == accent then
x = mw.ustring.toNFC(x .. y)
Q.dequeue(latin_q)
end
table.insert(tbl, x)
until Q.isEmpty(latin_q)
text = table.concat(tbl, "")
return text
end
return export