Vés al contingut

Mòdul:Bg-trans

De la Viquipèdia, l'enciclopèdia lliure
Icona de documentació de mòdul Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]

Mòdul Bg-trans (codi · ús · discussió · proves · tests · casos prova | subpàgines · enllaços)

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Transcripció del búlgar al català segons els criteris de Viquipèdia:Transcripció del búlgar. Només s'usa com a eina de consulta, vegeu Viquipèdia:Transcripció del búlgar#Consulta.

local p = {}

local u = mw.ustring.char
local GR = u(0x0300) -- grave =  ̀
local AC = u(0x0301) -- acute = ˊ
local DI = u(0x0308) -- diaeresis = ¨

local tab = {
	["А"]="A", ["Б"]="B", ["В"]="V", ["Г"]="G", ["Д"]="D", ["Е"]="E", ["Ж"]="J", ["З"]="Z", ["И"]="I", ["Й"]="I",
	["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U",
	["Ф"]="F", ["Х"]="Kh", ["Ц"]="Ts", ["Ч"]="Tx", ["Ш"]="X", ["Щ"]="Xt", ["Ъ"]="A", ["Ь"]="", ["Ю"]="Iu", ["Я"]="Ia",
	["Ѣ"]="", ["Ѫ"]="", ["'"]="",
	['а']='a', ['б']='b', ['в']='v', ['г']='g', ['д']='d', ['е']='e', ['ж']='j', ['з']='z', ['и']='i', ['й']='i',
	['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u',
	['ф']='f', ['х']='kh', ['ц']='ts', ['ч']='tx', ['ш']='x', ['щ']='xt', ["ъ"]="a", ['ь']='', ['ю']='iu', ['я']='ia',
	["ѣ"]="", ["ѫ"]="", ["'"]=""
}

-- Transliterates a single word. It should include stress marks.
local function wtr(cyr)
	-- reducció de consonants duplicades
	local no_dobles = {"([Вв])в", "([Гг])г", "([Жж])ж", "([Кк])к", "([Хх])х", "([Цц])ц", "([Чч])ч", "([Шш])ш", "([Щщ])щ"}
	for i = 1, #no_dobles do
		cyr = mw.ustring.gsub(cyr, no_dobles[i], "%1")
	end
	-- signe tou entre consonant i vocal o
	cyr = mw.ustring.gsub(cyr, "([БбВвГгДдЖжЗзКкЛлМмНнПпРрСсТтФфХхЦцЧчШшЩщ])ьо", "%1ио")
	
	local latin = mw.ustring.gsub(cyr, '.', tab)
	
	-- reducció vocàlica ii
	latin = mw.ustring.gsub(latin, "(i" .. AC .. "?)i", "%1")
	
	-- gmeninació ll
	latin = mw.ustring.gsub(latin, "ll", "l·l")
	
	-- correcció gue/gui
	latin = mw.ustring.gsub(latin, "([Gg])([ei])", "%1u%2")

	-- regles d'accentuació en català
	latin = mw.ustring.gsub(latin, GR, AC)
	latin = require("Mòdul:ca-trans").accents(latin)

	-- accents oberts
	if mw.ustring.find(cyr, "[Оо]" .. GR) then
		latin = mw.ustring.gsub(latin, "([Oo])" .. AC, {["O"]="Ò", ["o"]="ò"})
	end
	local char_acc = {["A"..AC]="À", ["E"..AC]="È", ["I"..AC]="Í", ["O"..AC]="Ó", ["U"..AC]="Ú",
		["a"..AC]="à", ["e"..AC]="è", ["i"..AC]="í", ["i"..DI]="ï", ["o"..AC]="ó", ["u"..AC]="ú", ["u"..DI]="ü"}
	latin = mw.ustring.gsub(latin, ".[" .. AC .. DI .. "]", char_acc)
	
	-- correcció intervocàlica ss, ix
	latin = mw.ustring.gsub(latin, "([AEIOUaeiouÀÈÍÒÓÚàèíïòóúü])s([aeiouàèíòóú])", "%1ss%2")
	latin = mw.ustring.gsub(latin, "([AEOUaeouÀÈÒÓÚàèòóúü])x", "%1ix")
	
	return latin
end

-- Transliterates text, a single word or phrase.
function p.tr(text)
	if type(text) == "table" then text = text.args[1] end
	local trwords = {}
	for word in mw.text.gsplit(text, '%s') do
		table.insert(trwords, wtr(word))
	end
	
	return table.concat(trwords, ' ')
end

return p