Přeskočit na obsah

Modul:Výslovnost češtiny: Porovnání verzí

Z Wikislovníku
Smazaný obsah Přidaný obsah
přidána podpora pro slabikotvorné m, komentáře
oprava náhrad dle diskuse
Řádek 30: Řádek 30:
-- Konec slova
-- Konec slova
{"b$", "p"},
{"b$", "p"},
{"b ", "p "},
{"d$", "t"},
{"d$", "t"},
{"d ", "t "},
{"ď$", "ť"},
{"ď$", "ť"},
{"ď ", "ť "},
{"g$", "k"},
{"g$", "k"},
{"g ", "k "},
{"h$", "ch"},
{"h$", "ch"},
{"h ", "ch "},
{"v$", "f"},
{"v$", "f"},
{"v ", "f "},
{"z$", "s"},
{"z$", "s"},
{"z ", "s "},
{"ž$", "š"},
{"ž$", "š"},
{"ž ", "š "},
-- Slabikotvorné r (priorita kvůli závislosti na kontextu)
-- Slabikotvorné r (priorita kvůli závislosti na kontextu)
{consonants_group .. "r" .. consonants_group, "%1r̩%2"},
{consonants_group .. "r" .. consonants_group, "%1r̩%2"},
{consonants_group .. "r$", "%1r̩"},
{consonants_group .. "r$", "%1r̩"},
{consonants_group .. "r ", "%1r̩ "},
-- Slabikotvorné l (priorita kvůli závislosti na kontextu)
-- Slabikotvorné l (priorita kvůli závislosti na kontextu)
{consonants_group .. "l" .. consonants_group, "%1l̩%2"},
{consonants_group .. "l" .. consonants_group, "%1l̩%2"},
{consonants_group .. "l$", "%1l̩"},
{consonants_group .. "l$", "%1l̩"},
{consonants_group .. "l ", "%1l̩ "},
-- Slabikotvorné m (nižší priorita než r, l kvůli řidčímu výskytu)
-- Slabikotvorné m (nižší priorita než r, l kvůli řidčímu výskytu)
{consonants_group .. "m" .. consonants_group, "%1m̩%2"},
{consonants_group .. "m" .. consonants_group, "%1m̩%2"},
{consonants_group .. "m$", "%1m̩"},
{consonants_group .. "m$", "%1m̩"},
{consonants_group .. "m ", "%1m̩ "},
-- Znělé a neznělé ř (priorita kvůli závislosti na kontextu)
-- Znělé a neznělé ř (priorita kvůli závislosti na kontextu)
Řádek 56: Řádek 67:
{"řch", "r̝̊ch"},
{"řch", "r̝̊ch"},
{"ř$", "r̝̊"},
{"ř$", "r̝̊"},
{"ř ", "r̝̊ "},
{"ř", "r̝"},
{"ř", "r̝"},

Verze z 28. 8. 2019, 20:52

Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:Výslovnost češtiny

