Dokumentation för denna modul finns på /dok (redigera), /test
{{tr}}
.local Translit = require("Modul:translit/bg") latin_text = Translit.tr("bulgarisk 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("Анна") | 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) ]
local export = {}
local Q = require("Modul:queue")
local multibyte_char_pattern = ".*"
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 then
Q.enqueue(latin_q, x)
elseif mw.ustring.find(x, "") then
Q.enqueue(latin_q, latin_by_cyrillic)
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)
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