Modul:ltc-pron

Üdvözlöm, Ön a Modul:ltc-pron szó jelentését keresi. A DICTIOUS-ban nem csak a Modul:ltc-pron szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a Modul:ltc-pron szót egyes és többes számban mondani. Minden, amit a Modul:ltc-pron szóról tudni kell, itt található. A Modul:ltc-pron szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. AModul:ltc-pron és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

A modult a Modul:ltc-pron/doc lapon tudod dokumentálni

local export = {}

local m_ltc_predict = require("Module:ltc-pron/predict")
local m_cmn_pron = require("Module:cmn-pron")

local init_type = {
	 = 1,  = 1,  = 1,  = 2,  = 2,
	 = 3,  = 3,  = 3,  = 4,  = 4,
	 = 5,  = 6,  = 7,  = 8,  = 9,
	 = 10,  = 11,  = 12,  = 12,  = 13,
	 = 14,  = 15,  = 15,  = 16,  = 17,
	 = 18,  = 18,  = 19,  = 20,  = 21,
	 = 22,  = 23,  = 24,  = 25,  = 25,
	 = 25,  = 26,  = 26,  = 27,  = 28,
	 = 28,  = 29,  = 29,  = 30,  = 30,
	 = 31,  = 32,  = 32,  = 33,  = 34,
	 = 35,  = 35,  = 35,  = 36,  = 37,
	 = 37,  = 38
}

local fin_conv = {
	 = "沃",  = "屋",  = "覺",  = "燭",  = "質",
	 = "櫛",  = "術",  = "麧",  = "沒",  = "迄",
	 = "物",  = "曷",  = "末",  = "月",  = "黠",
	 = "鎋",  = "薛",  = "屑",  = "鐸",  = "藥",
	 = "陌",  = "麥",  = "昔",  = "錫",  = "德",
	 = "職",  = "緝",  = "盍",  = "業",  = "乏",
	 = "狎",  = "洽",  = "葉",  = "怗",  = "合"
}

local fin_type = {
	 = 5,  = 6,  = 7,  = 8,  = 9,
	 = 10,  = 19,  = 22,  = 23,  = 24,
	 = 41,  = 42,  = 46,  = 47,  = 51,
	 = 52,  = 53,  = 54,  = 55,  = 56,
	 = 57,  = 58,  = 59,  = 60,  = 61,
	 = 62,  = 63,  = 64,  = 89,  = 90,
	 = 93,  = 94,  = 133,  = 136,  = 137,
	 = 138,  = 143,  = 144,  = 145,  = 146,
	 = 147,  = 148,  = 149,  = 150,  = 151,
	 = 152,  = 157,  = 158,  = 158,  = 159,
	 = 160
}

local fin_type_open = {
	 = 20,  = 21,  = 25,  = 26,  = 27,  = 28,
	 = 29,  = 30,  = 31,  = 32,  = 33,  = 34,
	 = 39,  = 40,  = 65,  = 66,  = 67,  = 68,
	 = 69,  = 70,  = 71,  = 72,  = 73,  = 74,
	 = 75,  = 76,  = 85,  = 86,  = 87,  = 88,
	 = 101,  = 102,  = 103,  = 104,  = 105,  = 106,
	 = 107,  = 108,  = 117,  = 118,  = 119,  = 120,
	 = 121,  = 122,  = 123,  = 124,  = 125,  = 126,
	 = 127,  = 128,  = 129,  = 130,  = 131,  = 132,
	 = 134,  = 135
}

local fin_type_deng_open = {
	 = 11,  = 12,  = 13,  = 14,
	 = 15,  = 16,  = 15,  = 16,
		 = 17,  = 18,
	 = 35,  = 36,  = 35,  = 36, 
		 = 37,  = 38,
	 = 95,  = 96,  = 97,
	 = 77,  = 78,  = 79,  = 80,
	 = 81,  = 82,  = 83,  = 84,
	 = 98,  = 99,  = 100,
	 = 113,  = 114,  = 115,  = 116,
	 = 109,  = 110,  = 111,  = 112, 
		 = 111,  = 112
}