p = {}
function Nahrad (a)
	local out = mw.ustring.lower(a)
	local consonants_group = "([bcdďfghjklmnopqrřsštťvwxzž])"
	local voiceless_group = "([ptťkfsščp])"
	-- Spíše experimentálně stanovená skupina, nebojte se opravovat
	local voiced_assimilation_group = "([bdďghzž])"

	local replacements = {
		-- Spodoba znělosti
		-- Nepřevádí přímo do IPA (kvůli eliminaci konfliktů s dalšími pravidly)
		-- Znělá, neznělá -> neznělá, neznělá
		{"b" .. voiceless_group, "p%1"},
		{"d" .. voiceless_group, "t%1"},
		{"ď" .. voiceless_group, "ť%1"},
		{"g" .. voiceless_group, "k%1"},
		{"h" .. voiceless_group, "ch%1"},
		{"v" .. voiceless_group, "f%1"},
		{"z" .. voiceless_group, "s%1"},
		{"ž" .. voiceless_group, "š%1"},
		-- Neznělá, znělá -> znělá, znělá
		{"p" .. voiced_assimilation_group, "b%1"},
		{"t" .. voiced_assimilation_group, "d%1"},
		{"ť" .. voiced_assimilation_group, "ď%1"},
		{"k" .. voiced_assimilation_group, "g%1"},
		{"ch" .. voiced_assimilation_group, "h%1"},
		{"f" .. voiced_assimilation_group, "v%1"},
		{"s" .. voiced_assimilation_group, "z%1"},
		{"š" .. voiced_assimilation_group, "ž%1"},
		-- Konec slova
		{"b$", "p"},
		{"b ", "p "},
		{"d$", "t"},
		{"d ", "t "},
		{"ď$", "ť"},
		{"ď ", "ť "},
		{"g$", "k"},
		{"g ", "k "},
		{"h$", "ch"},
		{"h ", "ch "},
		{"v$", "f"},
		{"v ", "f "},
		{"z$", "s"},
		{"z ", "s "},
		{"ž$", "š"},
		{"ž ", "š "},
		
		-- Slabikotvorné r (priorita kvůli závislosti na kontextu)
		{consonants_group .. "r" .. consonants_group, "%1r̩%2"},
		{consonants_group .. "r$", "%1r̩"},
		{consonants_group .. "r ", "%1r̩ "},
	   
		-- Slabikotvorné l (priorita kvůli závislosti na kontextu)
		{consonants_group .. "l" .. consonants_group, "%1l̩%2"},
		{consonants_group .. "l$", "%1l̩"},
		{consonants_group .. "l ", "%1l̩ "},
		
		-- Slabikotvorné m (nižší priorita než r, l kvůli řidčímu výskytu)
		{consonants_group .. "m" .. consonants_group, "%1m̩%2"},
		{consonants_group .. "m$", "%1m̩"},
		{consonants_group .. "m ", "%1m̩ "},
									  
		-- Znělé a neznělé ř (priorita kvůli závislosti na kontextu)
		{voiceless_group .. "ř", "%1r̝̊"},
		{"ř" .. voiceless_group, "r̝̊%1"},
		{"chř", "chr̝̊"},
		{"řch", "r̝̊ch"},
		{"ř$", "r̝̊"},
		{"ř ", "r̝̊ "},
		{"ř", "r̝"},
	
		-- dvojhlásky
		{"au", "aʊ̯"},
		{"eu", "eʊ̯"},
		{"ou", "ᴐʊ̯"},	
	
		-- Skupiny samohlásek <ia, ie, ii, io, iu> v cizích slovech
		{"ia", "ɪja̯"},
		{"ie", "ɪjɛ"},
		{"ii", "ɪjɪ̯"},
		{"io", "ɪjo̯"},
		{"iu", "ɪju̯"},
		
		-- Prioritně nahrazené x, ch a c (pro zamezení konfliktů)
		{"x", "ks"},
		{"ch", "x"},
		{"c", "t͡s"},
	
		-- di, ti, ni 	
		{"di", "ɟɪ"},
		{"dí", "ɟiː"},
		{"ti", "cɪ"},
		{"tí", "ciː"},
		{"ni", "ɲɪ"},
		{"ní", "ɲiː"},
	
		-- ě
		{"bě", "bjɛ"},
		{"dě", "ɟɛ"},	
		{"mě", "mɲɛ"},
		{"ně", "ɲɛ"},	
		{"pě", "pjɛ"},
		{"tě", "cɛ"},	
		{"vě", "vjɛ"},
	
		-- samohlásky
		{"a", "a"},
		{"á", "aː"},
		{"e", "ɛ"},
		{"é", "ɛː"},
		{"i", "ɪ"},	
		{"y", "ɪ"},
		{"í", "iː"},	
		{"ý", "iː"},
		{"o", "ɔ"},
		{"ó", "ɔː"},
		{"u", "ʊ"},	
		{"ú", "uː"},	
		{"ů", "uː"},
	
		--souhlásky
		{"š", "ʃ"},	
		{"ž", "ʒ"},
		{"ň", "ɲ"},
		{"ť", "c"},
		{"ď", "ɟ"},
		{"h", "ɦ"},
		{"dz", "d͡z"},
		{"č", "t͡ʃ"},
		{"dž", "d͡ʒ"},
	
		--[ɱ] je realizací /m/ před /f/ a /v/ (např. ve slově tramvaj)
		{"mf", "ɱf"},	
		{"mv", "ɱv"},
		
		--[ŋ] je realizací /n/ před /k/ a /g/ (např. ve slově banka)	
		{"nk", "ŋk"},	
		{"ng", "ŋg"},
	}
	
	for _, replacement in ipairs(replacements) do
		out = mw.ustring.gsub(out, replacement[1], replacement[2])
	end
	
	return out
end

function p.print (frame)
	if frame.args[1] and frame.args[1] ~= "" then
		return Nahrad (frame.args[1])
	elseif not frame.args[1] then
		return "Chyba: Nic nezadáno"
	elseif frame.args[1] == "" then
		return "Chyba: Prázdný argument"		
	else
		return "Neznámá chyba"
	end
end

function p.test (frame)

	local arg = {}
	local nArg = 0
	for a in pairs (frame:getParent().args) do
		nArg = nArg + 1
		table.insert (arg, frame:getParent().args[nArg])

	end

	local out = "TESTOVACÍ REŽIM automatické vyslovnosti pro češtinu - verze 0.03<br />"
	out = out .. "<hr />"
	
	if nArg == 1 then
		out = out .. "Zadáno: <b>" .. arg[1] .. "</b> IPA: <i>" .. Nahrad (arg[1]) .. "</i><br />"
	elseif nArg >1 then
		out = out .. "<table class=\"wikitable sortable\">"
		out = out .. "<th>zadáno</th><th>IPA</th>"
		for n in pairs (arg) do
			out = out .. "<tr><td>" .. arg[n] .. "</td><td>" .. Nahrad (arg[n]) .. "</td></tr>"
		end
		out = out .. "</table>"
	end
	return out
end

return p