Mòdul:Ca-trans
Aparença
Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]
A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]
Funcions auxiliars per a transcripcions en altres mòduls. Corregeix els accents d'acord amb les regles d'accentuació del català. Vegeu els mòduls per a cada llengua amb el format "Mòdul:xx-trans" on "xx" és el codi de llengua.
local p = {}
local u = mw.ustring.char
local AC = u(0x0301) -- acute = ˊ
local DI = u(0x0308) -- diaeresis = ¨
-- separació de síl·labes en català per les regles d'accentuació de síl·labes agudes o planes
-- la funció és una simplificació de l'original a [[wikt:Mòdul:ca-general]]
function p.sil(mot)
local sil = mw.ustring.lower(mot)
-- Diftongs creixents
sil = mw.ustring.gsub(sil, "[qg]u[aáeéiíoóuú]", "110")
sil = mw.ustring.gsub(sil, "[aáeéiíoóuú][iu][aáeéiíoóuú]", "010")
sil = mw.ustring.gsub(sil, "^(h?)[iu][aáeéioóu]", "%110")
-- Diftongs decreixents
sil = mw.ustring.gsub(sil, "[0aáeéioóu][u]", "02")
sil = mw.ustring.gsub(sil, "[0aáeéoóuú][i]", "02")
-- Nuclis vocàlics
sil = mw.ustring.gsub(sil, "[aáeéiíoóuú]", "0")
-- Codes finals
sil = string.gsub(sil, "%l$", "2")
sil = string.gsub(sil, "%l2$", "22")
sil = string.gsub(sil, "%l22$", "222")
-- Obertures
sil = string.gsub(sil, "^%l", "1")
sil = string.gsub(sil, "^1%l", "11")
sil = string.gsub(sil, "^11%l", "111")
sil = string.gsub(sil, "[ptcfbdg]r", "11")
sil = string.gsub(sil, "[pcfbg]l", "11")
sil = string.gsub(sil, "%l0", "10")
-- Codes interiors
sil = string.gsub(sil, "[ps][%l1]", "21")
sil = string.gsub(sil, "%l([12])", "2%1")
-- Separació de síl·labes
local anterior = ""
local motSil = ""
for i = 1, mw.ustring.len(mot) do
actual = mw.ustring.sub(sil,i,i)
if (actual == "0" or actual == "1") and (anterior == "0" or anterior == "2") then
motSil = motSil .. "·"
end
motSil = motSil .. mw.ustring.sub(mot,i,i)
anterior = actual
end
return motSil
end
-- regles d'accentuació en català
function p.accents(latin)
-- d'entrada tots els accents són tancats, la conversió a oberts es fa a posteriori
local char_acc = {["A"..AC]="Á", ["E"..AC]="É", ["I"..AC]="Í", ["O"..AC]="Ó", ["U"..AC]="Ú",
["a"..AC]="á", ["e"..AC]="é", ["i"..AC]="í", ["o"..AC]="ó", ["u"..AC]="ú"}
local sil = mw.text.split(p.sil(mw.ustring.gsub(latin, "." .. AC, char_acc)), '·')
if #sil == 1 then -- monosíl·laba sense accent
latin = mw.ustring.gsub(latin, AC, "")
elseif mw.ustring.find(sil[#sil], "[ÁáÉéÍíÓóÚú]") then -- aguda
if not (mw.ustring.find(latin, "[aeiou]" .. AC .. "s?$") or mw.ustring.find(latin, "[ei]" .. AC .. "n$")) then
if not mw.ustring.find(latin, "iu" .. AC) then -- hiat excepte diftong ciríl·lic ю
latin = mw.ustring.gsub(latin, "([aeoiu][iu])" .. AC, "%1" .. DI)
end
latin = mw.ustring.gsub(latin, "gui" .. DI, "gui")
latin = mw.ustring.gsub(latin, AC, "")
end
elseif mw.ustring.find(sil[#sil-1], "[ÁáÉéÍíÓóÚú]") then -- plana
if string.find(latin, "[aeiou]s?$") or string.find(latin, "[ei]n$") then
if not string.find(latin, "[aeiou][iu]$") then
latin = mw.ustring.gsub(latin, "([aeoiu][iu])" .. AC, "%1" .. DI)
latin = mw.ustring.gsub(latin, "gui" .. DI, "gui")
latin = mw.ustring.gsub(latin, AC, "")
end
end
end
return latin
end
return p