local initialConv = {
	 = {
		 = "p",  = "pʰ",  = "b",  = "m",  = "t",
		 = "tʰ",  = "d",  = "n",  = "ʈ",  = "ʈʰ",
		 = "ɖ",  = "ɳ",  = "t͡s",  = "t͡sʰ",  = "d͡z",
		 = "s",  = "z",  = "t͡ʃ",  = "t͡ʃʰ",  = "d͡ʒ",
		 = "ʃ",  = "ʒ",  = "t͡ɕ",  = "t͡ɕʰ",  = "d͡ʑ",
		 = "ɕ",  = "ʑ",  = "k",  = "kʰ",  = "ɡ",
		 = "ŋ",  = "h",  = "ɦ",  = "ʔ",  = "ɦ",
		 = "j",  = "l",  = "ȵ"
	},
	 = {
		 = "p",  = "pʰ",  = "bʱ",  = "m",  = "t",
		 = "tʰ",  = "dʱ",  = "n",  = "ȶ",  = "ȶʰ",
		 = "ȡʱ",  = "n",  = "t͡s",  = "t͡sʰ",  = "d͡zʱ",
		 = "s",  = "z",  = "ʈ͡ʂ",  = "ʈ͡ʂʰ",  = "ɖ͡ʐʱ",
		 = "ʂ",  = "ɖ͡ʐʰ",  = "t͡ɕ",  = "t͡ɕʰ",  = "ʑ",
		 = "ɕ",  = "d͡ʑʰ",  = "k",  = "kʰ",  = "g",
		 = "ŋ",  = "x",  = "ɣ",  = "ʔ",  = "",
		 = "",  = "l",  = "ȵʑ"
	},
	 = {
		 = "p",  = "pʰ",  = "b",  = "m",  = "t",
		 = "tʰ",  = "d",  = "n",  = "ȶ",  = "ȶʰ",
		 = "ȡ",  = "n",  = "t͡s",  = "t͡sʰ",  = "d͡z",
		 = "s",  = "z",  = "t͡ʃ",  = "t͡ʃʰ",  = "d͡ʒ",
		 = "ʃ",  = "ʒ",  = "t͡ɕ",  = "t͡ɕʰ",  = "ʑ",
		 = "ɕ",  = "d͡ʑ",  = "k",  = "kʰ",  = "ɡ",
		 = "ŋ",  = "x",  = "ɣ",  = "ʔ",  = "ɣ",
		 = "",  = "l",  = "ȵ"
	},
	 = {
		 = "p",  = "pʰ",  = "b",  = "m",  = "t",
		 = "tʰ",  = "d",  = "n",  = "ʈ",  = "ʈʰ",
		 = "ɖ",  = "ɳ",  = "t͡s",  = "t͡sʰ",  = "d͡z",
		 = "s",  = "z",  = "ʈ͡ʂ",  = "ʈ͡ʂʰ",  = "ɖ͡ʐ",
		 = "ʃ",  = "ʐ",  = "t͡ɕ",  = "t͡ɕʰ",  = "d͡ʑ",
		 = "ɕ",  = "ʑ",  = "k",  = "kʰ",  = "ɡ",
		 = "ŋ",  = "h",  = "ɦ",  = "ʔ",  = "ɦ",
		 = "j",  = "l",  = "ȵ"
	},
	 = {
		 = "p",  = "pʰ",  = "b",  = "m",  = "t",
		 = "tʰ",  = "d",  = "n",  = "ʈ",  = "ʈʰ",
		 = "ɖ",  = "ɳ",  = "t͡s",  = "t͡sʰ",  = "d͡z",
		 = "s",  = "z",  = "ʈ͡ʂ",  = "ʈ͡ʂʰ",  = "ɖ͡ʐ",
		 = "ʂ",  = "ʐ",  = "c",  = "cʰ",  = "d͡ʑ",
		 = "ɕ",  = "ʑ",  = "k",  = "kʰ",  = "g",
		 = "ŋ",  = "h",  = "ɦ",  = "ʔ",  = "ɦ",
		 = "j",  = "l",  = "ȵ"
	},
	 = {
		 = "p",  = "pʰ",  = "b",  = "m",  = "t",
		 = "tʰ",  = "d",  = "n",  = "ȶ",  = "ȶʰ",
		 = "ȡ",  = "n",  = "t͡s",  = "t͡sʰ",  = "d͡z",
		 = "s",  = "z",  = "t͡ʃ",  = "t͡ʃʰ",  = "d͡ʒ",
		 = "ʃ",  = "ʒ",  = "t͡ɕ",  = "t͡ɕʰ",  = "ʑ",
		 = "ɕ",  = "d͡ʑ",  = "k",  = "kʰ",  = "ɡ",
		 = "ŋ",  = "x",  = "ɣ",  = "",  = "ɣ",
		 = "j",  = "l",  = "ȵʑ"
	},
	 = {
		 = "p",  = "pʰ",  = "b",  = "m",  = "t",
		 = "tʰ",  = "d",  = "n",  = "ȶ",  = "ȶʰ",
		 = "ȡ",  = "n",  = "t͡s",  = "t͡sʰ",  = "d͡z",
		 = "s",  = "z",  = "t͡ʃ",  = "t͡ʃʰ",  = "d͡ʒ",
		 = "ʃ",  = "ʒ",  = "t͡ɕ",  = "t͡ɕʰ",  = "d͡ʑ",
		 = "ɕ",  = "ʑ",  = "k",  = "kʰ",  = "ɡ",
		 = "ŋ",  = "x",  = "ɣ",  = "ʔ",  = "ɣ",
		 = "",  = "l",  = "ȵʑ"
	}
}

