Module:kjp-translit

This module will transliterate Eastern Pwo language text. The module should preferably not be called directly from templates or other modules. To use it from a template, use {{xlit}}. Within a module, use Module:languages#Language:transliterate.

For testcases, see Module:kjp-translit/testcases.

Functions

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 diacritics = {
	[mw.ustring.char(0x1039)] = "",
	[mw.ustring.char(0x103D)] = "w",
	[mw.ustring.char(0x1060)] = "l",
	[mw.ustring.char(0x103C)] = "r",
	[mw.ustring.char(0x103B)] = "j",
	[mw.ustring.char(0x105E)] = "n",
	[mw.ustring.char(0x102E)] = "I",
	[mw.ustring.char(0x1031)] = "E",
	[mw.ustring.char(0x1032)] = "Ä",
	[mw.ustring.char(0x103A)] = "V",
	[mw.ustring.char(0x103E)] = "H",
	[mw.ustring.char(0x102B)] = "A",
	[mw.ustring.char(0x102C)] = "A",
	[mw.ustring.char(0x1038)] = "3",
	[mw.ustring.char(0x1030)] = "Y",
	[mw.ustring.char(0x102F)] = "U",
	[mw.ustring.char(0x102D)] = "Ï",
	[mw.ustring.char(0x108B)] = "2",
	[mw.ustring.char(0x1036)] = "Q",
	[mw.ustring.char(0x1037)] = "4",
}

local consonants = {
	["က"]="k",	["ခ"]="kh",	["ဂ"]="K",	["ဃ"]="kh",	["င"]="ŋ",
	["စ"]="c",	["ဆ"]="ch", ["ဇ"]="c",	["ဈ"]="ch",	["ည"]="ɲ",
	["ဋ"]="t",	["ဌ"]="th",	["ဍ"]="d",	["ဎ"]="d",	["ဏ"]="n",
	["တ"]="t",	["ထ"]="th",	 ["ဒ"]="T",	["ဓ"]="th",	["န"]="n",
	["ပ"]="p",	["ဖ"]="ph",	["ဗ"]="p",	["ဘ"]="ph",	["မ"]="m",
	["ယ"]="j",	["ရ"]="r",	["လ"]="l",	["ဝ"]="w",	["သ"]="θ",
	["ဟ"]="h",	["ဠ"]="l",	["အ"]="ʔ",	["ၜ"]="b",	["ၯ"]="ɣ",
	["ၰ"]="x",
}

