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 " ") .. " ") 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