local finalConv = {
	 = {
		 = "uŋ",  = "ɨuŋ",  = "uk̚",  = "ɨuk̚",  = "uoŋ",
		 = "uok̚",  = "ɨoŋ",  = "ɨok̚",  = "ˠʌŋ",  = "ˠʌk̚",
		 = "iᴇ",  = "iuᴇ",  = "ˠiᴇ",  = "ˠiuᴇ",  = "iɪ",
		 = "iuɪ",  = "ˠiɪ",  = "ˠiuɪ",  = "ɨ",  = "ɨi",
		 = "ʉi",  = "ɨʌ",  = "uo",  = "ɨo",  = "ɑi",
		 = "uɑi",  = "ɨɐi",  = "ʉɐi",  = "ˠai",  = "ˠuai",
		 = "ˠɛ",  = "ˠuɛ",  = "ˠɛi",  = "ˠuɛi",  = "iᴇi",
		 = "iuᴇi",  = "ˠiᴇi",  = "ˠiuᴇi",  = "ei",  = "wei",
		 = "ʌi",  = "uʌi",  = "iɪn",  = "ˠiɪn",  = "ˠiuɪn",
		 = "ɪn",  = "iuɪn",  = "iɪt̚",  = "ˠiɪt̚",  = "ˠiuɪt̚",
		 = "ɪt̚",  = "iuɪt̚",  = "ən",  = "ət̚",  = "uən",
		 = "uət̚",  = "ɨn",  = "ɨt̚",  = "ɨun",  = "ɨut̚",
		 = "ɑn",  = "uɑn",  = "ɑt̚",  = "uɑt̚",  = "ɨɐn",
		 = "ʉɐn",  = "ɨɐt̚",  = "ʉɐt̚",  = "ˠan",  = "ˠuan",
		 = "ˠat̚",  = "ˠuat̚",  = "ˠɛn",  = "ˠuɛn",  = "ˠɛt̚",
		 = "ˠuɛt̚",  = "iᴇn",  = "iuᴇn",  = "ˠiᴇn",  = "ˠiuᴇn",
		 = "iᴇt̚",  = "iuᴇt̚",  = "ˠiᴇt̚",  = "ˠiuᴇt̚",  = "en",
		 = "wen",  = "et̚",  = "wet̚",  = "ɑu",  = "ˠau",
		 = "iᴇu",  = "ˠiᴇu",  = "eu",  = "ɑ",  = "uɑ",
		 = "ɨɑ",  = "ɨuɑ",  = "ˠa",  = "ˠua",  = "ia",
		 = "ɑŋ",  = "wɑŋ",  = "ɑk̚",  = "wɑk̚",  = "ɨɐŋ",
		 = "ʉɐŋ",  = "ɨɐk̚",  = "ʉɐk̚",  = "ˠæŋ",  = "ˠwæŋ",
		 = "ˠiæŋ",  = "ˠwiæŋ",  = "ˠæk̚",  = "ˠwæk̚",  = "ˠiæk̚",
		 = "ˠwiæk̚",  = "ˠɛŋ",  = "ˠwɛŋ",  = "ˠɛk̚",  = "ˠwɛk̚",
		 = "iᴇŋ",  = "wiᴇŋ",  = "iᴇk̚",  = "wiᴇk̚",  = "eŋ",
		 = "weŋ",  = "ek̚",  = "wek̚",  = "əŋ",  = "wəŋ",
		 = "ək̚",  = "wək̚",  = "ɨŋ",  = "ɨk̚",  = "wɨk̚",
		 = "ɨu",  = "əu",  = "iɪu",  = "iɪm",  = "ˠiɪm",
		 = "iɪp̚",  = "ˠiɪp̚",  = "ɑm",  = "ɑp̚",  = "ɨɐm",
		 = "ɨɐm",  = "ɨɐp̚",  = "ɨɐp̚",  = "ˠam",  = "ˠap̚",
		 = "ˠɛm",  = "ˠɛp̚",  = "iᴇm",  = "ˠiᴇm",  = "iᴇp̚",
		 = "ˠiᴇp̚",  = "em",  = "ep̚",  = "ʌm",  = "ʌp̚"
	},
	 = {
		 = "uŋ",  = "i̯uŋ",  = "uk̚",  = "i̯uk̚",  = "uoŋ",
		 = "uok̚",  = "i̯woŋ",  = "i̯wok̚",  = "ɔŋ",  = "ɔk̚",
		 = "ie̯",  = "wie̯",  = "ie̯",  = "wie̯",  = "i",
		 = "wi",  = "i",  = "wi",  = "i",  = "e̯i",
		 = "we̯i",  = "i̯wo",  = "uo",  = "i̯u",  = "ɑi",
		 = "uɑi",  = "i̯ɐi",  = "i̯wɐi",  = "ai",  = "wai",
		 = "ai",  = "wai",  = "ăi",  = "wăi",  = "i̯ɛi",
		 = "i̯wɛi",  = "i̯ɛi",  = "i̯wɛi",  = "iei",  = "iwei",
		 = "ɑ̆i",  = "uɑ̆i",  = "i̯ĕn",  = "i̯ĕn",  = "i̯ĕn",
		 = "i̯æn",  = "i̯uĕn",  = "i̯ĕt̚",  = "i̯ĕt̚",  = "i̯ĕt̚",
		 = "i̯æt̚",  = "i̯uĕt̚",  = "ən",  = "ət̚",  = "uən",
		 = "uət̚",  = "i̯ən",  = "i̯ət̚",  = "i̯uən",  = "i̯uət̚",
		 = "ɑn",  = "uɑn",  = "ɑt̚",  = "uɑt̚",  = "ɨ̯ɐn",
		 = "i̯wɐn",  = "ɨ̯ɐt̚",  = "i̯wɐt̚",  = "an",  = "wan",
		 = "ăt̚",  = "wăt̚",  = "ăn",  = "wăn",  = "at̚",
		 = "wat̚",  = "i̯ɛn",  = "i̯wɛn",  = "i̯ɛn",  = "i̯wɛn",
		 = "i̯ɛt̚",  = "i̯wɛt̚",  = "i̯ɛt̚",  = "i̯wɛt̚",  = "ien",
		 = "iwen",  = "iet̚",  = "iwet̚",  = "ɑu",  = "au",
		 = "i̯ɛu",  = "i̯ɛu",  = "ieu",  = "ɑ",  = "uɑ",
		 = "i̯ɑ",  = "i̯wɑ",  = "a",  = "wa",  = "i̯a",
		 = "ɑŋ",  = "wɑŋ",  = "ɑk̚",  = "wɑk̚",  = "i̯aŋ",
		 = "iwaŋ",  = "i̯ak̚",  = "iwak̚",  = "ɐŋ",  = "wɐŋ",
		 = "i̯ɐŋ",  = "i̯wɐŋ",  = "ɐk̚",  = "wɐk̚",  = "iɐk̚",
		 = "iwɐk̚",  = "æŋ",  = "wæŋ",  = "æk̚",  = "wæk̚",
		 = "i̯ɛŋ",  = "i̯wɛŋ",  = "i̯ɛk̚",  = "i̯wɛk̚",  = "ieŋ",
		 = "iweŋ",  = "iek̚",  = "iwek̚",  = "əŋ",  = "wəŋ",
		 = "ək̚",  = "wək̚",  = "i̯əŋ",  = "i̯ək̚",  = "i̯wək̚",
		 = "i̯ə̯u",  = "ə̯u",  = "ieu",  = "i̯əm",  = "i̯əm",
		 = "i̯əp̚",  = "i̯əp̚",  = "ɑm",  = "ɑp̚",  = "i̯ɐm",
		 = "i̯wɐm",  = "i̯ɐp̚",  = "i̯wɐp̚",  = "am",  = "ap̚",
		 = "ăm",  = "ăp̚",  = "i̯ɛm",  = "i̯ɛm",  = "i̯ɛp̚",
		 = "i̯ɛp̚",  = "iem",  = "iep̚",  = "ăm",  = "ăp̚"
	},
	 = {
		 = "uŋ",  = "iuŋ",  = "uk̚",  = "iuk̚",  = "oŋ",
		 = "ok̚",  = "ioŋ",  = "iok̚",  = "ɔŋ",  = "ɔk̚",
		 = "ie",  = "iue",  = "je",  = "jue",  = "i",
		 = "ui",  = "ji",  = "jui",  = "iə",  = "iəi",
		 = "iuəi",  = "iɔ",  = "o",  = "io",  = "ɑi",
		 = "uɑi",  = "iɐi",  = "iuɐi",  = "ai",  = "uai",
		 = "ɛ",  = "uɛ",  = "ɛi",  = "uɛi",  = "iɛi",
		 = "iuɛi",  = "jɛi",  = "juɛi",  = "ei",  = "uei",
		 = "ᴀi",  = "uᴀi",  = "iĕn",  = "jĕn",  = "juĕn",
		 = "iĕn",  = "iuĕn",  = "iĕt̚",  = "jĕt̚",  = "juĕt̚",
		 = "iĕt̚",  = "iuĕt̚",  = "ən",  = "ət̚",  = "uən",
		 = "uət̚",  = "iən",  = "iət̚",  = "iuən",  = "iuət̚",
		 = "ɑn",  = "uɑn",  = "ɑt̚",  = "uɑt̚",  = "iɐn",
		 = "iuɐn",  = "iɐt̚",  = "iuɐt̚",  = "an",  = "uan",
		 = "at̚",  = "uat̚",  = "ɛn",  = "uɛn",  = "ɛt̚",
		 = "uɛt̚",  = "iɛn",  = "iuɛn",  = "jɛn",  = "juɛn",
		 = "iɛt̚",  = "iuɛt̚",  = "jɛt̚",  = "juɛt̚",  = "en",
		 = "uen",  = "et̚",  = "uet̚",  = "ɑu",  = "au",
		 = "iɛu",  = "jɛu",  = "eu",  = "ɑ",  = "uɑ",
		 = "iɑ",  = "iuɑ",  = "a",  = "ua",  = "ia",
		 = "ɑŋ",  = "uɑŋ",  = "ɑk̚",  = "uɑk̚",  = "iaŋ",
		 = "iuaŋ",  = "iak̚",  = "iuak̚",  = "ɐŋ",  = "uɐŋ",
		 = "iɐŋ",  = "iuɐŋ",  = "ɐk̚",  = "uɐk̚",  = "iɐk̚",
		 = "iuɐk̚",  = "ɛŋ",  = "uɛŋ",  = "ɛk̚",  = "uɛk̚",
		 = "iɛŋ",  = "iuɛŋ",  = "iɛk̚",  = "iuɛk̚",  = "eŋ",
		 = "ueŋ",  = "ek̚",  = "uek̚",  = "əŋ",  = "uəŋ",
		 = "ək̚",  = "uək̚",  = "iəŋ",  = "iək̚",  = "iuək̚",
		 = "iu",  = "u",  = "iĕu",  = "iəm",  = "jəm",
		 = "iəp̚",  = "jəp̚",  = "ɑm",  = "ɑp̚",  = "iɐm",
		 = "iɐm",  = "iap̚",  = "iɐp̚",  = "am",  = "ap̚",
		 = "ɐm",  = "ɐp̚",  = "iɛm",  = "jɛm",  = "iɛp̚",
		 = "jɛp̚",  = "em",  = "ep̚",  = "ᴀm",  = "ᴀp̚"
	},
	 = {
		 = "uŋ",  = "iuŋ",  = "uk̚",  = "iuk̚",  = "uoŋ",
		 = "uok̚",  = "ioŋ",  = "iok̚",  = "ᵚɔŋ",  = "ᵚɔk̚",
		 = "iɛ",  = "ʷiɛ",  = "ᵚiɛ",  = "ʷᵚiɛ",  = "i",
		 = "ʷi",  = "ᵚi",  = "ʷᵚi",  = "ɨ",  = "ɨi",
		 = "ʷɨi",  = "iɔ",  = "uo",  = "io",  = "ɑi",
		 = "ʷɑi",  = "iɐi",  = "ʷiɐi",  = "ᵚai",  = "ʷᵚai",
		 = "ᵚæ",  = "ʷᵚæ",  = "ᵚæi",  = "ʷᵚæi",  = "iɛi",
		 = "ʷiɛi",  = "ᵚiɛi",  = "ʷᵚiei",  = "ei",  = "ʷei",
		 = "əi",  = "uoi",  = "in",  = "ᵚin",  = "ʷᵚin",
		 = "ɪn",  = "ʷin",  = "it̚",  = "ᵚit̚",  = "ʷᵚit̚",
		 = "ɪt̚",  = "ʷit̚",  = "ən",  = "ət̚",  = "uon",
		 = "uot̚",  = "ɨn",  = "ɨt̚",  = "iun",  = "iut̚",
		 = "ɑn",  = "ʷɑn",  = "ɑt̚",  = "ʷɑt̚",  = "iɐn",
		 = "ʷiɐn",  = "iɐt̚",  = "ʷiɐt̚",  = "ᵚan",  = "ʷᵚan",
		 = "ᵚat̚",  = "ʷᵚat̚",  = "ᵚæn",  = "ʷᵚæn",  = "ᵚæt̚",
		 = "ʷᵚæt̚",  = "iɛn",  = "ʷiɛn",  = "ᵚiɛn",  = "ʷᵚiɛn",
		 = "iɛt̚",  = "ʷiɛt̚",  = "ᵚiɛt̚",  = "ʷᵚiet̚",  = "en",
		 = "ʷen",  = "et̚",  = "ʷet̚",  = "ɑu",  = "ᵚau",
		 = "iɛu",  = "ᵚiɛu",  = "eu",  = "ɑ",  = "uɑ",
		 = "iɑ",  = "ʷiɑ",  = "ᵚa",  = "ʷᵚa",  = "ia",
		 = "ɑŋ",  = "ʷɑŋ",  = "ɑk̚",  = "ʷɑk̚",  = "iɐŋ",
		 = "ʷiɐŋ",  = "iɐk̚",  = "ʷiɐk̚",  = "ᵚaŋ",  = "ʷᵚaŋ",
		 = "ᵚiaŋ",  = "ʷᵚiaŋ",  = "ᵚak̚",  = "ʷᵚak̚",  = "ᵚiak̚",
		 = "ʷᵚiak̚",  = "ᵚæŋ",  = "ʷᵚæŋ",  = "ᵚæk̚",  = "ʷᵚæk̚",
		 = "iɛŋ",  = "ʷiɛŋ",  = "iɛk̚",  = "ʷiɛk̚",  = "eŋ",
		 = "ʷeŋ",  = "ek̚",  = "ʷek̚",  = "əŋ",  = "ʷəŋ",
		 = "ək̚",  = "ʷək̚",  = "ɨŋ",  = "ɨk̚",  = "ʷɨk̚",
		 = "iu",  = "əu",  = "ɨu",  = "im",  = "ᵚim",
		 = "ip̚",  = "ᵚip̚",  = "ɑm",  = "ɑp̚",  = "iɐm",
		 = "iɐm",  = "iɐp̚",  = "iɐp̚",  = "ᵚam",  = "ᵚap̚",
		 = "ᵚæm",  = "ᵚæp̚",  = "iɛm",  = "ᵚiɛm",  = "iɛp̚",
		 = "ᵚiɛp̚",  = "em",  = "ep̚",  = "əm",  = "əp̚"
	},
	 = {
		 = "əwŋ",  = "uwŋ",  = "əwk̚",  = "uwk̚",  = "awŋ",
		 = "awk̚",  = "uawŋ",  = "uawk̚",  = "aɨwŋ",  = "aɨwk̚",
		 = "iə̆",  = "wiə̆",  = "jiə̆",  = "jwiə̆",  = "i",
		 = "wi",  = "ji",  = "jwi",  = "ɨ",  = "ɨj",
		 = "uj",  = "ɨə̆",  = "ɔ",  = "uə̆",  = "aj",
		 = "waj",  = "ɨaj",  = "uaj",  = "aɨjs",  = "waɨjs",
		 = "aɨj",  = "waɨj",  = "əɨj",  = "wəɨj",  = "iaj",
		 = "wiaj",  = "jiaj",  = "jwiaj",  = "ɛj",  = "wɛj",
		 = "əj",  = "wəj",  = "in",  = "jin",  = "jin",
		 = "in",  = "win",  = "it̚",  = "jit̚",  = "jit̚",
		 = "it̚",  = "wit̚",  = "ən",  = "ət̚",  = "wən",
		 = "wət̚",  = "ɨn",  = "ɨt̚",  = "un",  = "ut̚",
		 = "an",  = "wan",  = "at̚",  = "wat̚",  = "ɨan",
		 = "uan",  = "ɨat̚",  = "uat̚",  = "aɨn",  = "waɨn",
		 = "aɨt̚",  = "waɨt̚",  = "əɨn",  = "wəɨn",  = "əɨt̚",
		 = "wəɨt̚",  = "ian",  = "wian",  = "ian",  = "wian",
		 = "iat̚",  = "wiat̚",  = "iat̚",  = "wiat̚",  = "ɛn",
		 = "wɛn",  = "ɛt̚",  = "wɛt̚",  = "aw",  = "aɨw",
		 = "iaw",  = "iaw",  = "ɛw",  = "a",  = "wa",
		 = "ɨa",  = "ua",  = "aɨ",  = "waɨ",  = "ia",
		 = "aŋ",  = "waŋ",  = "ak̚",  = "wak̚",  = "ɨaŋ",
		 = "uaŋ",  = "ɨak̚",  = "uak̚",  = "aɨjŋ",  = "waɨjŋ",
		 = "iajŋ",  = "wiajŋ",  = "aɨjk̚",  = "waɨjk̚",  = "iajk̚",
		 = "wiajk̚",  = "əɨjŋ",  = "wəɨjŋ",  = "əɨjk̚",  = "wəɨjk̚",
		 = "iajŋ",  = "wiajŋ",  = "iajk̚",  = "wiajk̚",  = "ɛjŋ",
		 = "wɛjŋ",  = "ɛjk̚",  = "wɛjk̚",  = "əŋ",  = "wəŋ",
		 = "ək̚",  = "wək̚",  = "iŋ",  = "ik̚",  = "wik̚",
		 = "uw",  = "əw",  = "jiw",  = "im",  = "jim",
		 = "ip̚",  = "jip̚",  = "am",  = "ap̚",  = "ɨam",
		 = "uam",  = "ɨap̚",  = "uap̚",  = "aɨm",  = "aɨp̚",
		 = "əɨm",  = "əɨp̚",  = "iam",  = "jiam",  = "iap̚",
		 = "jiap̚",  = "ɛm",  = "ɛp̚",  = "əm",  = "əp̚"
	},
	 = {
		 = "uŋ",  = "ĭuŋ",  = "uk̚",  = "ĭuk̚",  = "uoŋ",
		 = "uok̚",  = "ĭwoŋ",  = "ĭwok̚",  = "ɔŋ",  = "ɔk̚",
		 = "ǐe",  = "ǐwe",  = "ǐe",  = "ǐwe",  = "i",
		 = "wi",  = "i",  = "wi",  = "ĭə",  = "ĭəi",
		 = "ĭwəi",  = "ĭo",  = "u",  = "ĭu",  = "ɑi",
		 = "uɑi",  = "ĭɐi",  = "ĭwɐi",  = "æi",  = "wæi",
		 = "ai",  = "wai",  = "ɐi",  = "wɐi",  = "ĭɛi",
		 = "ĭwɛi",  = "ĭɛi",  = "ĭwɛi",  = "iei",  = "iwei",
		 = "ɒi",  = "uɒi",  = "ĭĕn",  = "ǐĕn",  = "ǐĕn",
		 = "ĭen",  = "ĭuĕn",  = "ĭĕt̚",  = "ĭĕt̚",  = "ĭĕt̚",
		 = "ĭet̚",  = "ĭuĕt̚",  = "ən",  = "ət̚",  = "uən",
		 = "uət̚",  = "ĭən",  = "ĭət̚",  = "ĭuən",  = "ĭuət̚",
		 = "ɑn",  = "uɑn",  = "ɑt̚",  = "uɑt̚",  = "ĭɐn",
		 = "ĭwɐn",  = "ĭɐt̚",  = "ĭwɐt̚",  = "an",  = "wan",
		 = "at̚",  = "wat̚",  = "æn",  = "wæn",  = "æt̚",
		 = "wæt̚",  = "ĭɛn",  = "ĭwɛn",  = "ĭɛn",  = "ĭwɛn",
		 = "ĭɛt̚",  = "ĭuɛt̚",  = "ĭɛt̚",  = "ĭuɛt̚",  = "ien",
		 = "iwen",  = "iet̚",  = "iwet̚",  = "ɑu",  = "au",
		 = "ĭɛu",  = "ĭɛu",  = "ieu",  = "ɑ",  = "uɑ",
		 = "ǐɑ",  = "ĭuɑ",  = "a",  = "wa",  = "ĭa",
		 = "ɑŋ",  = "uɑŋ",  = "ɑk̚",  = "uɑk̚",  = "ĭaŋ",
		 = "ĭwaŋ",  = "ĭak̚",  = "ĭak̚",  = "ɐŋ",  = "wɐŋ",
		 = "ĭɐŋ",  = "ĭwɐŋ",  = "ɐk̚",  = "wɐk̚",  = "ĭɐk̚",
		 = "ĭwɐk̚",  = "æŋ",  = "wæŋ",  = "æk̚",  = "wæk̚",
		 = "ĭɛŋ",  = "ĭwɛŋ",  = "ĭɛk̚",  = "ĭwɛk̚",  = "ieŋ",
		 = "iweŋ",  = "iek̚",  = "iwek̚",  = "əŋ",  = "uəŋ",
		 = "ək̚",  = "uək̚",  = "ĭəŋ",  = "ĭək̚",  = "ĭwək̚",
		 = "ĭəu",  = "əu",  = "iəu",  = "ĭĕm",  = "ĭĕm",
		 = "ĭĕp̚",  = "ĭĕp̚",  = "ɑm",  = "ɑp̚",  = "ĭɐm",
		 = "ĭwɐm",  = "ĭɐp̚",  = "ĭwɐp̚",  = "am",  = "ap̚",
		 = "ɐm",  = "ɐp̚",  = "ĭɛm",  = "ĭɛm",  = "ĭɛp̚",
		 = "ĭɛp̚",  = "iem",  = "iep̚",  = "ɒm",  = "ɒp̚"
	},
	 = {
		 = "uŋ",  = "iuŋ",  = "uk̚",  = "iuk̚",  = "oŋ",
		 = "ok̚",  = "ioŋ",  = "iok̚",  = "ɔŋ",  = "ɔk̚",
		 = "jɛ",  = "juɛ",  = "iɛ",  = "iuɛ",  = "jɪ",
		 = "juɪ",  = "iɪ",  = "iuɪ",  = "ie",  = "iəi",
		 = "iuəi",  = "iɔ",  = "o",  = "io",  = "ɑi",
		 = "uɑi",  = "iɐi",  = "iuɐi",  = "ai",  = "uai",
		 = "æi",  = "uæi",  = "ɐi",  = "uɐi",  = "jæi",
		 = "iuæi",  = "iæi",  = "iuæi",  = "ɛi",  = "uɛi",
		 = "ɒi",  = "uɒi",  = "jen",  = "ien",  = "iuen",
		 = "ien",  = "juen",  = "jet̚",  = "iet̚",  = "iuet̚",
		 = "iet̚",  = "juet̚",  = "ən",  = "ət̚",  = "uən",
		 = "uət̚",  = "iən",  = "iət̚",  = "iuən",  = "iuət̚",
		 = "ɑn",  = "uɑn",  = "ɑt̚",  = "uɑt̚",  = "iɐn",
		 = "iuɐn",  = "iɐt̚",  = "iuɐt̚",  = "ɐn",  = "uɐn",
		 = "ɐt̚",  = "uɐt̚",  = "æn",  = "uæn",  = "æt̚",
		 = "uæt̚",  = "jæn",  = "juæn",  = "iæn",  = "iuæn",
		 = "jæt̚",  = "juæt̚",  = "iæt̚",  = "iuæt̚",  = "ɛn",
		 = "uɛn",  = "ɛt̚",  = "uɛt̚",  = "ɑu",  = "au",
		 = "jæu",  = "iæu",  = "eu",  = "ɑ",  = "uɑ",
		 = "iɑ",  = "iuɑ",  = "a",  = "ua",  = "ia",
		 = "ɑŋ",  = "uɑŋ",  = "ɑk̚",  = "uɑk̚",  = "iɑŋ",
		 = "iuɑŋ",  = "iɑk̚",  = "iuɑk̚",  = "aŋ",  = "uaŋ",
		 = "iaŋ",  = "iuaŋ",  = "ak̚",  = "uak̚",  = "iak̚",
		 = "iuak̚",  = "ɐŋ",  = "uɐŋ",  = "ɐk̚",  = "uɐk̚",
		 = "iæŋ",  = "iuæŋ",  = "iæk̚",  = "iuæk̚",  = "ɛŋ",
		 = "uɛŋ",  = "ɛk̚",  = "uɛk̚",  = "əŋ",  = "uəŋ",
		 = "ək̚",  = "uək̚",  = "ieŋ",  = "iek̚",  = "iuek̚",
		 = "iəu",  = "əu",  = "ieu",  = "jem",  = "iem",
		 = "jep̚",  = "iep̚",  = "ɑm",  = "ɑp̚",  = "iɐm",
		 = "iɐm",  = "iɐp̚",  = "iɐp̚",  = "am",  = "ap̚",
		 = "ɐm",  = "ɐp̚",  = "jæm",  = "iæm",  = "jæp̚",
		 = "iæp̚",  = "ɛm",  = "ɛp̚",  = "ɒm",  = "ɒp̚"
	}
}

