Modul:translit/bg

Hej, du har kommit hit för att leta efter betydelsen av ordet Modul:translit/bg. I DICTIOUS hittar du inte bara alla ordboksbetydelser av ordet Modul:translit/bg, utan du får också veta mer om dess etymologi, dess egenskaper och hur man säger Modul:translit/bg i singular och plural. Allt du behöver veta om ordet Modul:translit/bg finns här. Definitionen av ordet Modul:translit/bg hjälper dig att vara mer exakt och korrekt när du talar eller skriver dina texter. Genom att känna till definitionen avModul:translit/bg och andra ord berikar du ditt ordförråd och får tillgång till fler och bättre språkliga resurser.

Dokumentation för denna modul finns på /dok (redigera), /test


Syfte

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

local Translit = require("Modul:translit/bg")
latin_text = Translit.tr("bulgarisk text")

Specifikation

Publika funktioner:
  • tr("text") Returnerar innehållet i "text" translittererat till latinska bokstäver på det svenska sättet.

Tester

All tests passed. (refresh)

Text Expected Actual
test2_example:
Passed mut.tr("Анна") Anna Anna
Passed mut.tr("Борис") Boris Boris
Passed mut.tr("Волга") Volga Volga
Passed mut.tr("Дон") Don Don
Passed mut.tr("Днепр") Dnepr Dnepr
Passed mut.tr("Жуковский") Zjukovskij Zjukovskij
Passed mut.tr("Замятин") Zamjatin Zamjatin
Passed mut.tr("Ирина") Irina Irina
Passed mut.tr("Толстой") Tolstoj Tolstoj
Passed mut.tr("Куприн") Kuprin Kuprin
Passed mut.tr("Лесков") Leskov Leskov
Passed mut.tr("Максим") Maksim Maksim
Passed mut.tr("Надя") Nadja Nadja
Passed mut.tr("Онега") Onega Onega
Passed mut.tr("Пушкин") Pusjkin Pusjkin
Passed mut.tr("Ростропович") Rostropovitj Rostropovitj
Passed mut.tr("Самара") Samara Samara
Passed mut.tr("Толстой") Tolstoj Tolstoj
Passed mut.tr("Устинов") Ustinov Ustinov
Passed mut.tr("Тихонов") Tichonov Tichonov
Passed mut.tr("Донец") Donets Donets
Passed mut.tr("Чайковский") Tjajkovskij Tjajkovskij
Passed mut.tr("Шостакович") Sjostakovitj Sjostakovitj
Passed mut.tr("Копривщица") Koprivsjtitsa Koprivsjtitsa
Passed mut.tr("Вършец") Vărsjets Vărsjets
Passed mut.tr("Жельо") Zjeljo Zjeljo
Passed mut.tr("Юрий") Jurij Jurij
Passed mut.tr("Актюбинск") Aktiubinsk Aktiubinsk
Passed mut.tr("Союз") Sojuz Sojuz
Passed mut.tr("Татьяна") Tatiana Tatiana
Passed mut.tr("Зябков") Ziabkov Ziabkov
Passed 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