模組:Kap-translit

維基詞典,自由的多語言詞典

這個模組將轉寫別日塔語的文字。 最好不要直接從模板或其他模組呼叫此模組;要從模板中使用它, 請使用{{xlit}}; 要從模組中使用它,請使用Module:languages#Language:transliterate

關於測試用例,請見Module:Kap-translit/testcases

函式

tr(text, lang, sc)
Transliterates a given piece of text written in the script specified by the code sc, and language specified by the code lang.
When the transliteration fails, returns nil.

local export = {}

local mapping1 = {
	["п"] = "p", ["б"] = "b",
	["т"] = "t", ["д"] = "d",
	["к"] = "k", ["г"] = "g",
	["ц"] = "c", ["ч"] = "č",
	["с"] = "s", ["з"] = "z", ["ш"] = "š", ["ж"] = "ž", ["х"] = "x",
	["м"] = "m", ["н"] = "n",
	["р"] = "r", ["л"] = "l",
	["в"] = "v", ["й"] = "y",
	["и"] = "i", ["е"] = "e", ["э"] = "e", ["а"] = "a", ["о"] = "o", ["у"] = "u",
	["ъ"] = "ʾ", ["ᵸ"] = "̃",
}

local mapping2 = {
	["пӏ"] = "ṗ", ["тӏ"] = "ṭ", ["кӏ"] = "ḳ", ["къ"] = "q̇",
	["цӏ"] = "c̣", ["лӏ"] = "ƛ", ["кь"] = "ƛ̣", ["чӏ"] = "č̣", ["хъ"] = "q",
	["лъ"] = "λ", ["гъ"] = "ġ", ["хӏ"] = "ḥ", ["гӏ"] = "a̯", ["гь"] = "h",
	["аь"] = "ä", ["оь"] = "ö", ["уь"] = "ü", ["аᵸ"] = "ã", ["еᵸ"] = "ẽ", ["иᵸ"] = "ĩ", ["оᵸ"] = "õ", ["уᵸ"] = "ũ",
}

local tetragraph = {
	["аьᵸ"] = "ä̃",
}

function export.tr(text, lang, sc)
	local str_gsub = string.gsub
	local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*"
	
	-- Convert capital to lowercase palochka.
	text = str_gsub(text, mw.ustring.char(0x4C0), mw.ustring.char(0x4CF))
	
	for pat, repl in pairs(mapping2) do
		text = str_gsub(text, pat, repl)
	end

	for tetragraph, replacement in pairs(tetragraph) do
		text = str_gsub(text, tetragraph, replacement)
	end

	text = str_gsub(text, UTF8_char, mapping1)

	return text
end

return export