local final_deng = {
	 = 1,  = 2,  = 3,  = 4,
	 = 91,  = 91,  = 92,
	 = 139,  = 140,  = 141,  = 142,
	 = 155,  = 156,  = 153,  = 154,
	 = 43,  = 43,
	 = 43,  = 43,
	 = 48,  = 48
}

local division = {
	 = 'I', 
	 = 'II', 
	 = 'III', 
	 = 'IV', 
	="''Chongniu'' III",
	="''Chongniu'' IV"
}

local open_closed = {
	 = "Open",
	 = "Closed"
}

local tonality = {
	 = "Rising (X)",
	 = "Departing (H)",
	 = "Level (Ø)",
	 = "Checked (Ø)"
}

local tone_symbol = {
	 = "",
	 = "<sup>X</sup>",
	 = "<sup>H</sup>",
	 = ""
}

local tone_number = {  = 1,  = 2,  = 3,  = 4 }

local final_openness = {
	 = 44,  = 45,
	 = 44,  = 45,
	 = 49,  = 50
}

local final_type_1 = ""
local final_type_2 = ""
local final_type_3 = ""
local final_type_4 = ""
local final_type_5 = ""

local colour_1 = "#D0E4F7"
local colour_2 = "#E1EEFA"
local colour_3 = "#f7fbff"