function export.tr(text, lang, sc)
	text = mw.ustring.gsub(text, ".", diacritics)
	text = mw.ustring.gsub(text, ".", consonants)
	
	-- making sure U and Ä is rendered correctly
	text = mw.ustring.gsub(text, "([ÏIÄ])([UY])", "%2%1")
	text = mw.ustring.gsub(text, "([ÏI])Ä", "Ä%1")
	
	-- vowels
	text = mw.ustring.gsub(text, "EAwV2", "ʊ̄")
	text = mw.ustring.gsub(text, "EAw4V", "ʊ̂")
	text = mw.ustring.gsub(text, "UÏŋV2", "ə̄ɴ")
	text = mw.ustring.gsub(text, "UÏŋV3", "ə́ɴ")
	text = mw.ustring.gsub(text, "UÏŋ4V", "ə̂ɴ")
	text = mw.ustring.gsub(text, "UQwV3", "ó")
	text = mw.ustring.gsub(text, "UÏwV2", "ō")
	
	text = mw.ustring.gsub(text, "AnV2", "āɴ")
	text = mw.ustring.gsub(text, "AnV3", "áɴ")
	text = mw.ustring.gsub(text, "An4V", "âɴ")
	text = mw.ustring.gsub(text, "AŋV2", "āiɴ")
	text = mw.ustring.gsub(text, "AŋV3", "áiɴ")
	text = mw.ustring.gsub(text, "Aŋ4V", "âiɴ")
	text = mw.ustring.gsub(text, "EAhV", "ʊ́")
	text = mw.ustring.gsub(text, "EAtV", "ó")
	text = mw.ustring.gsub(text, "EAwV", "ʊ̀")
	text = mw.ustring.gsub(text, "EnV2", "ī̱ɴ")
	text = mw.ustring.gsub(text, "EnV3", "í̱ɴ")
	text = mw.ustring.gsub(text, "En4V", "î̱ɴ")
	text = mw.ustring.gsub(text, "EwV2", "ī̱")
	text = mw.ustring.gsub(text, "Ew4V", "î̱")
	text = mw.ustring.gsub(text, "ÏŋV2", "ēiɴ")
	text = mw.ustring.gsub(text, "ÏŋV3", "éiɴ")
	text = mw.ustring.gsub(text, "Ïŋ4V", "êiɴ")
	text = mw.ustring.gsub(text, "QŋV2", "ōɴ")
	text = mw.ustring.gsub(text, "QŋV3", "óɴ")
	text = mw.ustring.gsub(text, "Qŋ4V", "ôɴ")
	text = mw.ustring.gsub(text, "UÄÏ2", "wē")
	text = mw.ustring.gsub(text, "UÄÏ3", "wé")
	text = mw.ustring.gsub(text, "UÄÏ4", "wê")
	text = mw.ustring.gsub(text, "UÏhV", "ɨ́")
	text = mw.ustring.gsub(text, "UÏŋV", "ə̀ɴ")
	text = mw.ustring.gsub(text, "UÏTV", "ɨ̀")
	text = mw.ustring.gsub(text, "UŋV2", "ə̄ɯɴ")
	text = mw.ustring.gsub(text, "UŋV3", "ə́ɯɴ")
	text = mw.ustring.gsub(text, "Uŋ4V", "ə̂ɯɴ")
	text = mw.ustring.gsub(text, "UÏtV", "ó")
	text = mw.ustring.gsub(text, "UÏwV", "ò")
	
	text = mw.ustring.gsub(text, "AnV", "àɴ")
	text = mw.ustring.gsub(text, "AŋV", "àiɴ")
	text = mw.ustring.gsub(text, "EhV", "í̱")
	text = mw.ustring.gsub(text, "EnV", "ì̱ɴ")
	text = mw.ustring.gsub(text, "EtV", "é")
	text = mw.ustring.gsub(text, "EwV", "ì̱")
	text = mw.ustring.gsub(text, "HVE", "í̱")
	text = mw.ustring.gsub(text, "ÏkV", "ái")
	text = mw.ustring.gsub(text, "ÏŋV", "èiɴ")
	text = mw.ustring.gsub(text, "j4V", "ɛ̂")
	text = mw.ustring.gsub(text, "([nŋ])V2", "āɴ")
	text = mw.ustring.gsub(text, "([nŋ])V3", "áɴ")
	text = mw.ustring.gsub(text, "([nŋ])4V", "âɴ")
	text = mw.ustring.gsub(text, "QŋV", "òɴ")
	text = mw.ustring.gsub(text, "UÄ2", "wī")
	text = mw.ustring.gsub(text, "UÄ3", "wí")
	text = mw.ustring.gsub(text, "UÄ4", "wî")
	text = mw.ustring.gsub(text, "UÄÏ", "wè")
	text = mw.ustring.gsub(text, "UÏ2", "ɨ̄")
	text = mw.ustring.gsub(text, "UÏ3", "ɨ̂")
	text = mw.ustring.gsub(text, "UŋV", "ə̀ɯɴ")
	text = mw.ustring.gsub(text, "UkV", "áʊ")
	text = mw.ustring.gsub(text, "UKV", "àʊ")
	text = mw.ustring.gsub(text, "UQ2", "ōʊɴ")
	text = mw.ustring.gsub(text, "UQ3", "óʊɴ")
	text = mw.ustring.gsub(text, "UQ4", "ôʊɴ")
	text = mw.ustring.gsub(text, "wV2", "ɔ̄")
	text = mw.ustring.gsub(text, "w4V", "ɔ̂")
	
	text = mw.ustring.gsub(text, "VU", "ə")
	text = mw.ustring.gsub(text, "AÄ", "ɛ̄")
	text = mw.ustring.gsub(text, "ÄA", "ɛ̄")
	text = mw.ustring.gsub(text, "AV", "ài")
	text = mw.ustring.gsub(text, "A2", "ā")
	text = mw.ustring.gsub(text, "A4", "â")
	text = mw.ustring.gsub(text, "E4", "ê")
	text = mw.ustring.gsub(text, "I2", "ī")
	text = mw.ustring.gsub(text, "I3", "í")
	text = mw.ustring.gsub(text, "I4", "î")
	text = mw.ustring.gsub(text, "jV", "ɛ̀")
	text = mw.ustring.gsub(text, "QE", "é")
	text = mw.ustring.gsub(text, "hV", "ɔ́")
	text = mw.ustring.gsub(text, "HV", "ɔ́")
	text = mw.ustring.gsub(text, "([nŋ])V", "àɴ")
	text = mw.ustring.gsub(text, "UÄ", "wì")
	text = mw.ustring.gsub(text, "wV", "ɔ̀")
	text = mw.ustring.gsub(text, "UQ", "òʊɴ")
	text = mw.ustring.gsub(text, "Y2", "ɯ̄")
	text = mw.ustring.gsub(text, "Y3", "ɯ́")
	text = mw.ustring.gsub(text, "Y4", "ɯ̂")
	
	text = mw.ustring.gsub(text, "A", "à")
	text = mw.ustring.gsub(text, "Ä", "ɛ́")
	text = mw.ustring.gsub(text, "E", "è")
	text = mw.ustring.gsub(text, "I", "ì")
	text = mw.ustring.gsub(text, "K", "k")
	text = mw.ustring.gsub(text, "T", "t")
	text = mw.ustring.gsub(text, "Y", "ɯ̀")
	text = mw.ustring.gsub(text, "([kgŋcɲtdnpbmjrlwθhʔɣx])3", "%1á")
	
	-- interpunction
	text = mw.ustring.gsub(text, "၊", ",")
	text = mw.ustring.gsub(text, "။", ".")
	
	-- spaces
	text = mw.ustring.gsub(text, "([aeiouàèìòùáéíóúāēīōūâêîôûɨʊɯɛɔɴə" .. mw.ustring.char(0x0300) .. mw.ustring.char(0x0301) .. mw.ustring.char(0x0302) .. mw.ustring.char(0x0304) .. mw.ustring.char(0x0331) .. "])([kgŋcɲtdnpbmjrlwθhʔɣx])", "%1 %2")
	
	return(text)
end

return export