Dokumentation för denna modul finns på /dok (redigera), /test
{{tr}}
.local Translit = require("Modul:translit/be") latin_text = Translit.tr("belarusisk text")
tr("text")
Returnerar innehållet i "text" translittererat till latinska bokstäver på det svenska sättet.All tests passed. (refresh)
Text | Expected | Actual | |
---|---|---|---|
mut.tr("арты́кул") | artýkul | artýkul |
Text | Expected | Actual | |
---|---|---|---|
mut.tr("Анна") | Anna | Anna | |
mut.tr("Борис") | Boris | Boris | |
mut.tr("Волга") | Volha | Volha | |
mut.tr("Гродна") | Hrodna | Hrodna | |
mut.tr("Дон") | Don | Don | |
mut.tr("Афанасьев") | Afanasiev | Afanasiev | |
mut.tr("Днепр") | Dnepr | Dnepr | |
mut.tr("Евгений") | Jevhenij | Jevhenij | |
mut.tr("Алексеев") | Aleksejev | Aleksejev | |
mut.tr("Кондратьев") | Kondratiev | Kondratiev | |
mut.tr("Чёрный") | Tjornyj | Tjornyj | |
mut.tr("Аксёнов") | Aksionov | Aksionov | |
mut.tr("Фёдор") | Fjodor | Fjodor | |
mut.tr("Пётр") | Pjotr | Pjotr | |
mut.tr("Зёрнов") | Ziornov | Ziornov | |
mut.tr("Щёлкин") | Sjtjolkin | Sjtjolkin | |
mut.tr("Жуковский") | Zjukovskij | Zjukovskij | |
mut.tr("Замятин") | Zamjatin | Zamjatin | |
mut.tr("Мінск") | Minsk | Minsk | |
mut.tr("Толстой") | Tolstoj | Tolstoj | |
mut.tr("Куприн") | Kuprin | Kuprin | |
mut.tr("Лесков") | Leskov | Leskov | |
mut.tr("Максим") | Maksim | Maksim | |
mut.tr("Надя") | Nadja | Nadja | |
mut.tr("Онега") | Oneha | Oneha | |
mut.tr("Пушкин") | Pusjkin | Pusjkin | |
mut.tr("Ростропович") | Rostropovitj | Rostropovitj | |
mut.tr("Самара") | Samara | Samara | |
mut.tr("Толстой") | Tolstoj | Tolstoj | |
mut.tr("Устинов") | Ustinov | Ustinov | |
mut.tr("Магілёў") | Mahiljoŭ | Mahiljoŭ | |
mut.tr("Фёдор") | Fjodor | Fjodor | |
mut.tr("Тихонов") | Tichonov | Tichonov | |
mut.tr("Донец") | Donets | Donets | |
mut.tr("Чайковский") | Tjajkovskij | Tjajkovskij | |
mut.tr("Шостакович") | Sjostakovitj | Sjostakovitj | |
mut.tr("Белы") | Bely | Bely | |
mut.tr("Ильич") | Iljitj | Iljitj | |
mut.tr("Гомель") | Homel | Homel | |
mut.tr("Игорь") | Ihor | Ihor | |
mut.tr("Эдуард") | Eduard | Eduard | |
mut.tr("Юрий") | Jurij | Jurij | |
mut.tr("Актюбинск") | Aktiubinsk | Aktiubinsk | |
mut.tr("Союз") | Sojuz | Sojuz | |
mut.tr("Татьяна") | Tatiana | Tatiana | |
mut.tr("Зябков") | Ziabkov | Ziabkov | |
mut.tr("Ярослав") | Jaroslav | Jaroslav |
-- Denna modul används för att transkribera belarusiska/vitryska.
--
-- För att transkribera bulgariska, ukrainska och
-- ryska kan ett liknande system användas. Det hanteras dock av
-- särskilda moduler. Se:
--
-- Modul:translit/ru
-- Modul:translit/bg
-- Modul:translit/uk
--
-- 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) ]
local export = {}
local Q = require("Modul:queue")
local multibyte_char_pattern = ".*"
latin_by_cyrillic = {
="A", ="a", ="B", ="b", ="V", ="v",
="H", ="h", ="D", ="d", ="E", ="e",
="Jo", ="jo", ="Zj", ="zj", ="Z", ="z",
="I", ="i", ="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"
}
-- Själva transkriberingsfunktionen för vitryska/belarusiska
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 then -- icke-kyrilliskt tecken
Q.enqueue(latin_q, x)
elseif (Q.isEmpty(latin_q) or u == " ") and x == "Е" then
Q.enqueue(latin_q, "Je")
elseif (Q.isEmpty(latin_q) or u == " ") and x == "е" then
Q.enqueue(latin_q, "je")
elseif x == "ь" then
if y == "и" then
Q.enqueue(latin_q, "ji")
Q.dequeue(cyrillic_q)
end
elseif x == "Ь" then
if y == "и" then
Q.enqueue(latin_q, "Ji")
Q.dequeue(cyrillic_q)
elseif y == "И" then
Q.enqueue(latin_q, "JI")
Q.dequeue(cyrillic_q)
end
elseif mw.ustring.find(x, "") then
Q.enqueue(latin_q, latin_by_cyrillic)
if y == "ь" then
if z == "е" then
Q.enqueue(latin_q, "ie")
Q.dequeue(cyrillic_q)
Q.dequeue(cyrillic_q)
elseif z == "ё" then
Q.enqueue(latin_q, "io")
Q.dequeue(cyrillic_q)
Q.dequeue(cyrillic_q)
elseif 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, "io")
Q.dequeue(cyrillic_q)
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
elseif mw.ustring.find(x, "") then
Q.enqueue(latin_q, latin_by_cyrillic)
if y == "ё" then
Q.enqueue(latin_q, "o")
Q.dequeue(cyrillic_q)
end
elseif x == "е" then
if mw.ustring.find(u, "") or u == accent then
Q.enqueue(latin_q, "je")
else
Q.enqueue(latin_q, "e")
end
else
Q.enqueue(latin_q, latin_by_cyrillic)
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)
return table.concat(tbl, "")
end
return export