local function infer_categories(text)
	local t = mw.text.split(text, "", true)
	
	initial, final, deng, openness, tone = t, t, t, t, t
	if mw.ustring.match(text, "-") then
		deng = mw.text.split(text, "-") .. deng
	end
	if tone == "入" then final = fin_conv or final end
	initial_type = init_type
	tone_label = tone_symbol
	
	if mw.ustring.match(final, final_type_1) then
		final_type = fin_type_open
	
	elseif mw.ustring.match(final, final_type_2) then
		final_type = final_deng
	
	elseif mw.ustring.match(final, final_type_3) then
		final_type = fin_type_deng_open
	
	elseif mw.ustring.match(final, final_type_4) then
		if deng == "重鈕三" then
			final_type = final_openness
		else
			final_type = final_deng
		end

	elseif mw.ustring.match(final, final_type_5) then
		final_type = fin_type
	
	else
		return error("Final not recognised.")
	end
	
	return initial_type, final_type, tone_label
end

local function zh_fmt(text)
	return '<span class="Hani" lang="zh">' .. text .. '</span>'
end

local function ltc_table(titlechar, text, indiv_num, count)
	local people = { "Zhengzhang", "Pan", "Shao", "Pulleyblank", "Li", "Wang", "Karlgren" }
	local pronunciation = {}
	local t = mw.text.split(text, "", true)
	
	initial, final, deng, openness, she, tone, fanqieA, fanqieB = t, t, t, t, t, t, t, t
	initial_type, final_type, tone_label = infer_categories(text)

	for ind, person in ipairs(people) do
		table.insert(pronunciation, '<span class="IPAchar" lang="zh">/' ..
			initialConv .. finalConv .. tone_label .. "/</span>")
	end
	
	return {
		nil,
		'<b>'..zh_fmt(titlechar)..'</b>', 
		indiv_num .. "/" .. count,
		zh_fmt("]") .. " (" .. initial_type .. ")",
		zh_fmt("]") .. " (" .. final_type .. ")",
		tonality,
		open_closed,
		division,
		fanqieB and zh_fmt(mw.ustring.gsub(fanqieA .. fanqieB, "(.)", "]") .. "切") or "",
		
		nil,
		pronunciation,
		pronunciation,
		pronunciation,
		pronunciation,
		pronunciation,
		pronunciation,
		pronunciation,
		
		m_cmn_pron.py_number_to_mark(m_ltc_predict.predict_cmn(initial_type, final_type, tone_number)),
		m_ltc_predict.predict_yue(initial_type, final_type, tone_number)
	}
