Modul:translit/bg
Dokumentation för denna modul finns på /dok (redigera), /test
Syfte
redigera- Den här modulen translittererar bulgariska.
- För en beskrivning av språkspecifika saker att ta i beaktning, se dokumentationen för
{{tr}}
.
Användning
redigeralocal Translit = require("Modul:translit/bg") latin_text = Translit.tr("bulgarisk text")
Specifikation
redigera- Publika funktioner:
tr("text")
Returnerar innehållet i "text" translittererat till latinska bokstäver på det svenska sättet.
Tester
redigeraAll tests passed. (refresh)
Text | Expected | Actual | |
---|---|---|---|
mut.tr("Анна") | Anna | Anna | |
mut.tr("Борис") | Boris | Boris | |
mut.tr("Волга") | Volga | Volga | |
mut.tr("Дон") | Don | Don | |
mut.tr("Днепр") | Dnepr | Dnepr | |
mut.tr("Жуковский") | Zjukovskij | Zjukovskij | |
mut.tr("Замятин") | Zamjatin | Zamjatin | |
mut.tr("Ирина") | Irina | Irina | |
mut.tr("Толстой") | Tolstoj | Tolstoj | |
mut.tr("Куприн") | Kuprin | Kuprin | |
mut.tr("Лесков") | Leskov | Leskov | |
mut.tr("Максим") | Maksim | Maksim | |
mut.tr("Надя") | Nadja | Nadja | |
mut.tr("Онега") | Onega | Onega | |
mut.tr("Пушкин") | Pusjkin | Pusjkin | |
mut.tr("Ростропович") | Rostropovitj | Rostropovitj | |
mut.tr("Самара") | Samara | Samara | |
mut.tr("Толстой") | Tolstoj | Tolstoj | |
mut.tr("Устинов") | Ustinov | Ustinov | |
mut.tr("Тихонов") | Tichonov | Tichonov | |
mut.tr("Донец") | Donets | Donets | |
mut.tr("Чайковский") | Tjajkovskij | Tjajkovskij | |
mut.tr("Шостакович") | Sjostakovitj | Sjostakovitj | |
mut.tr("Копривщица") | Koprivsjtitsa | Koprivsjtitsa | |
mut.tr("Вършец") | Vărsjets | Vărsjets | |
mut.tr("Жельо") | Zjeljo | Zjeljo | |
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 bulgariska.
--
-- För att transkribera ryska, ukrainska och
-- vitryska/belarusiska kan ett liknande system användas.
-- Det hanteras dock av särskilda moduler. Se:
--
-- Modul:translit/be
-- Modul:translit/ru
-- 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) [[Användare:Gabbe]]
local export = {}
local Q = require("Modul:queue")
local multibyte_char_pattern = ".[\128-\191]*"
latin_by_cyrillic = {
["А"]="A", ["а"]="a", ["Б"]="B", ["б"]="b", ["В"]="V", ["в"]="v",
["Г"]="G", ["г"]="g", ["Д"]="D", ["д"]="d", ["Е"]="E", ["е"]="e",
["Ж"]="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", ["Щ"]="Sjt", ["щ"]="sjt", ["Ъ"]="Ă", ["ъ"]="ă",
["Ь"]="J", ["ь"]="j", ["Э"]="E", ["э"]="e", ["Ю"]="Ju", ["ю"]="ju",
["Я"]="Ja", ["я"]="ja"
}
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 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)
table.insert(tbl, x)
until Q.isEmpty(latin_q)
return table.concat(tbl, "")
end
return export