end

function export.ipa(index_text, preview)
	local titlechar = mw.title.getCurrentTitle().text
	local reading_index = mw.text.split(index_text, ",")
	local ltc_indiv_pronunciation = {}
	local output_text = {}
	
	local fields = {
		"Rime",
		"<small>Character</small>",
		"<small>Reading #</small>",
		"<small>Initial</small> (" .. zh_fmt("聲") .. ")",
		"<small>Final</small> (" .. zh_fmt("韻") .. ")",
		"<small>Tone</small> (" .. zh_fmt("調") .. ")",
		"<small>Openness</small> (" .. zh_fmt("開合") .. ")",
		"<small>Division</small> (" .. zh_fmt("等") .. ")",
		"<small>]</small>",
		"Reconstructions",
		"<small>]</small>",
		"<small>]</small>",
		"<small>]</small>",
		"<small>]</small>",
		"<small>]</small>",
		"<small>]</small>",
		"<small>]</small>",
		"<small>Expected<br>Mandarin<br>Reflex</small>",
		"<small>Expected<br>Cantonese<br>Reflex</small>",
	}
	
	for i, cp in ipairs { mw.ustring.codepoint(titlechar, 1, -1) } do
		local ch = mw.ustring.char(cp)
		local success, data_module = pcall(mw.loadData, "Module:zh/data/ltc-pron/" .. ch)
		if success then
			reading_number = reading_index or "y"
			count = 0
			for index, value in ipairs(data_module) do
				count = count + 1
			end
			if reading_number == "y" then
				for ltc_reading_no, position in ipairs(data_module) do
					table.insert(ltc_indiv_pronunciation, ltc_table(ch, position, ltc_reading_no, count))
				end
			elseif reading_number == "n" then
				break
			else
				for indiv_number in mw.text.gsplit(reading_number, '\+') do
					table.insert(ltc_indiv_pronunciation, ltc_table(ch, data_module, indiv_number, count))
				end
			end
		end
	end

	if ltc_indiv_pronunciation then
		local hash, results = {}, {}
		for _, value in ipairs(ltc_indiv_pronunciation) do
			table.remove(value, 10)
			table.remove(value, 1)
			value_eff = table.concat(value)
			if (not hash) then
				hash = true
				table.insert(value, 1, nil)
				table.insert(value, 10, nil)
				results = value
   			end
		end
		local rand = mw.ustring.gsub("mc-" .. value_eff, "", mw.ustring.codepoint('%1'))
		local fmt = {
			fold = '\n* <div title="expand" class="mw-customtoggle-mc' .. rand .. '"> ' ..
					']: <span style="font-size:95%"><span class="IPA">/' .. preview .. 
					'/</span></span><span style="float:right; border:1px solid #ccc; border-radius:1px;' ..
					' padding:0 0; font-size:90%">▼</span></div>\n',
			header = '{| class="wikitable mw-collapsible mw-collapsed" id="mw-customcollapsible-mc' .. rand ..
				'" style="width:100%; margin:0; text-align:center; border-collapse: collapse; border-style: hidden;"',
			lv1 = '\n|-\n! style="background-color:' .. colour_1 .. '" colspan=' .. #results+1 .. '|',
			lv2 = '\n|-\n! style="background-color:' .. colour_2 .. '; width:8em"|',
			lv3 = '\n| style="background-color:' .. colour_3 .. '"|',
			closing = '\n|}'
		}
		for field_index, field in ipairs(fields) do
			if mw.ustring.match(field, "small") then
				local field_set = {}
				for _, result in ipairs(results) do
					table.insert(field_set, result)
				end
				table.insert(output_text, fmt.lv2 .. field .. fmt.lv3 .. table.concat(field_set, fmt.lv3))
			else
				table.insert(output_text, fmt.lv1 .. field)
			end
		end
		return fmt.fold .. fmt.header .. table.concat(output_text) .. fmt.closing
	else
		return ""
	end
end

function export.retrieve_pron(text, reconstruction, index, no_intro, no_double_spacing)
	if type(text) == "table" then text = text.args end
	local underline_format = "<span style=\"border-bottom: 1px dotted #000; cursor:help\" title=\"Middle Chinese\">MC</span> "
	local separator = mw.ustring.len(text) == 1 and (no_intro and "/, /" or ", ") or '<span style="padding-left:2px; padding-right:2px">|</span>'
	
	if reconstruction then
		return underline_format .. reconstruction
	else
		local person, index_set, retrieve_result = "Zhengzhang", {}, {}
		if index and index ~= "y" then
			index_set = mw.text.split(index, ",")
		end
		for char_index, cp in ipairs { mw.ustring.codepoint(text, 1, -1) } do
			local char_pronunciation = {}
			local ch = mw.ustring.char(cp)
			local success, data_module = pcall(mw.loadData, "Module:zh/data/ltc-pron/" .. ch)
			if success then
				local reading_no = index_set or "y"
				if reading_no == "n" then
					table.insert(char_pronunciation, "?")
				elseif reading_no == "y" then
					for _, reading in ipairs(data_module) do
						initial, final, tone = infer_categories(reading)
						table.insert(char_pronunciation, initialConv .. finalConv .. tone)
					end
				else
					for number in mw.text.gsplit(reading_no, "+") do
						initial, final, tone = infer_categories(data_module)
						table.insert(char_pronunciation, initialConv .. finalConv .. tone)
					end
				end
				table.insert(retrieve_result, table.concat(char_pronunciation, separator))
			end
		end
		return retrieve_result and (no_intro and "" or underline_format) .. 
			table.concat(retrieve_result, (no_double_spacing and "" or "&nbsp;") .. " ") or nil
	end
end

function export.link(frame)
	args = frame:getParent().args
	text, meaning, lit = args, args or args or nil, args or nil
	local m_zh = require("Module:zh")
	return m_zh.link(frame, nil, { "*" .. text, tr = export.retrieve_pron(text, args or false, args or false, false, true),
		gloss = meaning, lit = lit }, mw.title.getCurrentTitle().subpageText)
end

return export