ဝိစ်သိဉ်နရီ
blkwiktionary
https://blk.wiktionary.org/wiki/%E1%80%A1%E1%80%93%E1%80%AD%E1%80%80%E1%80%9C%E1%80%AD%E1%80%90%E1%80%BA%E1%80%99%E1%80%B2%E1%80%B7%E1%80%84%E1%80%AB
MediaWiki 1.45.0-wmf.7
case-sensitive
မီဒီယာ
တဲးဝါး
အိုင်ကိုမ်ဒေါ့ꩻရီ
ကေားသုင်ꩻသား
ကေားသုင်ꩻသား အိုင်ကိုမ်ဒေါ့ꩻရီ
ဝိစ်သိဉ်နရီ
ဝိစ်သိဉ်နရီ အိုင်ကိုမ်ဒေါ့ꩻရီ
ဖုဲင်
ဖုဲင် အိုင်ကိုမ်ဒေါ့ꩻရီ
မီဒီယာဝီခီ
မီဒီယာဝီခီ အိုင်ကိုမ်ဒေါ့ꩻရီ
တမ်းပလေက်
တမ်းပလေက် အိုင်ကိုမ်ဒေါ့ꩻရီ
စွဲးကမ်းကို
စွဲးကမ်းကို အိုင်ကိုမ်ဒေါ့ꩻရီ
ကဏ္ဍ
ကဏ္ဍ အိုင်ကိုမ်ဒေါ့ꩻရီ
သွုပ်ဆုဲင်ꩻ
သွုပ်ဆုဲင်ꩻ အိုင်ကိုမ်ဒေါ့ꩻရီ
TimedText
TimedText talk
မော်ဂျူး
မော်ဂျူး ဆွေးနွေးချက်
မော်ဂျူး:headword/data
828
188
12810
12384
2025-06-29T16:05:19Z
咽頭べさ
11
12810
Scribunto
text/plain
local headword_page_module = "Module:headword/page"
local list_to_set = require("Module:table").listToSet
local data = {}
------ 1. Lists which are converted into sets. ------
-- Zero-plurals (i.e. invariable plurals).
local irregular_plurals = list_to_set({
"cmavo",
"cmene",
"fu'ivla",
"gismu",
"Han tu",
"hanja",
"ဟန်သီ",
"jyutping",
"kana",
"kanji",
"lujvo",
"phrasebook",
"ပိဉ်ယိဉ်း",
"rafsi",
}, function(_, item)
return item
end)
-- Irregular non-zero plurals AND any regular plurals where the singular ends in "s",
-- because the module assumes that inputs ending in "s" are plurals. The singular and
-- plural both need to be added, as the module will generate a default plural if
-- the input doesn't match a key in this table.
for sg, pl in next, {
mora = "morae"
} do
irregular_plurals[sg], irregular_plurals[pl] = pl, pl
end
data.irregular_plurals = irregular_plurals
data.lemmas = list_to_set{
"နာမ်ႏ",
"နာမ်ႏဆဲင်ႏတဖြာꩻ",
"နာမ်ႏဆဲင်ႏလိုꩻအာ",
"စိတ္တဇနာမ်ႏ",
"အွဉ်ႏနယ်ခြွဉ်းနာမ်ႏ",
"ကြိယာႏ",
"ကြိယာႏဝိသေသန",
"နာမဝိသေသန",
"နာမ်ႏတင်",
"နာမ်ႏခြွိုင်း",
"ဝိဘတ်",
"အဆွိုင်ꩻဝင်ꩻ",
"အအဲဉ်ႏ",
"ရောမ်ဖြုဲင်ꩻ",
"အီဒီယမ်",
"အာမေဍိတ်",
"အက္ခရာႏ",
"လိတ်ဖြုံႏ",
"ငဝ်းခြွဉ်း",
"အမုဲင်စဲဉ်ႏ",
"ဂဏန်ꩻ",
"ကိန်ꩻဂဏန်ꩻအမုဲင်",
"ဒေါ့ꩻရိုꩻသေꩻငဝ်း",
"ငဝ်းပွုံႏခွိုင်ꩻ",
"ဖပုဒ်အုံယွိုင်းပုဒ်သင်္ကေတ",
"အက္ခရာႏ",
"အမုဲင်(သင်္ကေတ)",
"အဒွေါင်ႏနယ်ꩻ",
"ဝိဘတ်",
"ကတဲက်ထွားနွောင်ꩻဒါႏ ကြိယာဝိသေသန",
"ကတဲက်ထွားနွောင်ꩻဒါႏ နာမဝိသေသန",
"အလွိုကဲꩻသွတ်ꩻ ကြိယာဝိသေသန",
"အလွိုကဲꩻသွတ်ꩻ နာမဝိသေသန",
"အသွုပ်ဆုဲင်ꩻ",
"အခြွိုင်း",
"ငဝ်းငွါအကွို့ꩻအခဝ်",
"abbreviations",
"acronyms",
"adnominals",
"adpositions",
"adverbs",
"affixes",
"ambipositions",
"articles",
"circumfixes",
"circumpositions",
"classifiers",
"cmavo",
"cmavo clusters",
"cmene",
"combining forms",
"comparative adjectives",
"comparative adverbs",
"conjunctions",
"counters",
"determiners",
"diacritical marks",
"equative adjectives",
"fu'ivla",
"gismu",
"Han characters",
"Han tu",
"hanzi",
"hanja",
"idioms",
"infixes",
"interfixes",
"initialisms",
"interjections",
"kanji",
"ligatures",
"lujvo",
"morphemes",
"non-constituents",
"nouns",
"numbers",
"numeral symbols",
"numerals",
"particles",
"ငဝ်းစုဗူႏ",
"postpositions",
"predicatives",
"prefixes",
"prepositions",
"prepositional phrases",
"preverbs",
"pronominal adverbs",
"pronouns",
"proverbs",
"proper nouns",
"punctuation marks",
"relatives",
"roots",
"stems",
"suffixes",
"superlative adjectives",
"superlative adverbs",
"syllables",
"symbols",
}
data.nonlemmas = list_to_set{
"active participles",
"adjectival participles",
"နာမဝိသေသနပုဒ်",
"adjective comparative forms",
"adjective feminine forms",
"adjective equative forms",
"adjective plural forms",
"adjective superlative forms",
"ကြိယာႏဝိသေသနပုဒ်",
"adverb comparative forms",
"adverb superlative forms",
"adverbial participles",
"agent participles",
"article forms",
"circumfix forms",
"combined forms",
"ငဝ်းအွဉ်ႏဒင်ႏဒွေါင်ႏထိုꩻ",
"converbs",
"determiner comparative forms",
"determiner forms",
"determiner superlative forms",
"diminutive nouns",
"future participles",
"gerunds",
"infinitive forms",
"infinitives",
"interjection forms",
"jyutping",
"kanji readings",
"misspellings",
"negative participles",
"nominal participles",
"noun case forms",
"noun dual forms",
"နာမ်ႏပုဒ်",
"နာမ်ႏအအာကိန်ꩻပုံႏစံႏ",
"noun possessive forms",
"noun singulative forms",
"ဂဏန်ꩻပုဒ်",
"participles",
"participle forms",
"particle forms",
"passive participles",
"past active participles",
"past participles",
"past participle forms",
"past passive participles",
"perfect active participles",
"perfect participles",
"perfect passive participles",
"pinyin",
"အအာကိန်ꩻ",
"postposition forms",
"prefix forms",
"preposition contractions",
"ဝိဘတ်ပုဒ်",
"prepositional pronouns",
"present active participles",
"အွဉ်ႏနယ်အဝ်ႏထွာတွင်ꩻ ကြိယာႏသဏ္ဍာန်ႏ",
"present passive participles",
"နာမ်ႏတင်ပုဒ်",
"pronoun possessive forms",
"နာမ်ႏဆဲင်ႏတဖြာꩻပုဒ်",
"နာမ်ႏဆဲင်ႏတဖြာꩻ ပုဒ်အအာကိန်ꩻ",
"နာမ်ႏဆဲင်ႏတဖြာꩻ ပုဒ်အအာကိန်ꩻ",
"rafsi",
"လုဲင်ႏတွမ်ႏရောမအက္ခရာႏ",
"singulatives",
"suffix forms",
"ကြိယာႏပုဒ်",
"verbal nouns",
}
-- These langauges will not have links to separate parts of the headword.
data.no_multiword_links = list_to_set{
"zh",
}
-- These languages will not have "LANG multiword terms" categories added.
data.no_multiword_cat = list_to_set{
-------- Languages without spaces between words (sometimes spaces between phrases) --------
"blt", -- Tai Dam
"ja", -- Japanese
"khb", -- Lü
"km", -- Khmer
"lo", -- Lao
"mnw", -- Mon
"my", -- Burmese
"nan", -- Min Nan (some words in Latin script; hyphens between syllables)
"nan-hbl", -- Hokkien (some words in Latin script; hyphens between syllables)
"nod", -- Northern Thai
"ojp", -- Old Japanese
"shn", -- Shan
"sou", -- Southern Thai
"tdd", -- Tai Nüa
"th", -- Thai
"tts", -- Isan
"twh", -- Tai Dón
"txg", -- Tangut
"zh", -- Chinese (all varieties with Chinese characters)
"zkt", -- Khitan
-------- Languages with spaces between syllables --------
"ahk", -- Akha
"aou", -- A'ou
"atb", -- Zaiwa
"byk", -- Biao
"cdy", -- Chadong
--"duu", -- Drung; not sure
--"hmx-pro", -- Proto-Hmong-Mien
--"hnj", -- Green Hmong; not sure
"huq", -- Tsat
"ium", -- Iu Mien
--"lis", -- Lisu; not sure
"mtq", -- Muong
--"mww", -- White Hmong; not sure
"onb", -- Lingao
--"sit-gkh", -- Gokhy; not sure
--"swi", -- Sui; not sure
"tbq-lol-pro", -- Proto-Loloish
"tdh", -- Thulung
"ukk", -- Muak Sa-aak
"vi", -- Vietnamese
"yig", -- Wusa Nasu
"zng", -- Mang
-------- Languages with ~ with surrounding spaces used to separate variants --------
"mkh-ban-pro", -- Proto-Bahnaric
"sit-pro", -- Proto-Sino-Tibetan; listed above
-------- Other weirdnesses --------
"mul", -- Translingual; gestures, Morse code, etc.
"aot", -- Atong (India); bullet is a letter
-------- All sign languages --------
"ads",
"aed",
"aen",
"afg",
"ase",
"asf",
"asp",
"asq",
"asw",
"bfi",
"bfk",
"bog",
"bqn",
"bqy",
"bvl",
"bzs",
"cds",
"csc",
"csd",
"cse",
"csf",
"csg",
"csl",
"csn",
"csq",
"csr",
"doq",
"dse",
"dsl",
"ecs",
"esl",
"esn",
"eso",
"eth",
"fcs",
"fse",
"fsl",
"fss",
"gds",
"gse",
"gsg",
"gsm",
"gss",
"gus",
"hab",
"haf",
"hds",
"hks",
"hos",
"hps",
"hsh",
"hsl",
"icl",
"iks",
"ils",
"inl",
"ins",
"ise",
"isg",
"isr",
"jcs",
"jhs",
"jls",
"jos",
"jsl",
"jus",
"kgi",
"kvk",
"lbs",
"lls",
"lsl",
"lso",
"lsp",
"lst",
"lsy",
"lws",
"mdl",
"mfs",
"mre",
"msd",
"msr",
"mzc",
"mzg",
"mzy",
"nbs",
"ncs",
"nsi",
"nsl",
"nsp",
"nsr",
"nzs",
"okl",
"pgz",
"pks",
"prl",
"prz",
"psc",
"psd",
"psg",
"psl",
"pso",
"psp",
"psr",
"pys",
"rms",
"rsl",
"rsm",
"sdl",
"sfb",
"sfs",
"sgg",
"sgx",
"slf",
"sls",
"sqk",
"sqs",
"ssp",
"ssr",
"svk",
"swl",
"syy",
"tse",
"tsm",
"tsq",
"tss",
"tsy",
"tza",
"ugn",
"ugy",
"ukl",
"uks",
"vgt",
"vsi",
"vsl",
"vsv",
"xki",
"xml",
"xms",
"ygs",
"ysl",
"zib",
"zsl",
}
-- In these languages, the hyphen is not considered a word separator for the "multiword terms" category.
data.hyphen_not_multiword_sep = list_to_set{
"akk", -- Akkadian; hyphens between syllables
"akl", -- Aklanon; hyphens for mid-word glottal stops
"ber-pro", -- Proto-Berber; morphemes separated by hyphens
"ceb", -- Cebuano; hyphens for mid-word glottal stops
"cnk", -- Khumi Chin; hyphens used in single words
"cpi", -- Chinese Pidgin English; Chinese-derived words with hyphens between syllables
"de", -- too many false positives
"esx-esk-pro", -- hyphen used to separate morphemes
"fi", -- Finnish; hyphen used to separate components in compound words if the final and initial vowels match, respectively
"hil", -- Hiligaynon; hyphens for mid-word glottal stops
"hnn", -- Hanunoo; too many false positives
"ilo", -- Ilocano; hyphens for mid-word glottal stops
"kne", -- Kankanaey; hyphens for mid-word glottal stops
"lcp", -- Western Lawa; dash as syllable joiner
"lwl", -- Eastern Lawa; dash as syllable joiner
"mfa", -- Pattani Malay in Thai script; dash as syllable joiner
"mkh-vie-pro", -- Proto-Vietic; morphemes separated by hyphens
"msb", -- Masbatenyo; too many false positives
"tl", -- Tagalog; too many false positives
"war", -- Waray-Waray; too many false positives
"yo", -- Yoruba; hyphens used to show lengthened nasal vowels
}
-- These languages will not have "LANG masculine nouns" and similar categories added.
data.no_gender_cat = list_to_set{
-- Languages without gender but which use the gender field for other purposes
"ja",
"th",
}
data.notranslit = list_to_set{
"ams",
"az",
"bbc",
"bug",
"cdo",
"cia",
"cjm",
"cjy",
"cmn",
"cnp",
"cpi",
"cpx",
"csp",
"czh",
"czo",
"gan",
"hak",
"hnm",
"hsn",
"ja",
"kzg",
"lad",
"ltc",
"luh",
"lzh",
"mnp",
"ms",
"mul",
"mvi",
"nan",
"nan-dat",
"nan-hbl",
"nan-hlh",
"nan-lnx",
"nan-tws",
"nan-zhe",
"nan-zsh",
"och",
"oj",
"okn",
"ryn",
"rys",
"ryu",
"sh",
"sjc",
"tgt",
"th",
"tkn",
"tly",
"txg",
"und",
"vi",
"wuu",
"xug",
"yoi",
"yox",
"yue",
"za",
"zh",
"zhx-sic",
"zhx-tai",
}
-- Script codes for which a script-tagged display title will be added.
data.toBeTagged = list_to_set{
"Ahom",
"Arab",
"fa-Arab",
"glk-Arab",
"kk-Arab",
"ks-Arab",
"ku-Arab",
"mzn-Arab",
"ms-Arab",
"ota-Arab",
"pa-Arab",
"ps-Arab",
"sd-Arab",
"tt-Arab",
"ug-Arab",
"ur-Arab",
"Armi",
"Armn",
"Avst",
"Bali",
"Bamu",
"Batk",
"Beng",
"as-Beng",
"Bopo",
"Brah",
"Brai",
"Bugi",
"Buhd",
"Cakm",
"Cans",
"Cari",
"Cham",
"Cher",
"Copt",
"Cprt",
"Cyrl",
"Cyrs",
"Deva",
"Dsrt",
"Egyd",
"Egyp",
"Ethi",
"Geok",
"Geor",
"Glag",
"Goth",
"Grek",
"Polyt",
"polytonic",
"Gujr",
"Guru",
"Hang",
"Hani",
"Hano",
"Hebr",
"Hira",
"Hluw",
"Ital",
"Java",
"Kali",
"Kana",
"Khar",
"Khmr",
"Knda",
"Kthi",
"Lana",
"Laoo",
"Latn",
"Latf",
"Latg",
"Latnx",
"Latinx",
"pjt-Latn",
"Lepc",
"Limb",
"Linb",
"Lisu",
"Lyci",
"Lydi",
"Mand",
"Mani",
"Marc",
"Merc",
"Mero",
"Mlym",
"Mong",
"mnc-Mong",
"sjo-Mong",
"xwo-Mong",
"Mtei",
"Mymr",
"Narb",
"Nkoo",
"Nshu",
"Ogam",
"Olck",
"Orkh",
"Orya",
"Osma",
"Ougr",
"Palm",
"Phag",
"Phli",
"Phlv",
"Phnx",
"Plrd",
"Prti",
"Rjng",
"Runr",
"Samr",
"Sarb",
"Saur",
"Sgnw",
"Shaw",
"Shrd",
"Sinh",
"Sora",
"Sund",
"Sylo",
"Syrc",
"Tagb",
"Tale",
"Talu",
"Taml",
"Tang",
"Tavt",
"Telu",
"Tfng",
"Tglg",
"Thaa",
"Thai",
"Tibt",
"Ugar",
"Vaii",
"Xpeo",
"Xsux",
"Yiii",
"Zmth",
"Zsym",
"Ipach",
"Music",
"Rumin",
}
-- Parts of speech which will not be categorised in categories like "English terms spelled with É" if
-- the term is the character in question (e.g. the letter entry for English [[é]]). This contrasts with
-- entries like the French adjective [[m̂]], which is a one-letter word spelled with the letter.
data.pos_not_spelled_with_self = list_to_set{
"diacritical marks",
"Han characters",
"Han tu",
"hanja",
"hanzi",
"iteration marks",
"kana",
"kanji",
"letters",
"ligatures",
"logograms",
"morae",
"numeral symbols",
"numerals",
"punctuation marks",
"syllables",
"symbols",
}
------ 2. Lists not converted into sets. ------
-- Recognized aliases for parts of speech (param 2=). Key is the short form and value is the canonical singular (not
-- pluralized) form. It is singular so that the same table can be used in [[Module:form of]] for the p=/POS= param
-- and [[Module:links]] for the pos= param.
data.pos_aliases = {
a = "နာမဝိသေသန",
adj = "နာမဝိသေသန",
adjective = "နာမဝိသေသန",
adjectives = "နာမဝိသေသန",
["adjective forms"] = "နာမဝိသေသနပုဒ်",
adv = "ကြိယာႏဝိသေသန",
adverb = "ကြိယာႏဝိသေသန",
adverbs = "ကြိယာႏဝိသေသန",
["adverb forms"] = "ကြိယာႏဝိသေသနပုဒ်",
art = "article",
det = "determiner",
compadj = "comparative adjective",
compadv = "comparative adverb",
conj = "conjunction",
conv = "converb",
int = "အာမေဍိတ်",
interj = "အာမေဍိတ်",
intj = "အာမေဍိတ်",
interjection = "အာမေဍိတ်",
interjections = "အာမေဍိတ်",
["interjection forms"] = "အာမေဍိတ်ပုဒ်",
n = "နာမ်ႏ",
noun = "နာမ်ႏ",
nouns = "နာမ်ႏ",
["noun forms"] = "နာမ်ႏပုဒ်",
["noun form"] = "နာမ်ႏပုဒ်",
-- the next two support Algonquian languages; see also vii/vai/vti/vta below
na = "animate noun",
ni = "inanimate noun",
num = "ဂဏန်ꩻ",
numeral = "ဂဏန်ꩻ",
numerals = "ဂဏန်ꩻ",
["numeral forms"] = "ဂဏန်ꩻပုဒ်",
part = "participle",
pcl = "particle",
phr = "ငဝ်းစုဗူႏ",
phrase = "ငဝ်းစုဗူႏ",
phrases = "ငဝ်းစုဗူႏ",
["phrase forms"] = "ငဝ်းစုဗူႏပုဒ်",
pn = "နာမ်ႏဆဲင်ႏတဖြာꩻ",
["proper noun"] = "နာမ်ႏဆဲင်ႏတဖြာꩻ",
["proper nouns"] = "နာမ်ႏဆဲင်ႏတဖြာꩻ",
["proper noun forms"] = "နာမ်ႏဆဲင်ႏတဖြာꩻပုဒ်",
postp = "postposition",
pref = "prefix",
prep = "ဝိဘတ်",
preposition = "ဝိဘတ်",
prepositions = "ဝိဘတ်",
["preposition forms"] = "ဝိဘတ်ပုဒ်",
pron = "နာမ်ႏတင်",
pronoun = "နာမ်ႏတင်",
pronouns = "နာမ်ႏတင်",
["pronoun forms"] = "နာမ်ႏတင်ပုဒ်",
prop = "နာမ်ႏဆဲင်ႏတဖြာꩻ",
proper = "နာမ်ႏဆဲင်ႏတဖြာꩻ",
propn = "နာမ်ႏဆဲင်ႏတဖြာꩻ",
rom = "လုဲင်ႏတွမ်ႏရောမအက္ခရာႏ",
romanization = "လုဲင်ႏတွမ်ႏရောမအက္ခရာႏ",
romanizations = "လုဲင်ႏတွမ်ႏရောမအက္ခရာႏ",
suf = "suffix",
supadj = "superlative adjective",
supadv = "superlative adverb",
v = "verb",
verb = "ကြိယာႏ",
verbs = "ကြိယာႏ",
["verb forms"] = "ကြိယာႏပုဒ်",
vb = "ကြိယာႏ",
hanzi = "ဟန်သီ",
pinyin = "ပိဉ်ယိဉ်း",
vi = "intransitive verb",
vt = "transitive verb",
-- the next four support Algonquian languages
vii = "inanimate intransitive verb",
vai = "animate intransitive verb",
vti = "transitive inanimate verb",
vta = "transitive animate verb",
}
-- Parts of speech for which categories like "German masculine nouns" or "Russian imperfective verbs"
-- will be generated if the headword is of the appropriate gender/number.
data.pos_for_gender_number_cat = {
["နာမ်ႏဖုံႏ"] = "နာမ်ႏဖုံႏ",
["proper nouns"] = "နာမ်ႏဖုံႏ",
["အသွုပ်ဆုဲင်ꩻ"] = "အသွုပ်ဆုဲင်ꩻ",
-- We include verbs because impf and pf are valid "genders".
["ကြိယာႏဖုံႏ"] = "ကြိယာႏဖုံႏ",
}
------ 3. Page-wide processing (so that it only needs to be done once per page). ------
data.page = require(headword_page_module).process_page()
-- Fuckme, random references to data.pagename and data.encoded_pagename are scattered throughout the codebase. FIXME!
data.pagename = data.page.pagename
data.encoded_pagename = data.page.encoded_pagename
return data
7pugv2pri2ho1jc5ot3uzgidzilhw3b
မော်ဂျူး:scripts/data
828
231
12798
11464
2025-06-29T14:46:00Z
咽頭べさ
11
12798
Scribunto
text/plain
--[=[
When adding new scripts to this file, please don't forget to add
style definitons for the script in [[MediaWiki:Gadget-LanguagesAndScripts.css]].
]=]
local concat = table.concat
local insert = table.insert
local ipairs = ipairs
local next = next
local remove = table.remove
local select = select
local sort = table.sort
-- Loaded on demand, as it may not be needed (depending on the data).
local function u(...)
u = require("Module:string utilities").char
return u(...)
end
------------------------------------------------------------------------------------
--
-- Helper functions
--
------------------------------------------------------------------------------------
-- Note: a[2] > b[2] means opens are sorted before closes if otherwise equal.
local function sort_ranges(a, b)
return a[1] < b[1] or a[1] == b[1] and a[2] > b[2]
end
-- Returns the union of two or more range tables.
local function union(...)
local ranges = {}
for i = 1, select("#", ...) do
local argt = select(i, ...)
for j, v in ipairs(argt) do
insert(ranges, {v, j % 2 == 1 and 1 or -1})
end
end
sort(ranges, sort_ranges)
local ret, i = {}, 0
for _, range in ipairs(ranges) do
i = i + range[2]
if i == 0 and range[2] == -1 then -- close
insert(ret, range[1])
elseif i == 1 and range[2] == 1 then -- open
if ret[#ret] and range[1] <= ret[#ret] + 1 then
remove(ret) -- merge adjacent ranges
else
insert(ret, range[1])
end
end
end
return ret
end
-- Adds the `characters` key, which is determined by a script's `ranges` table.
local function process_ranges(sc)
local ranges, chars = sc.ranges, {}
for i = 2, #ranges, 2 do
if ranges[i] == ranges[i - 1] then
insert(chars, u(ranges[i]))
else
insert(chars, u(ranges[i - 1]))
if ranges[i] > ranges[i - 1] + 1 then
insert(chars, "-")
end
insert(chars, u(ranges[i]))
end
end
sc.characters = concat(chars)
ranges.n = #ranges
return sc
end
local function handle_normalization_fixes(fixes)
local combiningClasses = fixes.combiningClasses
if combiningClasses then
local chars, i = {}, 0
for char in next, combiningClasses do
i = i + 1
chars[i] = char
end
fixes.combiningClassCharacters = concat(chars)
end
return fixes
end
------------------------------------------------------------------------------------
--
-- Data
--
------------------------------------------------------------------------------------
local m = {}
m["Adlm"] = process_ranges{
"Adlam",
19606346,
"alphabet",
ranges = {
0x061F, 0x061F,
0x0640, 0x0640,
0x1E900, 0x1E94B,
0x1E950, 0x1E959,
0x1E95E, 0x1E95F,
},
capitalized = true,
direction = "rtl",
}
m["Afak"] = {
"Afaka",
382019,
"syllabary",
-- Not in Unicode
}
m["Aghb"] = process_ranges{
"Caucasian Albanian",
2495716,
"alphabet",
ranges = {
0x10530, 0x10563,
0x1056F, 0x1056F,
},
}
m["Ahom"] = process_ranges{
"Ahom",
2839633,
"abugida",
ranges = {
0x11700, 0x1171A,
0x1171D, 0x1172B,
0x11730, 0x11746,
},
}
m["Arab"] = process_ranges{
"Arabic",
1828555,
"abjad", -- more precisely, impure abjad
varieties = {"Jawi", {"Nastaliq", "Nastaleeq"}},
ranges = {
0x0600, 0x06FF,
0x0750, 0x077F,
0x0870, 0x088E,
0x0890, 0x0891,
0x0897, 0x08E1,
0x08E3, 0x08FF,
0xFB50, 0xFBC2,
0xFBD3, 0xFD8F,
0xFD92, 0xFDC7,
0xFDCF, 0xFDCF,
0xFDF0, 0xFDFF,
0xFE70, 0xFE74,
0xFE76, 0xFEFC,
0x102E0, 0x102FB,
0x10E60, 0x10E7E,
0x10EC2, 0x10EC4,
0x10EFC, 0x10EFF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
direction = "rtl",
normalizationFixes = handle_normalization_fixes{
from = {"ٳ"},
to = {"اٟ"}
},
}
m["fa-Arab"] = {
"Arabic",
744068,
m["Arab"][3],
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"Perso-Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["kk-Arab"] = {
"Arabic",
90681452,
m["Arab"][3],
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ks-Arab"] = m["fa-Arab"]
m["ku-Arab"] = m["fa-Arab"]
m["ms-Arab"] = m["kk-Arab"]
m["mzn-Arab"] = m["fa-Arab"]
m["ota-Arab"] = m["fa-Arab"]
m["pa-Arab"] = {
"Shahmukhi",
133800,
m["Arab"][3],
ranges = m["Arab"].ranges,
characters = m["Arab"].characters,
otherNames = {"Arabic"},
direction = "rtl",
parent = "Arab",
normalizationFixes = m["Arab"].normalizationFixes,
}
m["ps-Arab"] = m["fa-Arab"]
m["sd-Arab"] = m["fa-Arab"]
m["tt-Arab"] = m["fa-Arab"]
m["ug-Arab"] = m["fa-Arab"]
m["ur-Arab"] = m["fa-Arab"]
-- Aran (Nastaliq) is subsumed into Arab
m["Armi"] = process_ranges{
"Imperial Aramaic",
26978,
"abjad",
ranges = {
0x10840, 0x10855,
0x10857, 0x1085F,
},
direction = "rtl",
}
m["Armn"] = process_ranges{
"Armenian",
11932,
"alphabet",
ranges = {
0x0531, 0x0556,
0x0559, 0x058A,
0x058D, 0x058F,
0xFB13, 0xFB17,
},
capitalized = true,
}
m["Avst"] = process_ranges{
"Avestan",
790681,
"alphabet",
ranges = {
0x10B00, 0x10B35,
0x10B39, 0x10B3F,
},
direction = "rtl",
}
m["pal-Avst"] = {
"Pazend",
4925073,
m["Avst"][3],
ranges = m["Avst"].ranges,
characters = m["Avst"].characters,
direction = "rtl",
parent = "Avst",
}
m["Bali"] = process_ranges{
"Balinese",
804984,
"abugida",
ranges = {
0x1B00, 0x1B4C,
0x1B4E, 0x1B7F,
},
}
m["Bamu"] = process_ranges{
"Bamum",
806024,
"syllabary",
ranges = {
0xA6A0, 0xA6F7,
0x16800, 0x16A38,
},
}
m["Bass"] = process_ranges{
"Bassa",
810458,
"alphabet",
aliases = {"Bassa Vah", "Vah"},
ranges = {
0x16AD0, 0x16AED,
0x16AF0, 0x16AF5,
},
}
m["Batk"] = process_ranges{
"Batak",
51592,
"abugida",
ranges = {
0x1BC0, 0x1BF3,
0x1BFC, 0x1BFF,
},
}
m["Beng"] = process_ranges{
"Bengali",
756802,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09B0,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09EF,
0x09F2, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = handle_normalization_fixes{
from = {"অা", "ঋৃ", "ঌৢ"},
to = {"আ", "ৠ", "ৡ"}
},
}
m["as-Beng"] = process_ranges{
"Assamese",
191272,
m["Beng"][3],
otherNames = {"Eastern Nagari"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0980, 0x0983,
0x0985, 0x098C,
0x098F, 0x0990,
0x0993, 0x09A8,
0x09AA, 0x09AF,
0x09B2, 0x09B2,
0x09B6, 0x09B9,
0x09BC, 0x09C4,
0x09C7, 0x09C8,
0x09CB, 0x09CE,
0x09D7, 0x09D7,
0x09DC, 0x09DD,
0x09DF, 0x09E3,
0x09E6, 0x09FE,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD2,
0x1CD5, 0x1CD6,
0x1CD8, 0x1CD8,
0x1CE1, 0x1CE1,
0x1CEA, 0x1CEA,
0x1CED, 0x1CED,
0x1CF2, 0x1CF2,
0x1CF5, 0x1CF7,
0xA8F1, 0xA8F1,
},
normalizationFixes = m["Beng"].normalizationFixes,
}
m["Bhks"] = process_ranges{
"Bhaiksuki",
17017839,
"abugida",
ranges = {
0x11C00, 0x11C08,
0x11C0A, 0x11C36,
0x11C38, 0x11C45,
0x11C50, 0x11C6C,
},
}
m["Blis"] = {
"Blissymbolic",
609817,
"logography",
aliases = {"Blissymbols"},
-- Not in Unicode
}
m["Bopo"] = process_ranges{
"Zhuyin",
198269,
"semisyllabary",
aliases = {"Zhuyin Fuhao", "Bopomofo"},
ranges = {
0x02EA, 0x02EB,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302A, 0x302D,
0x3030, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3105, 0x312F,
0x31A0, 0x31BF,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
},
}
m["Brah"] = process_ranges{
"Brahmi",
185083,
"abugida",
ranges = {
0x11000, 0x1104D,
0x11052, 0x11075,
0x1107F, 0x1107F,
},
normalizationFixes = handle_normalization_fixes{
from = {"𑀅𑀸", "𑀋𑀾", "𑀏𑁂"},
to = {"𑀆", "𑀌", "𑀐"}
},
}
m["Brai"] = process_ranges{
"Braille",
79894,
"alphabet",
ranges = {
0x2800, 0x28FF,
},
}
m["Bugi"] = process_ranges{
"Lontara",
1074947,
"abugida",
aliases = {"Buginese"},
ranges = {
0x1A00, 0x1A1B,
0x1A1E, 0x1A1F,
0xA9CF, 0xA9CF,
},
}
m["Buhd"] = process_ranges{
"Buhid",
1002969,
"abugida",
ranges = {
0x1735, 0x1736,
0x1740, 0x1751,
0x1752, 0x1753,
},
}
m["Cakm"] = process_ranges{
"Chakma",
1059328,
"abugida",
ranges = {
0x09E6, 0x09EF,
0x1040, 0x1049,
0x11100, 0x11134,
0x11136, 0x11147,
},
}
m["Cans"] = process_ranges{
"Canadian syllabic",
2479183,
"abugida",
ranges = {
0x1400, 0x167F,
0x18B0, 0x18F5,
0x11AB0, 0x11ABF,
},
}
m["Cari"] = process_ranges{
"Carian",
1094567,
"alphabet",
ranges = {
0x102A0, 0x102D0,
},
}
m["Cham"] = process_ranges{
"Cham",
1060381,
"abugida",
ranges = {
0xAA00, 0xAA36,
0xAA40, 0xAA4D,
0xAA50, 0xAA59,
0xAA5C, 0xAA5F,
},
}
m["Cher"] = process_ranges{
"Cherokee",
26549,
"syllabary",
ranges = {
0x13A0, 0x13F5,
0x13F8, 0x13FD,
0xAB70, 0xABBF,
},
}
m["Chis"] = {
"Chisoi",
123173777,
"abugida",
-- Not in Unicode
}
m["Chrs"] = process_ranges{
"Khwarezmian",
72386710,
"abjad",
aliases = {"Chorasmian"},
ranges = {
0x10FB0, 0x10FCB,
},
direction = "rtl",
}
m["Copt"] = process_ranges{
"Coptic",
321083,
"alphabet",
ranges = {
0x03E2, 0x03EF,
0x2C80, 0x2CF3,
0x2CF9, 0x2CFF,
0x102E0, 0x102FB,
},
capitalized = true,
}
m["Cpmn"] = process_ranges{
"Cypro-Minoan",
1751985,
"syllabary",
aliases = {"Cypro Minoan"},
ranges = {
0x10100, 0x10101,
0x12F90, 0x12FF2,
},
}
m["Cprt"] = process_ranges{
"Cypriot",
1757689,
"syllabary",
ranges = {
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
0x10800, 0x10805,
0x10808, 0x10808,
0x1080A, 0x10835,
0x10837, 0x10838,
0x1083C, 0x1083C,
0x1083F, 0x1083F,
},
direction = "rtl",
}
m["Cyrl"] = process_ranges{
"Cyrillic",
8209,
"alphabet",
ranges = {
0x0400, 0x052F,
0x1C80, 0x1C8A,
0x1D2B, 0x1D2B,
0x1D78, 0x1D78,
0x1DF8, 0x1DF8,
0x2DE0, 0x2DFF,
0x2E43, 0x2E43,
0xA640, 0xA69F,
0xFE2E, 0xFE2F,
0x1E030, 0x1E06D,
0x1E08F, 0x1E08F,
},
capitalized = true,
}
m["Cyrs"] = {
"Old Cyrillic",
442244,
m["Cyrl"][3],
aliases = {"Early Cyrillic"},
ranges = m["Cyrl"].ranges,
characters = m["Cyrl"].characters,
capitalized = m["Cyrl"].capitalized,
wikipedia_article = "Early Cyrillic alphabet",
normalizationFixes = handle_normalization_fixes{
from = {"Ѹ", "ѹ"},
to = {"Ꙋ", "ꙋ"}
},
}
m["Deva"] = process_ranges{
"Devanagari",
38592,
"abugida",
ranges = {
0x0900, 0x097F,
0x1CD0, 0x1CF6,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0xA830, 0xA839,
0xA8E0, 0xA8FF,
0x11B00, 0x11B09,
},
normalizationFixes = handle_normalization_fixes{
from = {"ॆॆ", "ेे", "ाॅ", "ाॆ", "ाꣿ", "ॊॆ", "ाे", "ाै", "ोे", "ाऺ", "ॖॖ", "अॅ", "अॆ", "अा", "एॅ", "एॆ", "एे", "एꣿ", "ऎॆ", "अॉ", "आॅ", "अॊ", "आॆ", "अो", "आे", "अौ", "आै", "ओे", "अऺ", "अऻ", "आऺ", "अाꣿ", "आꣿ", "ऒॆ", "अॖ", "अॗ", "ॶॖ", "्?ा"},
to = {"ꣿ", "ै", "ॉ", "ॊ", "ॏ", "ॏ", "ो", "ौ", "ौ", "ऻ", "ॗ", "ॲ", "ऄ", "आ", "ऍ", "ऎ", "ऐ", "ꣾ", "ꣾ", "ऑ", "ऑ", "ऒ", "ऒ", "ओ", "ओ", "औ", "औ", "औ", "ॳ", "ॴ", "ॴ", "ॵ", "ॵ", "ॵ", "ॶ", "ॷ", "ॷ"}
},
}
m["Diak"] = process_ranges{
"Dhives Akuru",
3307073,
"abugida",
aliases = {"Dhivehi Akuru", "Dives Akuru", "Divehi Akuru"},
ranges = {
0x11900, 0x11906,
0x11909, 0x11909,
0x1190C, 0x11913,
0x11915, 0x11916,
0x11918, 0x11935,
0x11937, 0x11938,
0x1193B, 0x11946,
0x11950, 0x11959,
},
}
m["Dogr"] = process_ranges{
"Dogra",
72402987,
"abugida",
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11800, 0x1183B,
},
}
m["Dsrt"] = process_ranges{
"Deseret",
1200582,
"alphabet",
ranges = {
0x10400, 0x1044F,
},
capitalized = true,
}
m["Dupl"] = process_ranges{
"Duployan",
5316025,
"alphabet",
ranges = {
0x1BC00, 0x1BC6A,
0x1BC70, 0x1BC7C,
0x1BC80, 0x1BC88,
0x1BC90, 0x1BC99,
0x1BC9C, 0x1BCA3,
},
}
m["Egyd"] = {
"Demotic",
188519,
"abjad, logography",
-- Not in Unicode
}
m["Egyh"] = {
"Hieratic",
208111,
"abjad, logography",
-- Unified with Egyptian hieroglyphic in Unicode
}
m["Egyp"] = process_ranges{
"Egyptian hieroglyphic",
132659,
"abjad, logography",
ranges = {
0x13000, 0x13455,
0x13460, 0x143FA,
},
varieties = {"Hieratic"},
wikipedia_article = "Egyptian hieroglyphs",
normalizationFixes = handle_normalization_fixes{
from = {"𓃁", "𓆖"},
to = {"𓃀𓂝", "𓆓𓏏𓇿"}
},
}
m["Elba"] = process_ranges{
"Elbasan",
1036714,
"alphabet",
ranges = {
0x10500, 0x10527,
},
}
m["Elym"] = process_ranges{
"Elymaic",
60744423,
"abjad",
ranges = {
0x10FE0, 0x10FF6,
},
direction = "rtl",
}
m["Ethi"] = process_ranges{
"Ethiopic",
257634,
"abugida",
aliases = {"Ge'ez", "Geʽez"},
ranges = {
0x1200, 0x1248,
0x124A, 0x124D,
0x1250, 0x1256,
0x1258, 0x1258,
0x125A, 0x125D,
0x1260, 0x1288,
0x128A, 0x128D,
0x1290, 0x12B0,
0x12B2, 0x12B5,
0x12B8, 0x12BE,
0x12C0, 0x12C0,
0x12C2, 0x12C5,
0x12C8, 0x12D6,
0x12D8, 0x1310,
0x1312, 0x1315,
0x1318, 0x135A,
0x135D, 0x137C,
0x1380, 0x1399,
0x2D80, 0x2D96,
0x2DA0, 0x2DA6,
0x2DA8, 0x2DAE,
0x2DB0, 0x2DB6,
0x2DB8, 0x2DBE,
0x2DC0, 0x2DC6,
0x2DC8, 0x2DCE,
0x2DD0, 0x2DD6,
0x2DD8, 0x2DDE,
0xAB01, 0xAB06,
0xAB09, 0xAB0E,
0xAB11, 0xAB16,
0xAB20, 0xAB26,
0xAB28, 0xAB2E,
0x1E7E0, 0x1E7E6,
0x1E7E8, 0x1E7EB,
0x1E7ED, 0x1E7EE,
0x1E7F0, 0x1E7FE,
},
}
m["Gara"] = process_ranges{
"Garay",
3095302,
"alphabet",
capitalized = true,
direction = "rtl",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x10D40, 0x10D65,
0x10D69, 0x10D85,
0x10D8E, 0x10D8F,
},
}
m["Geok"] = process_ranges{
"Khutsuri",
1090055,
"alphabet",
ranges = { -- Ⴀ-Ⴭ is Asomtavruli, ⴀ-ⴭ is Nuskhuri
0x10A0, 0x10C5,
0x10C7, 0x10C7,
0x10CD, 0x10CD,
0x10FB, 0x10FB,
0x2D00, 0x2D25,
0x2D27, 0x2D27,
0x2D2D, 0x2D2D,
},
varieties = {"Nuskhuri", "Asomtavruli"},
capitalized = true,
}
m["Geor"] = process_ranges{
"Georgian",
3317411,
"alphabet",
ranges = { -- ა-ჿ is lowercase Mkhedruli; Ა-Ჿ is uppercase Mkhedruli (Mtavruli)
0x0589, 0x0589,
0x10D0, 0x10FF,
0x1C90, 0x1CBA,
0x1CBD, 0x1CBF,
},
varieties = {"Mkhedruli", "Mtavruli"},
capitalized = true,
}
m["Glag"] = process_ranges{
"Glagolitic",
145625,
"alphabet",
ranges = {
0x0484, 0x0484,
0x0487, 0x0487,
0x0589, 0x0589,
0x10FB, 0x10FB,
0x2C00, 0x2C5F,
0x2E43, 0x2E43,
0xA66F, 0xA66F,
0x1E000, 0x1E006,
0x1E008, 0x1E018,
0x1E01B, 0x1E021,
0x1E023, 0x1E024,
0x1E026, 0x1E02A,
},
capitalized = true,
}
m["Gong"] = process_ranges{
"Gunjala Gondi",
18125340,
"abugida",
ranges = {
0x0964, 0x0965,
0x11D60, 0x11D65,
0x11D67, 0x11D68,
0x11D6A, 0x11D8E,
0x11D90, 0x11D91,
0x11D93, 0x11D98,
0x11DA0, 0x11DA9,
},
}
m["Gonm"] = process_ranges{
"Masaram Gondi",
16977603,
"abugida",
ranges = {
0x0964, 0x0965,
0x11D00, 0x11D06,
0x11D08, 0x11D09,
0x11D0B, 0x11D36,
0x11D3A, 0x11D3A,
0x11D3C, 0x11D3D,
0x11D3F, 0x11D47,
0x11D50, 0x11D59,
},
}
m["Goth"] = process_ranges{
"Gothic",
467784,
"alphabet",
ranges = {
0x10330, 0x1034A,
},
wikipedia_article = "Gothic alphabet",
}
m["Gran"] = process_ranges{
"Grantha",
1119274,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0BE6, 0x0BF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CF2, 0x1CF4,
0x1CF8, 0x1CF9,
0x20F0, 0x20F0,
0x11300, 0x11303,
0x11305, 0x1130C,
0x1130F, 0x11310,
0x11313, 0x11328,
0x1132A, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
0x1133B, 0x11344,
0x11347, 0x11348,
0x1134B, 0x1134D,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135D, 0x11363,
0x11366, 0x1136C,
0x11370, 0x11374,
0x11FD0, 0x11FD1,
0x11FD3, 0x11FD3,
},
}
m["Grek"] = process_ranges{
"Greek",
8216,
"alphabet",
ranges = {
0x0342, 0x0342,
0x0345, 0x0345,
0x0370, 0x0377,
0x037A, 0x037F,
0x0384, 0x038A,
0x038C, 0x038C,
0x038E, 0x03A1,
0x03A3, 0x03E1,
0x03F0, 0x03FF,
0x1D26, 0x1D2A,
0x1D5D, 0x1D61,
0x1D66, 0x1D6A,
0x1DBF, 0x1DBF,
0x2126, 0x2127,
0x2129, 0x2129,
0x213C, 0x2140,
0xAB65, 0xAB65,
0x10140, 0x1018E,
0x101A0, 0x101A0,
0x1D200, 0x1D245,
},
capitalized = true,
}
m["Polyt"] = process_ranges{
"Greek",
1475332,
m["Grek"][3],
ranges = union(m["Grek"].ranges, {
0x1F00, 0x1F15,
0x1F18, 0x1F1D,
0x1F20, 0x1F45,
0x1F48, 0x1F4D,
0x1F50, 0x1F57,
0x1F59, 0x1F59,
0x1F5B, 0x1F5B,
0x1F5D, 0x1F5D,
0x1F5F, 0x1F7D,
0x1F80, 0x1FB4,
0x1FB6, 0x1FC4,
0x1FC6, 0x1FD3,
0x1FD6, 0x1FDB,
0x1FDD, 0x1FEF,
0x1FF2, 0x1FF4,
0x1FF6, 0x1FFE,
}),
ietf_subtag = "Grek",
capitalized = m["Grek"].capitalized,
parent = "Grek",
}
m["Gujr"] = process_ranges{
"Gujarati",
733944,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A81, 0x0A83,
0x0A85, 0x0A8D,
0x0A8F, 0x0A91,
0x0A93, 0x0AA8,
0x0AAA, 0x0AB0,
0x0AB2, 0x0AB3,
0x0AB5, 0x0AB9,
0x0ABC, 0x0AC5,
0x0AC7, 0x0AC9,
0x0ACB, 0x0ACD,
0x0AD0, 0x0AD0,
0x0AE0, 0x0AE3,
0x0AE6, 0x0AF1,
0x0AF9, 0x0AFF,
0xA830, 0xA839,
},
normalizationFixes = handle_normalization_fixes{
from = {"ઓ", "અાૈ", "અા", "અૅ", "અે", "અૈ", "અૉ", "અો", "અૌ", "આૅ", "આૈ", "ૅા"},
to = {"અાૅ", "ઔ", "આ", "ઍ", "એ", "ઐ", "ઑ", "ઓ", "ઔ", "ઓ", "ઔ", "ૉ"}
},
}
m["Gukh"] = process_ranges{
"Khema",
110064239,
"abugida",
aliases = {"Gurung Khema", "Khema Phri", "Khema Lipi"},
ranges = {
0x0965, 0x0965,
0x16100, 0x16139,
},
}
m["Guru"] = process_ranges{
"Gurmukhi",
689894,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0A01, 0x0A03,
0x0A05, 0x0A0A,
0x0A0F, 0x0A10,
0x0A13, 0x0A28,
0x0A2A, 0x0A30,
0x0A32, 0x0A33,
0x0A35, 0x0A36,
0x0A38, 0x0A39,
0x0A3C, 0x0A3C,
0x0A3E, 0x0A42,
0x0A47, 0x0A48,
0x0A4B, 0x0A4D,
0x0A51, 0x0A51,
0x0A59, 0x0A5C,
0x0A5E, 0x0A5E,
0x0A66, 0x0A76,
0xA830, 0xA839,
},
normalizationFixes = handle_normalization_fixes{
from = {"ਅਾ", "ਅੈ", "ਅੌ", "ੲਿ", "ੲੀ", "ੲੇ", "ੳੁ", "ੳੂ", "ੳੋ"},
to = {"ਆ", "ਐ", "ਔ", "ਇ", "ਈ", "ਏ", "ਉ", "ਊ", "ਓ"}
},
}
m["Hang"] = process_ranges{
"Hangul",
8222,
"syllabary",
aliases = {"Hangeul"},
ranges = {
0x1100, 0x11FF,
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x302E, 0x3030,
0x3037, 0x3037,
0x30FB, 0x30FB,
0x3131, 0x318E,
0x3200, 0x321E,
0x3260, 0x327E,
0xA960, 0xA97C,
0xAC00, 0xD7A3,
0xD7B0, 0xD7C6,
0xD7CB, 0xD7FB,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFFA0, 0xFFBE,
0xFFC2, 0xFFC7,
0xFFCA, 0xFFCF,
0xFFD2, 0xFFD7,
0xFFDA, 0xFFDC,
},
}
m["Hani"] = process_ranges{
"ဟန်",
8201,
"logography",
ranges = {
0x2E80, 0x2E99,
0x2E9B, 0x2EF3,
0x2F00, 0x2FD5,
0x2FF0, 0x2FFF,
0x3001, 0x3003,
0x3005, 0x3011,
0x3013, 0x301F,
0x3021, 0x302D,
0x3030, 0x3030,
0x3037, 0x303F,
0x3190, 0x319F,
0x31C0, 0x31E5,
0x31EF, 0x31EF,
0x3220, 0x3247,
0x3280, 0x32B0,
0x32C0, 0x32CB,
0x30FB, 0x30FB,
0x32FF, 0x32FF,
0x3358, 0x3370,
0x337B, 0x337F,
0x33E0, 0x33FE,
0x3400, 0x4DBF,
0x4E00, 0x9FFF,
0xA700, 0xA707,
0xF900, 0xFA6D,
0xFA70, 0xFAD9,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0x16FE2, 0x16FE3,
0x16FF0, 0x16FF1,
0x1D360, 0x1D371,
0x1F250, 0x1F251,
0x20000, 0x2A6DF,
0x2A700, 0x2B739,
0x2B740, 0x2B81D,
0x2B820, 0x2CEA1,
0x2CEB0, 0x2EBE0,
0x2EBF0, 0x2EE5D,
0x2F800, 0x2FA1D,
0x30000, 0x3134A,
0x31350, 0x323AF,
},
varieties = {"Hanzi", "Kanji", "Hanja", "Chu Nom"},
spaces = false,
}
m["Hans"] = {
"Simplified Han",
185614,
m["Hani"][3],
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hant"] = {
"Traditional Han",
178528,
m["Hani"][3],
ranges = m["Hani"].ranges,
characters = m["Hani"].characters,
spaces = m["Hani"].spaces,
parent = "Hani",
}
m["Hano"] = process_ranges{
"Hanunoo",
1584045,
"abugida",
aliases = {"Hanunó'o", "Hanuno'o"},
ranges = {
0x1720, 0x1736,
},
}
m["Hatr"] = process_ranges{
"Hatran",
20813038,
"abjad",
ranges = {
0x108E0, 0x108F2,
0x108F4, 0x108F5,
0x108FB, 0x108FF,
},
direction = "rtl",
}
m["Hebr"] = process_ranges{
"Hebrew",
33513,
"abjad", -- more precisely, impure abjad
ranges = {
0x0591, 0x05C7,
0x05D0, 0x05EA,
0x05EF, 0x05F4,
0x2135, 0x2138,
0xFB1D, 0xFB36,
0xFB38, 0xFB3C,
0xFB3E, 0xFB3E,
0xFB40, 0xFB41,
0xFB43, 0xFB44,
0xFB46, 0xFB4F,
},
direction = "rtl",
}
m["Hira"] = process_ranges{
"Hiragana",
48332,
"syllabary",
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3041, 0x3096,
0x3099, 0x30A0,
0x30FB, 0x30FC,
0xFE45, 0xFE46,
0xFF61, 0xFF65,
0xFF70, 0xFF70,
0xFF9E, 0xFF9F,
0x1B001, 0x1B11F,
0x1B132, 0x1B132,
0x1B150, 0x1B152,
0x1F200, 0x1F200,
},
varieties = {"Hentaigana"},
spaces = false,
}
m["Hluw"] = process_ranges{
"Anatolian hieroglyphic",
521323,
"logography, syllabary",
ranges = {
0x14400, 0x14646,
},
wikipedia_article = "Anatolian hieroglyphs",
}
m["Hmng"] = process_ranges{
"Pahawh Hmong",
365954,
"semisyllabary",
aliases = {"Hmong"},
ranges = {
0x16B00, 0x16B45,
0x16B50, 0x16B59,
0x16B5B, 0x16B61,
0x16B63, 0x16B77,
0x16B7D, 0x16B8F,
},
}
m["Hmnp"] = process_ranges{
"Nyiakeng Puachue Hmong",
33712499,
"alphabet",
ranges = {
0x1E100, 0x1E12C,
0x1E130, 0x1E13D,
0x1E140, 0x1E149,
0x1E14E, 0x1E14F,
},
}
m["Hung"] = process_ranges{
"Old Hungarian",
446224,
"alphabet",
aliases = {"Hungarian runic"},
ranges = {
0x10C80, 0x10CB2,
0x10CC0, 0x10CF2,
0x10CFA, 0x10CFF,
},
capitalized = true,
direction = "rtl",
}
m["Ibrnn"] = {
"Northeastern Iberian",
1113155,
"semisyllabary",
ietf_subtag = "Zzzz",
-- Not in Unicode
}
m["Ibrns"] = {
"Southeastern Iberian",
2305351,
"semisyllabary",
ietf_subtag = "Zzzz",
-- Not in Unicode
}
m["Image"] = {
-- To be used to avoid any formatting or link processing
"Image-rendered",
478798,
-- This should not have any characters listed
ietf_subtag = "Zyyy",
translit = false,
character_category = false, -- none
}
m["Inds"] = {
"Indus",
601388,
aliases = {"Harappan", "Indus Valley"},
}
m["Ipach"] = {
"International Phonetic Alphabet",
21204,
aliases = {"IPA"},
ietf_subtag = "Latn",
}
m["Ital"] = process_ranges{
"Old Italic",
4891256,
"alphabet",
ranges = {
0x10300, 0x10323,
0x1032D, 0x1032F,
},
}
m["Java"] = process_ranges{
"Javanese",
879704,
"abugida",
ranges = {
0xA980, 0xA9CD,
0xA9CF, 0xA9D9,
0xA9DE, 0xA9DF,
},
}
m["Jurc"] = {
"Jurchen",
912240,
"logography",
spaces = false,
}
m["Kali"] = process_ranges{
"Kayah Li",
4919239,
"abugida",
ranges = {
0xA900, 0xA92F,
},
}
m["Kana"] = process_ranges{
"Katakana",
82946,
"syllabary",
ranges = {
0x3001, 0x3003,
0x3008, 0x3011,
0x3013, 0x301F,
0x3030, 0x3035,
0x3037, 0x3037,
0x303C, 0x303D,
0x3099, 0x309C,
0x30A0, 0x30FF,
0x31F0, 0x31FF,
0x32D0, 0x32FE,
0x3300, 0x3357,
0xFE45, 0xFE46,
0xFF61, 0xFF9F,
0x1AFF0, 0x1AFF3,
0x1AFF5, 0x1AFFB,
0x1AFFD, 0x1AFFE,
0x1B000, 0x1B000,
0x1B120, 0x1B122,
0x1B155, 0x1B155,
0x1B164, 0x1B167,
},
spaces = false,
}
m["Kawi"] = process_ranges{
"Kawi",
975802,
"abugida",
ranges = {
0x11F00, 0x11F10,
0x11F12, 0x11F3A,
0x11F3E, 0x11F5A,
},
}
m["Khar"] = process_ranges{
"Kharoshthi",
1161266,
"abugida",
ranges = {
0x10A00, 0x10A03,
0x10A05, 0x10A06,
0x10A0C, 0x10A13,
0x10A15, 0x10A17,
0x10A19, 0x10A35,
0x10A38, 0x10A3A,
0x10A3F, 0x10A48,
0x10A50, 0x10A58,
},
direction = "rtl",
}
m["Khmr"] = process_ranges{
"Khmer",
1054190,
"abugida",
ranges = {
0x1780, 0x17DD,
0x17E0, 0x17E9,
0x17F0, 0x17F9,
0x19E0, 0x19FF,
},
spaces = false,
normalizationFixes = handle_normalization_fixes{
from = {"ឣ", "ឤ"},
to = {"អ", "អា"}
},
}
m["Khoj"] = process_ranges{
"Khojki",
1740656,
"abugida",
ranges = {
0x0AE6, 0x0AEF,
0xA830, 0xA839,
0x11200, 0x11211,
0x11213, 0x11241,
},
normalizationFixes = handle_normalization_fixes{
from = {"𑈀𑈬𑈱", "𑈀𑈬", "𑈀𑈱", "𑈀𑈳", "𑈁𑈱", "𑈆𑈬", "𑈬𑈰", "𑈬𑈱", "𑉀𑈮"},
to = {"𑈇", "𑈁", "𑈅", "𑈇", "𑈇", "𑈃", "𑈲", "𑈳", "𑈂"}
},
}
m["Khomt"] = {
"Khom Thai",
13023788,
"abugida",
-- Not in Unicode
}
m["Kitl"] = {
"Khitan large",
6401797,
"logography",
spaces = false,
}
m["Kits"] = process_ranges{
"Khitan small",
6401800,
"logography, syllabary",
ranges = {
0x16FE4, 0x16FE4,
0x18B00, 0x18CD5,
0x18CFF, 0x18CFF,
},
spaces = false,
}
m["Knda"] = process_ranges{
"Kannada",
839666,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C80, 0x0C8C,
0x0C8E, 0x0C90,
0x0C92, 0x0CA8,
0x0CAA, 0x0CB3,
0x0CB5, 0x0CB9,
0x0CBC, 0x0CC4,
0x0CC6, 0x0CC8,
0x0CCA, 0x0CCD,
0x0CD5, 0x0CD6,
0x0CDD, 0x0CDE,
0x0CE0, 0x0CE3,
0x0CE6, 0x0CEF,
0x0CF1, 0x0CF3,
0x1CD0, 0x1CD0,
0x1CD2, 0x1CD3,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0x1CF4, 0x1CF4,
0xA830, 0xA835,
},
normalizationFixes = handle_normalization_fixes{
from = {"ಉಾ", "ಋಾ", "ಒೌ"},
to = {"ಊ", "ೠ", "ಔ"}
},
}
m["Kpel"] = {
"Kpelle",
1586299,
"syllabary",
-- Not in Unicode
}
m["Krai"] = process_ranges{
"Kirat Rai",
123173834,
"abugida",
aliases = {"Rai", "Khambu Rai", "Rai Barṇamālā", "Kirat Khambu Rai"},
ranges = {
0x16D40, 0x16D79,
},
}
m["Kthi"] = process_ranges{
"Kaithi",
1253814,
"abugida",
ranges = {
0x0966, 0x096F,
0xA830, 0xA839,
0x11080, 0x110C2,
0x110CD, 0x110CD,
},
}
m["Kulit"] = {
"Kulitan",
6443044,
"abugida",
-- Not in Unicode
}
m["Lana"] = process_ranges{
"Tai Tham",
1314503,
"abugida",
aliases = {"Tham", "Tua Mueang", "Lanna"},
ranges = {
0x1A20, 0x1A5E,
0x1A60, 0x1A7C,
0x1A7F, 0x1A89,
0x1A90, 0x1A99,
0x1AA0, 0x1AAD,
},
spaces = false,
}
m["Laoo"] = process_ranges{
"Lao",
1815229,
"abugida",
ranges = {
0x0E81, 0x0E82,
0x0E84, 0x0E84,
0x0E86, 0x0E8A,
0x0E8C, 0x0EA3,
0x0EA5, 0x0EA5,
0x0EA7, 0x0EBD,
0x0EC0, 0x0EC4,
0x0EC6, 0x0EC6,
0x0EC8, 0x0ECE,
0x0ED0, 0x0ED9,
0x0EDC, 0x0EDF,
},
spaces = false,
}
m["Latn"] = process_ranges{
"Latin",
8229,
"alphabet",
aliases = {"Roman"},
ranges = {
0x0041, 0x005A,
0x0061, 0x007A,
0x00AA, 0x00AA,
0x00BA, 0x00BA,
0x00C0, 0x00D6,
0x00D8, 0x00F6,
0x00F8, 0x02B8,
0x02C0, 0x02C1,
0x02E0, 0x02E4,
0x0363, 0x036F,
0x0485, 0x0486,
0x0951, 0x0952,
0x10FB, 0x10FB,
0x1D00, 0x1D25,
0x1D2C, 0x1D5C,
0x1D62, 0x1D65,
0x1D6B, 0x1D77,
0x1D79, 0x1DBE,
0x1DF8, 0x1DF8,
0x1E00, 0x1EFF,
0x202F, 0x202F,
0x2071, 0x2071,
0x207F, 0x207F,
0x2090, 0x209C,
0x20F0, 0x20F0,
0x2100, 0x2125,
0x2128, 0x2128,
0x212A, 0x2134,
0x2139, 0x213B,
0x2141, 0x214E,
0x2160, 0x2188,
0x2C60, 0x2C7F,
0xA700, 0xA707,
0xA722, 0xA787,
0xA78B, 0xA7CD,
0xA7D0, 0xA7D1,
0xA7D3, 0xA7D3,
0xA7D5, 0xA7DC,
0xA7F2, 0xA7FF,
0xA92E, 0xA92E,
0xAB30, 0xAB5A,
0xAB5C, 0xAB64,
0xAB66, 0xAB69,
0xFB00, 0xFB06,
0xFF21, 0xFF3A,
0xFF41, 0xFF5A,
0x10780, 0x10785,
0x10787, 0x107B0,
0x107B2, 0x107BA,
0x1DF00, 0x1DF1E,
0x1DF25, 0x1DF2A,
},
varieties = {"Rumi", "Romaji", "Rōmaji", "Romaja"},
capitalized = true,
translit = false,
}
m["Latf"] = {
"Fraktur",
148443,
m["Latn"][3],
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"Blackletter"}, -- Blackletter is actually the parent "script"
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Latg"] = {
"Gaelic",
1432616,
m["Latn"][3],
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
otherNames = {"Irish"},
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["pjt-Latn"] = {
"Latin",
nil,
m["Latn"][3],
ranges = m["Latn"].ranges,
characters = m["Latn"].characters,
capitalized = m["Latn"].capitalized,
translit = m["Latn"].translit,
parent = "Latn",
}
m["Leke"] = {
"Leke",
19572613,
"abugida",
-- Not in Unicode
}
m["Lepc"] = process_ranges{
"Lepcha",
1481626,
"abugida",
aliases = {"Róng"},
ranges = {
0x1C00, 0x1C37,
0x1C3B, 0x1C49,
0x1C4D, 0x1C4F,
},
}
m["Limb"] = process_ranges{
"Limbu",
933796,
"abugida",
ranges = {
0x0965, 0x0965,
0x1900, 0x191E,
0x1920, 0x192B,
0x1930, 0x193B,
0x1940, 0x1940,
0x1944, 0x194F,
},
}
m["Lina"] = process_ranges{
"Linear A",
30972,
ranges = {
0x10107, 0x10133,
0x10600, 0x10736,
0x10740, 0x10755,
0x10760, 0x10767,
},
}
m["Linb"] = process_ranges{
"Linear B",
190102,
ranges = {
0x10000, 0x1000B,
0x1000D, 0x10026,
0x10028, 0x1003A,
0x1003C, 0x1003D,
0x1003F, 0x1004D,
0x10050, 0x1005D,
0x10080, 0x100FA,
0x10100, 0x10102,
0x10107, 0x10133,
0x10137, 0x1013F,
},
}
m["Lisu"] = process_ranges{
"Fraser",
1194621,
"alphabet",
aliases = {"Old Lisu", "Lisu"},
ranges = {
0x300A, 0x300B,
0xA4D0, 0xA4FF,
0x11FB0, 0x11FB0,
},
normalizationFixes = handle_normalization_fixes{
from = {"['’]", "[.ꓸ][.ꓸ]", "[.ꓸ][,ꓹ]"},
to = {"ʼ", "ꓺ", "ꓻ"}
},
}
m["Loma"] = {
"Loma",
13023816,
"syllabary",
-- Not in Unicode
}
m["Lyci"] = process_ranges{
"Lycian",
913587,
"alphabet",
ranges = {
0x10280, 0x1029C,
},
}
m["Lydi"] = process_ranges{
"Lydian",
4261300,
"alphabet",
ranges = {
0x10920, 0x10939,
0x1093F, 0x1093F,
},
direction = "rtl",
}
m["Mahj"] = process_ranges{
"Mahajani",
6732850,
"abugida",
ranges = {
0x0964, 0x096F,
0xA830, 0xA839,
0x11150, 0x11176,
},
}
m["Maka"] = process_ranges{
"Makasar",
72947229,
"abugida",
aliases = {"Old Makasar"},
ranges = {
0x11EE0, 0x11EF8,
},
}
m["Mand"] = process_ranges{
"Mandaic",
1812130,
aliases = {"Mandaean"},
ranges = {
0x0640, 0x0640,
0x0840, 0x085B,
0x085E, 0x085E,
},
direction = "rtl",
}
m["Mani"] = process_ranges{
"Manichaean",
3544702,
"abjad",
ranges = {
0x0640, 0x0640,
0x10AC0, 0x10AE6,
0x10AEB, 0x10AF6,
},
direction = "rtl",
}
m["Marc"] = process_ranges{
"Marchen",
72403709,
"abugida",
ranges = {
0x11C70, 0x11C8F,
0x11C92, 0x11CA7,
0x11CA9, 0x11CB6,
},
}
m["Maya"] = process_ranges{
"Maya",
211248,
aliases = {"Maya hieroglyphic", "Mayan", "Mayan hieroglyphic"},
ranges = {
0x1D2E0, 0x1D2F3,
},
}
m["Medf"] = process_ranges{
"Medefaidrin",
1519764,
aliases = {"Oberi Okaime", "Oberi Ɔkaimɛ"},
ranges = {
0x16E40, 0x16E9A,
},
capitalized = true,
}
m["Mend"] = process_ranges{
"Mende",
951069,
aliases = {"Mende Kikakui"},
ranges = {
0x1E800, 0x1E8C4,
0x1E8C7, 0x1E8D6,
},
direction = "rtl",
}
m["Merc"] = process_ranges{
"Meroitic cursive",
73028124,
"abugida",
ranges = {
0x109A0, 0x109B7,
0x109BC, 0x109CF,
0x109D2, 0x109FF,
},
direction = "rtl",
}
m["Mero"] = process_ranges{
"Meroitic hieroglyphic",
73028623,
"abugida",
ranges = {
0x10980, 0x1099F,
},
direction = "rtl",
wikipedia_article = "Meroitic hieroglyphs",
}
m["Mlym"] = process_ranges{
"Malayalam",
1164129,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0D00, 0x0D0C,
0x0D0E, 0x0D10,
0x0D12, 0x0D44,
0x0D46, 0x0D48,
0x0D4A, 0x0D4F,
0x0D54, 0x0D63,
0x0D66, 0x0D7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
0xA830, 0xA832,
},
normalizationFixes = handle_normalization_fixes{
from = {"ഇൗ", "ഉൗ", "എെ", "ഒാ", "ഒൗ", "ക്", "ണ്", "ന്റ", "ന്", "മ്", "യ്", "ര്", "ല്", "ള്", "ഴ്", "െെ", "ൻ്റ"},
to = {"ഈ", "ഊ", "ഐ", "ഓ", "ഔ", "ൿ", "ൺ", "ൻറ", "ൻ", "ൔ", "ൕ", "ർ", "ൽ", "ൾ", "ൖ", "ൈ", "ന്റ"}
},
}
m["Modi"] = process_ranges{
"Modi",
1703713,
"abugida",
ranges = {
0xA830, 0xA839,
0x11600, 0x11644,
0x11650, 0x11659,
},
normalizationFixes = handle_normalization_fixes{
from = {"𑘀𑘹", "𑘀𑘺", "𑘁𑘹", "𑘁𑘺"},
to = {"𑘊", "𑘋", "𑘌", "𑘍"}
},
}
m["Mong"] = process_ranges{
"Mongolian",
1055705,
"alphabet",
aliases = {"Mongol bichig", "Hudum Mongol bichig"},
ranges = {
0x1800, 0x1805,
0x180A, 0x1819,
0x1820, 0x1842,
0x1878, 0x1878,
0x1880, 0x1897,
0x18A6, 0x18A6,
0x18A9, 0x18A9,
0x200C, 0x200D,
0x202F, 0x202F,
0x3001, 0x3002,
0x3008, 0x300B,
0x11660, 0x11668,
},
direction = "vertical-ltr",
}
m["mnc-Mong"] = process_ranges{
"Manchu",
122888,
m["Mong"][3],
ranges = {
0x1801, 0x1801,
0x1804, 0x1804,
0x1808, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x185D,
0x185F, 0x1861,
0x1864, 0x1869,
0x186C, 0x1871,
0x1873, 0x1877,
0x1880, 0x1888,
0x188F, 0x188F,
0x189A, 0x18A5,
0x18A8, 0x18A8,
0x18AA, 0x18AA,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["sjo-Mong"] = process_ranges{
"Xibe",
113624153,
m["Mong"][3],
aliases = {"Sibe"},
ranges = {
0x1804, 0x1804,
0x1807, 0x1807,
0x180A, 0x180F,
0x1820, 0x1820,
0x1823, 0x1823,
0x1828, 0x1828,
0x182A, 0x182A,
0x182E, 0x1830,
0x1834, 0x1838,
0x183A, 0x183A,
0x185D, 0x1872,
0x200C, 0x200D,
0x202F, 0x202F,
},
direction = "vertical-ltr",
parent = "mnc-Mong",
}
m["xwo-Mong"] = process_ranges{
"Clear Script",
529085,
m["Mong"][3],
aliases = {"Todo", "Todo bichig"},
ranges = {
0x1800, 0x1801,
0x1804, 0x1806,
0x180A, 0x1820,
0x1828, 0x1828,
0x182F, 0x1831,
0x1834, 0x1834,
0x1837, 0x1838,
0x183A, 0x183B,
0x1840, 0x1840,
0x1843, 0x185C,
0x1880, 0x1887,
0x1889, 0x188F,
0x1894, 0x1894,
0x1896, 0x1899,
0x18A7, 0x18A7,
0x200C, 0x200D,
0x202F, 0x202F,
0x11669, 0x1166C,
},
direction = "vertical-ltr",
parent = "Mong",
}
m["Moon"] = {
"Moon",
918391,
"alphabet",
aliases = {"Moon System of Embossed Reading", "Moon type", "Moon writing", "Moon alphabet", "Moon code"},
-- Not in Unicode
}
m["Morse"] = {
"Morse code",
79897,
ietf_subtag = "Zsym",
}
m["Mroo"] = process_ranges{
"Mru",
75919253,
aliases = {"Mro", "Mrung"},
ranges = {
0x16A40, 0x16A5E,
0x16A60, 0x16A69,
0x16A6E, 0x16A6F,
},
}
m["Mtei"] = process_ranges{
"Meitei Mayek",
2981413,
"abugida",
aliases = {"Meetei Mayek", "Manipuri"},
ranges = {
0xAAE0, 0xAAF6,
0xABC0, 0xABED,
0xABF0, 0xABF9,
},
}
m["Mult"] = process_ranges{
"Multani",
17047906,
"abugida",
ranges = {
0x0A66, 0x0A6F,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128A, 0x1128D,
0x1128F, 0x1129D,
0x1129F, 0x112A9,
},
}
m["Music"] = process_ranges{
"musical notation",
233861,
"pictography",
ranges = {
0x2669, 0x266F,
0x1D100, 0x1D126,
0x1D129, 0x1D1EA,
},
ietf_subtag = "Zsym",
translit = false,
}
m["Mymr"] = process_ranges{
"မဲင်ꩻ-မန်း",
43887939,
"abugida",
aliases = {"Myanmar"},
ranges = {
0x1000, 0x109F,
0xA92E, 0xA92E,
0xA9E0, 0xA9FE,
0xAA60, 0xAA7F,
0x116D0, 0x116E3,
},
spaces = false,
}
m["Nagm"] = process_ranges{
"Mundari Bani",
106917274,
"alphabet",
aliases = {"Nag Mundari"},
ranges = {
0x1E4D0, 0x1E4F9,
},
}
m["Nand"] = process_ranges{
"Nandinagari",
6963324,
"abugida",
ranges = {
0x0964, 0x0965,
0x0CE6, 0x0CEF,
0x1CE9, 0x1CE9,
0x1CF2, 0x1CF2,
0x1CFA, 0x1CFA,
0xA830, 0xA835,
0x119A0, 0x119A7,
0x119AA, 0x119D7,
0x119DA, 0x119E4,
},
}
m["Narb"] = process_ranges{
"Ancient North Arabian",
1472213,
"abjad",
aliases = {"Old North Arabian"},
ranges = {
0x10A80, 0x10A9F,
},
direction = "rtl",
}
m["Nbat"] = process_ranges{
"Nabataean",
855624,
"abjad",
aliases = {"Nabatean"},
ranges = {
0x10880, 0x1089E,
0x108A7, 0x108AF,
},
direction = "rtl",
}
m["Newa"] = process_ranges{
"Newa",
7237292,
"abugida",
aliases = {"Newar", "Newari", "Prachalit Nepal"},
ranges = {
0x11400, 0x1145B,
0x1145D, 0x11461,
},
}
m["Nkdb"] = {
"Dongba",
1190953,
"pictography",
aliases = {"Naxi Dongba", "Nakhi Dongba", "Tomba", "Tompa", "Mo-so"},
spaces = false,
-- Not in Unicode
}
m["Nkgb"] = {
"Geba",
731189,
"syllabary",
aliases = {"Nakhi Geba", "Naxi Geba"},
spaces = false,
-- Not in Unicode
}
m["Nkoo"] = process_ranges{
"N'Ko",
1062587,
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x07C0, 0x07FA,
0x07FD, 0x07FF,
0xFD3E, 0xFD3F,
},
direction = "rtl",
}
m["None"] = {
"unspecified",
nil,
-- This should not have any characters listed
ietf_subtag = "Zyyy",
translit = false,
character_category = false, -- none
}
m["Nshu"] = process_ranges{
"Nüshu",
56436,
"syllabary",
aliases = {"Nushu"},
ranges = {
0x16FE1, 0x16FE1,
0x1B170, 0x1B2FB,
},
spaces = false,
}
m["Ogam"] = process_ranges{
"Ogham",
184661,
ranges = {
0x1680, 0x169C,
},
}
m["Olck"] = process_ranges{
"Ol Chiki",
201688,
aliases = {"Ol Chemetʼ", "Ol", "Santali"},
ranges = {
0x1C50, 0x1C7F,
},
}
m["Onao"] = process_ranges{
"Ol Onal",
108607084,
"alphabet",
ranges = {
0x0964, 0x0965,
0x1E5D0, 0x1E5FA,
0x1E5FF, 0x1E5FF,
},
}
m["Orkh"] = process_ranges{
"Old Turkic",
5058305,
aliases = {"Orkhon runic"},
ranges = {
0x10C00, 0x10C48,
},
direction = "rtl",
}
m["Orya"] = process_ranges{
"Odia",
1760127,
"abugida",
aliases = {"Oriya"},
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B01, 0x0B03,
0x0B05, 0x0B0C,
0x0B0F, 0x0B10,
0x0B13, 0x0B28,
0x0B2A, 0x0B30,
0x0B32, 0x0B33,
0x0B35, 0x0B39,
0x0B3C, 0x0B44,
0x0B47, 0x0B48,
0x0B4B, 0x0B4D,
0x0B55, 0x0B57,
0x0B5C, 0x0B5D,
0x0B5F, 0x0B63,
0x0B66, 0x0B77,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = handle_normalization_fixes{
from = {"ଅା", "ଏୗ", "ଓୗ"},
to = {"ଆ", "ଐ", "ଔ"}
},
}
m["Osge"] = process_ranges{
"Osage",
7105529,
ranges = {
0x104B0, 0x104D3,
0x104D8, 0x104FB,
},
capitalized = true,
}
m["Osma"] = process_ranges{
"Osmanya",
1377866,
ranges = {
0x10480, 0x1049D,
0x104A0, 0x104A9,
},
}
m["Ougr"] = process_ranges{
"Old Uyghur",
1998938,
"abjad, alphabet",
ranges = {
0x0640, 0x0640,
0x10AF2, 0x10AF2,
0x10F70, 0x10F89,
},
-- This should ideally be "vertical-ltr", but getting the CSS right is tricky because it's right-to-left horizontally, but left-to-right vertically. Currently, displaying it vertically causes it to display bottom-to-top.
direction = "rtl",
}
m["Palm"] = process_ranges{
"Palmyrene",
17538100,
ranges = {
0x10860, 0x1087F,
},
direction = "rtl",
}
m["Pauc"] = process_ranges{
"Pau Cin Hau",
25339852,
ranges = {
0x11AC0, 0x11AF8,
},
}
m["Pcun"] = {
"Proto-Cuneiform",
1650699,
"pictography",
-- Not in Unicode
}
m["Pelm"] = {
"Proto-Elamite",
56305763,
"pictography",
-- Not in Unicode
}
m["Perm"] = process_ranges{
"Old Permic",
147899,
ranges = {
0x0483, 0x0483,
0x10350, 0x1037A,
},
}
m["Phag"] = process_ranges{
"Phags-pa",
822836,
"abugida",
ranges = {
0x1802, 0x1803,
0x1805, 0x1805,
0x200C, 0x200D,
0x202F, 0x202F,
0x3002, 0x3002,
0xA840, 0xA877,
},
direction = "vertical-ltr",
}
m["Phli"] = process_ranges{
"Inscriptional Pahlavi",
24089793,
"abjad",
ranges = {
0x10B60, 0x10B72,
0x10B78, 0x10B7F,
},
direction = "rtl",
}
m["Phlp"] = process_ranges{
"Psalter Pahlavi",
7253954,
"abjad",
ranges = {
0x0640, 0x0640,
0x10B80, 0x10B91,
0x10B99, 0x10B9C,
0x10BA9, 0x10BAF,
},
direction = "rtl",
}
m["Phlv"] = {
"Book Pahlavi",
72403118,
"abjad",
direction = "rtl",
wikipedia_article = "Pahlavi scripts#Book Pahlavi",
-- Not in Unicode
}
m["Phnx"] = process_ranges{
"Phoenician",
26752,
"abjad",
ranges = {
0x10900, 0x1091B,
0x1091F, 0x1091F,
},
direction = "rtl",
}
m["Plrd"] = process_ranges{
"Pollard",
601734,
"abugida",
aliases = {"Miao"},
ranges = {
0x16F00, 0x16F4A,
0x16F4F, 0x16F87,
0x16F8F, 0x16F9F,
},
}
m["Prti"] = process_ranges{
"Inscriptional Parthian",
13023804,
ranges = {
0x10B40, 0x10B55,
0x10B58, 0x10B5F,
},
direction = "rtl",
}
m["Psin"] = {
"Proto-Sinaitic",
1065250,
"abjad",
direction = "rtl",
-- Not in Unicode
}
m["Ranj"] = {
"Ranjana",
2385276,
"abugida",
-- Not in Unicode
}
m["Rjng"] = process_ranges{
"Rejang",
2007960,
"abugida",
ranges = {
0xA930, 0xA953,
0xA95F, 0xA95F,
},
}
m["Rohg"] = process_ranges{
"Hanifi Rohingya",
21028705,
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0640, 0x0640,
0x06D4, 0x06D4,
0x10D00, 0x10D27,
0x10D30, 0x10D39,
},
direction = "rtl",
}
m["Roro"] = {
"Rongorongo",
209764,
-- Not in Unicode
}
m["Rumin"] = process_ranges{
"Rumi numerals",
nil,
ranges = {
0x10E60, 0x10E7E,
},
ietf_subtag = "Arab",
}
m["Runr"] = process_ranges{
"Runic",
82996,
"alphabet",
ranges = {
0x16A0, 0x16EA,
0x16EE, 0x16F8,
},
}
m["Samr"] = process_ranges{
"Samaritan",
1550930,
"abjad",
ranges = {
0x0800, 0x082D,
0x0830, 0x083E,
},
direction = "rtl",
}
m["Sarb"] = process_ranges{
"Ancient South Arabian",
446074,
"abjad",
aliases = {"Old South Arabian"},
ranges = {
0x10A60, 0x10A7F,
},
direction = "rtl",
}
m["Saur"] = process_ranges{
"Saurashtra",
3535165,
"abugida",
ranges = {
0xA880, 0xA8C5,
0xA8CE, 0xA8D9,
},
}
m["Semap"] = {
"flag semaphore",
250796,
"pictography",
ietf_subtag = "Zsym",
}
m["Sgnw"] = process_ranges{
"SignWriting",
1497335,
"pictography",
aliases = {"Sutton SignWriting"},
ranges = {
0x1D800, 0x1DA8B,
0x1DA9B, 0x1DA9F,
0x1DAA1, 0x1DAAF,
},
translit = false,
}
m["Shaw"] = process_ranges{
"Shavian",
1970098,
aliases = {"Shaw"},
ranges = {
0x10450, 0x1047F,
},
}
m["Shrd"] = process_ranges{
"Sharada",
2047117,
"abugida",
ranges = {
0x0951, 0x0951,
0x1CD7, 0x1CD7,
0x1CD9, 0x1CD9,
0x1CDC, 0x1CDD,
0x1CE0, 0x1CE0,
0xA830, 0xA835,
0xA838, 0xA838,
0x11180, 0x111DF,
},
}
m["Shui"] = {
"Sui",
752854,
"logography",
spaces = false,
-- Not in Unicode
}
m["Sidd"] = process_ranges{
"Siddham",
250379,
"abugida",
ranges = {
0x11580, 0x115B5,
0x115B8, 0x115DD,
},
}
m["Sidt"] = {
"Sidetic",
36659,
"alphabet",
direction = "rtl",
-- Not in Unicode
}
m["Sind"] = process_ranges{
"Khudabadi",
6402810,
"abugida",
aliases = {"Khudawadi"},
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x112B0, 0x112EA,
0x112F0, 0x112F9,
},
normalizationFixes = handle_normalization_fixes{
from = {"𑊰𑋠", "𑊰𑋥", "𑊰𑋦", "𑊰𑋧", "𑊰𑋨"},
to = {"𑊱", "𑊶", "𑊷", "𑊸", "𑊹"}
},
}
m["Sinh"] = process_ranges{
"Sinhalese",
1574992,
"abugida",
aliases = {"Sinhala"},
ranges = {
0x0964, 0x0965,
0x0D81, 0x0D83,
0x0D85, 0x0D96,
0x0D9A, 0x0DB1,
0x0DB3, 0x0DBB,
0x0DBD, 0x0DBD,
0x0DC0, 0x0DC6,
0x0DCA, 0x0DCA,
0x0DCF, 0x0DD4,
0x0DD6, 0x0DD6,
0x0DD8, 0x0DDF,
0x0DE6, 0x0DEF,
0x0DF2, 0x0DF4,
0x1CF2, 0x1CF2,
0x111E1, 0x111F4,
},
normalizationFixes = handle_normalization_fixes{
from = {"අා", "අැ", "අෑ", "උෟ", "ඍෘ", "ඏෟ", "එ්", "එෙ", "ඔෟ", "ෘෘ"},
to = {"ආ", "ඇ", "ඈ", "ඌ", "ඎ", "ඐ", "ඒ", "ඓ", "ඖ", "ෲ"}
},
}
m["Sogd"] = process_ranges{
"Sogdian",
578359,
"abjad",
ranges = {
0x0640, 0x0640,
0x10F30, 0x10F59,
},
direction = "rtl",
}
m["Sogo"] = process_ranges{
"Old Sogdian",
72403254,
"abjad",
ranges = {
0x10F00, 0x10F27,
},
direction = "rtl",
}
m["Sora"] = process_ranges{
"Sorang Sompeng",
7563292,
aliases = {"Sora Sompeng"},
ranges = {
0x110D0, 0x110E8,
0x110F0, 0x110F9,
},
}
m["Soyo"] = process_ranges{
"Soyombo",
8009382,
"abugida",
ranges = {
0x11A50, 0x11AA2,
},
}
m["Sund"] = process_ranges{
"Sundanese",
51589,
"abugida",
ranges = {
0x1B80, 0x1BBF,
0x1CC0, 0x1CC7,
},
}
m["Sunu"] = process_ranges{
"Sunuwar",
109984965,
"alphabet",
ranges = {
0x11BC0, 0x11BE1,
0x11BF0, 0x11BF9,
},
}
m["Sylo"] = process_ranges{
"Sylheti Nagri",
144128,
"abugida",
aliases = {"Sylheti Nāgarī", "Syloti Nagri"},
ranges = {
0x0964, 0x0965,
0x09E6, 0x09EF,
0xA800, 0xA82C,
},
}
m["Syrc"] = process_ranges{
"Syriac",
26567,
"abjad", -- more precisely, impure abjad
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0640, 0x0640,
0x064B, 0x0655,
0x0670, 0x0670,
0x0700, 0x070D,
0x070F, 0x074A,
0x074D, 0x074F,
0x0860, 0x086A,
0x1DF8, 0x1DF8,
0x1DFA, 0x1DFA,
},
direction = "rtl",
}
-- Syre, Syrj, Syrn are apparently subsumed into Syrc; discuss if this causes issues
m["Tagb"] = process_ranges{
"Tagbanwa",
977444,
"abugida",
ranges = {
0x1735, 0x1736,
0x1760, 0x176C,
0x176E, 0x1770,
0x1772, 0x1773,
},
}
m["Takr"] = process_ranges{
"Takri",
759202,
"abugida",
ranges = {
0x0964, 0x0965,
0xA830, 0xA839,
0x11680, 0x116B9,
0x116C0, 0x116C9,
},
normalizationFixes = handle_normalization_fixes{
from = {"𑚀𑚭", "𑚀𑚴", "𑚀𑚵", "𑚆𑚲"},
to = {"𑚁", "𑚈", "𑚉", "𑚇"}
},
}
m["Tale"] = process_ranges{
"Tai Nüa",
2566326,
"abugida",
aliases = {"Tai Nuea", "New Tai Nüa", "New Tai Nuea", "Dehong Dai", "Tai Dehong", "Tai Le"},
ranges = {
0x1040, 0x1049,
0x1950, 0x196D,
0x1970, 0x1974,
},
spaces = false,
}
m["Talu"] = process_ranges{
"New Tai Lue",
3498863,
"abugida",
ranges = {
0x1980, 0x19AB,
0x19B0, 0x19C9,
0x19D0, 0x19DA,
0x19DE, 0x19DF,
},
spaces = false,
}
m["Taml"] = process_ranges{
"Tamil",
26803,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0B82, 0x0B83,
0x0B85, 0x0B8A,
0x0B8E, 0x0B90,
0x0B92, 0x0B95,
0x0B99, 0x0B9A,
0x0B9C, 0x0B9C,
0x0B9E, 0x0B9F,
0x0BA3, 0x0BA4,
0x0BA8, 0x0BAA,
0x0BAE, 0x0BB9,
0x0BBE, 0x0BC2,
0x0BC6, 0x0BC8,
0x0BCA, 0x0BCD,
0x0BD0, 0x0BD0,
0x0BD7, 0x0BD7,
0x0BE6, 0x0BFA,
0x1CDA, 0x1CDA,
0xA8F3, 0xA8F3,
0x11301, 0x11301,
0x11303, 0x11303,
0x1133B, 0x1133C,
0x11FC0, 0x11FF1,
0x11FFF, 0x11FFF,
},
normalizationFixes = handle_normalization_fixes{
from = {"அூ", "ஸ்ரீ"},
to = {"ஆ", "ஶ்ரீ"}
},
}
m["Tang"] = process_ranges{
"Tangut",
1373610,
"logography, syllabary",
ranges = {
0x31EF, 0x31EF,
0x16FE0, 0x16FE0,
0x17000, 0x187F7,
0x18800, 0x18AFF,
0x18D00, 0x18D08,
},
spaces = false,
}
m["Tavt"] = process_ranges{
"Tai Viet",
11818517,
"abugida",
ranges = {
0xAA80, 0xAAC2,
0xAADB, 0xAADF,
},
spaces = false,
}
m["Tayo"] = {
"Lai Tay",
16306701,
"abugida",
aliases = {"Tai Yo"},
direction = "vertical-rtl",
-- Not in Unicode
}
m["Telu"] = process_ranges{
"Telugu",
570450,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x0C00, 0x0C0C,
0x0C0E, 0x0C10,
0x0C12, 0x0C28,
0x0C2A, 0x0C39,
0x0C3C, 0x0C44,
0x0C46, 0x0C48,
0x0C4A, 0x0C4D,
0x0C55, 0x0C56,
0x0C58, 0x0C5A,
0x0C5D, 0x0C5D,
0x0C60, 0x0C63,
0x0C66, 0x0C6F,
0x0C77, 0x0C7F,
0x1CDA, 0x1CDA,
0x1CF2, 0x1CF2,
},
normalizationFixes = handle_normalization_fixes{
from = {"ఒౌ", "ఒౕ", "ిౕ", "ెౕ", "ొౕ"},
to = {"ఔ", "ఓ", "ీ", "ే", "ో"}
},
}
m["Teng"] = {
"Tengwar",
473725,
}
m["Tfng"] = process_ranges{
"Tifinagh",
208503,
"abjad, alphabet",
ranges = {
0x2D30, 0x2D67,
0x2D6F, 0x2D70,
0x2D7F, 0x2D7F,
},
otherNames = {"Libyco-Berber", "Berber"}, -- per Wikipedia, Libyco-Berber is the parent
}
m["Tglg"] = process_ranges{
"Baybayin",
812124,
"abugida",
aliases = {"Tagalog"},
varieties = {"Kur-itan"},
ranges = {
0x1700, 0x1715,
0x171F, 0x171F,
0x1735, 0x1736,
},
}
m["Thaa"] = process_ranges{
"Thaana",
877906,
"abugida",
ranges = {
0x060C, 0x060C,
0x061B, 0x061C,
0x061F, 0x061F,
0x0660, 0x0669,
0x0780, 0x07B1,
0xFDF2, 0xFDF2,
0xFDFD, 0xFDFD,
},
direction = "rtl",
}
m["Thai"] = process_ranges{
"Thai",
236376,
"abugida",
ranges = {
0x0E01, 0x0E3A,
0x0E40, 0x0E5B,
},
spaces = false,
}
m["Tibt"] = process_ranges{
"Tibetan",
46861,
"abugida",
ranges = {
0x0F00, 0x0F47,
0x0F49, 0x0F6C,
0x0F71, 0x0F97,
0x0F99, 0x0FBC,
0x0FBE, 0x0FCC,
0x0FCE, 0x0FD4,
0x0FD9, 0x0FDA,
0x3008, 0x300B,
},
normalizationFixes = handle_normalization_fixes{
combiningClasses = {["༹"] = 1},
from = {"ཷ", "ཹ"},
to = {"ྲཱྀ", "ླཱྀ"}
},
}
m["sit-tam-Tibt"] = {
"Tamyig",
109875213,
m["Tibt"][3],
ranges = m["Tibt"].ranges,
characters = m["Tibt"].characters,
parent = "Tibt",
normalizationFixes = m["Tibt"].normalizationFixes,
}
m["Tirh"] = process_ranges{
"Tirhuta",
1765752,
"abugida",
ranges = {
0x0951, 0x0952,
0x0964, 0x0965,
0x1CF2, 0x1CF2,
0xA830, 0xA839,
0x11480, 0x114C7,
0x114D0, 0x114D9,
},
normalizationFixes = handle_normalization_fixes{
from = {"𑒁𑒰", "𑒋𑒺", "𑒍𑒺", "𑒪𑒵", "𑒪𑒶"},
to = {"𑒂", "𑒌", "𑒎", "𑒉", "𑒊"}
},
}
m["Tnsa"] = process_ranges{
"Tangsa",
105576311,
"alphabet",
ranges = {
0x16A70, 0x16ABE,
0x16AC0, 0x16AC9,
},
}
m["Todr"] = process_ranges{
"Todhri",
10274731,
"alphabet",
direction = "rtl",
ranges = {
0x105C0, 0x105F3,
},
}
m["Tols"] = {
"Tolong Siki",
4459822,
"alphabet",
-- Not in Unicode
}
m["Toto"] = process_ranges{
"Toto",
104837516,
"abugida",
ranges = {
0x1E290, 0x1E2AE,
},
}
m["Tutg"] = process_ranges{
"Tigalari",
2604990,
"abugida",
aliases = {"Tulu"},
ranges = {
0x1CF2, 0x1CF2,
0x1CF4, 0x1CF4,
0xA8F1, 0xA8F1,
0x11380, 0x11389,
0x1138B, 0x1138B,
0x1138E, 0x1138E,
0x11390, 0x113B5,
0x113B7, 0x113C0,
0x113C2, 0x113C2,
0x113C5, 0x113C5,
0x113C7, 0x113CA,
0x113CC, 0x113D5,
0x113D7, 0x113D8,
0x113E1, 0x113E2,
},
}
m["Ugar"] = process_ranges{
"Ugaritic",
332652,
"abjad",
ranges = {
0x10380, 0x1039D,
0x1039F, 0x1039F,
},
}
m["Vaii"] = process_ranges{
"Vai",
523078,
"syllabary",
ranges = {
0xA500, 0xA62B,
},
}
m["Visp"] = {
"Visible Speech",
1303365,
"alphabet",
-- Not in Unicode
}
m["Vith"] = process_ranges{
"Vithkuqi",
3301993,
"alphabet",
ranges = {
0x10570, 0x1057A,
0x1057C, 0x1058A,
0x1058C, 0x10592,
0x10594, 0x10595,
0x10597, 0x105A1,
0x105A3, 0x105B1,
0x105B3, 0x105B9,
0x105BB, 0x105BC,
},
capitalized = true,
}
m["Wara"] = process_ranges{
"Varang Kshiti",
79199,
aliases = {"Warang Citi"},
ranges = {
0x118A0, 0x118F2,
0x118FF, 0x118FF,
},
capitalized = true,
}
m["Wcho"] = process_ranges{
"Wancho",
33713728,
"alphabet",
ranges = {
0x1E2C0, 0x1E2F9,
0x1E2FF, 0x1E2FF,
},
}
m["Wole"] = {
"Woleai",
6643710,
"syllabary",
-- Not in Unicode
}
m["Xpeo"] = process_ranges{
"Old Persian",
1471822,
ranges = {
0x103A0, 0x103C3,
0x103C8, 0x103D5,
},
}
m["Xsux"] = process_ranges{
"Cuneiform",
401,
aliases = {"Sumero-Akkadian Cuneiform"},
ranges = {
0x12000, 0x12399,
0x12400, 0x1246E,
0x12470, 0x12474,
0x12480, 0x12543,
},
}
m["Yezi"] = process_ranges{
"Yezidi",
13175481,
"alphabet",
ranges = {
0x060C, 0x060C,
0x061B, 0x061B,
0x061F, 0x061F,
0x0660, 0x0669,
0x10E80, 0x10EA9,
0x10EAB, 0x10EAD,
0x10EB0, 0x10EB1,
},
direction = "rtl",
}
m["Yiii"] = process_ranges{
"Yi",
1197646,
"syllabary",
ranges = {
0x3001, 0x3002,
0x3008, 0x3011,
0x3014, 0x301B,
0x30FB, 0x30FB,
0xA000, 0xA48C,
0xA490, 0xA4C6,
0xFF61, 0xFF65,
},
}
m["Zanb"] = process_ranges{
"Zanabazar Square",
50809208,
"abugida",
ranges = {
0x11A00, 0x11A47,
},
}
m["Zmth"] = process_ranges{
"mathematical notation",
1140046,
ranges = {
0x00AC, 0x00AC,
0x00B1, 0x00B1,
0x00D7, 0x00D7,
0x00F7, 0x00F7,
0x03D0, 0x03D2,
0x03D5, 0x03D5,
0x03F0, 0x03F1,
0x03F4, 0x03F6,
0x0606, 0x0608,
0x2016, 0x2016,
0x2032, 0x2034,
0x2040, 0x2040,
0x2044, 0x2044,
0x2052, 0x2052,
0x205F, 0x205F,
0x2061, 0x2064,
0x207A, 0x207E,
0x208A, 0x208E,
0x20D0, 0x20DC,
0x20E1, 0x20E1,
0x20E5, 0x20E6,
0x20EB, 0x20EF,
0x2102, 0x2102,
0x2107, 0x2107,
0x210A, 0x2113,
0x2115, 0x2115,
0x2118, 0x211D,
0x2124, 0x2124,
0x2128, 0x2129,
0x212C, 0x212D,
0x212F, 0x2131,
0x2133, 0x2138,
0x213C, 0x2149,
0x214B, 0x214B,
0x2190, 0x21A7,
0x21A9, 0x21AE,
0x21B0, 0x21B1,
0x21B6, 0x21B7,
0x21BC, 0x21DB,
0x21DD, 0x21DD,
0x21E4, 0x21E5,
0x21F4, 0x22FF,
0x2308, 0x230B,
0x2320, 0x2321,
0x237C, 0x237C,
0x239B, 0x23B5,
0x23B7, 0x23B7,
0x23D0, 0x23D0,
0x23DC, 0x23E2,
0x25A0, 0x25A1,
0x25AE, 0x25B7,
0x25BC, 0x25C1,
0x25C6, 0x25C7,
0x25CA, 0x25CB,
0x25CF, 0x25D3,
0x25E2, 0x25E2,
0x25E4, 0x25E4,
0x25E7, 0x25EC,
0x25F8, 0x25FF,
0x2605, 0x2606,
0x2640, 0x2640,
0x2642, 0x2642,
0x2660, 0x2663,
0x266D, 0x266F,
0x27C0, 0x27FF,
0x2900, 0x2AFF,
0x2B30, 0x2B44,
0x2B47, 0x2B4C,
0xFB29, 0xFB29,
0xFE61, 0xFE66,
0xFE68, 0xFE68,
0xFF0B, 0xFF0B,
0xFF1C, 0xFF1E,
0xFF3C, 0xFF3C,
0xFF3E, 0xFF3E,
0xFF5C, 0xFF5C,
0xFF5E, 0xFF5E,
0xFFE2, 0xFFE2,
0xFFE9, 0xFFEC,
0x1D400, 0x1D454,
0x1D456, 0x1D49C,
0x1D49E, 0x1D49F,
0x1D4A2, 0x1D4A2,
0x1D4A5, 0x1D4A6,
0x1D4A9, 0x1D4AC,
0x1D4AE, 0x1D4B9,
0x1D4BB, 0x1D4BB,
0x1D4BD, 0x1D4C3,
0x1D4C5, 0x1D505,
0x1D507, 0x1D50A,
0x1D50D, 0x1D514,
0x1D516, 0x1D51C,
0x1D51E, 0x1D539,
0x1D53B, 0x1D53E,
0x1D540, 0x1D544,
0x1D546, 0x1D546,
0x1D54A, 0x1D550,
0x1D552, 0x1D6A5,
0x1D6A8, 0x1D7CB,
0x1D7CE, 0x1D7FF,
0x1EE00, 0x1EE03,
0x1EE05, 0x1EE1F,
0x1EE21, 0x1EE22,
0x1EE24, 0x1EE24,
0x1EE27, 0x1EE27,
0x1EE29, 0x1EE32,
0x1EE34, 0x1EE37,
0x1EE39, 0x1EE39,
0x1EE3B, 0x1EE3B,
0x1EE42, 0x1EE42,
0x1EE47, 0x1EE47,
0x1EE49, 0x1EE49,
0x1EE4B, 0x1EE4B,
0x1EE4D, 0x1EE4F,
0x1EE51, 0x1EE52,
0x1EE54, 0x1EE54,
0x1EE57, 0x1EE57,
0x1EE59, 0x1EE59,
0x1EE5B, 0x1EE5B,
0x1EE5D, 0x1EE5D,
0x1EE5F, 0x1EE5F,
0x1EE61, 0x1EE62,
0x1EE64, 0x1EE64,
0x1EE67, 0x1EE6A,
0x1EE6C, 0x1EE72,
0x1EE74, 0x1EE77,
0x1EE79, 0x1EE7C,
0x1EE7E, 0x1EE7E,
0x1EE80, 0x1EE89,
0x1EE8B, 0x1EE9B,
0x1EEA1, 0x1EEA3,
0x1EEA5, 0x1EEA9,
0x1EEAB, 0x1EEBB,
0x1EEF0, 0x1EEF1,
},
translit = false,
}
m["Zsym"] = process_ranges{
"symbolic",
80071,
"pictography",
ranges = {
0x20DD, 0x20E0,
0x20E2, 0x20E4,
0x20E7, 0x20EA,
0x20F0, 0x20F0,
0x2100, 0x2101,
0x2103, 0x2106,
0x2108, 0x2109,
0x2114, 0x2114,
0x2116, 0x2117,
0x211E, 0x2123,
0x2125, 0x2127,
0x212A, 0x212B,
0x212E, 0x212E,
0x2132, 0x2132,
0x2139, 0x213B,
0x214A, 0x214A,
0x214C, 0x214F,
0x21A8, 0x21A8,
0x21AF, 0x21AF,
0x21B2, 0x21B5,
0x21B8, 0x21BB,
0x21DC, 0x21DC,
0x21DE, 0x21E3,
0x21E6, 0x21F3,
0x2300, 0x2307,
0x230C, 0x231F,
0x2322, 0x237B,
0x237D, 0x239A,
0x23B6, 0x23B6,
0x23B8, 0x23CF,
0x23D1, 0x23DB,
0x23E3, 0x23FF,
0x2500, 0x259F,
0x25A2, 0x25AD,
0x25B8, 0x25BB,
0x25C2, 0x25C5,
0x25C8, 0x25C9,
0x25CC, 0x25CE,
0x25D4, 0x25E1,
0x25E3, 0x25E3,
0x25E5, 0x25E6,
0x25ED, 0x25F7,
0x2600, 0x2604,
0x2607, 0x263F,
0x2641, 0x2641,
0x2643, 0x265F,
0x2664, 0x266C,
0x2670, 0x27BF,
0x2B00, 0x2B2F,
0x2B45, 0x2B46,
0x2B4D, 0x2B73,
0x2B76, 0x2B95,
0x2B97, 0x2BFF,
0x4DC0, 0x4DFF,
0x1F000, 0x1F02B,
0x1F030, 0x1F093,
0x1F0A0, 0x1F0AE,
0x1F0B1, 0x1F0BF,
0x1F0C1, 0x1F0CF,
0x1F0D1, 0x1F0F5,
0x1F300, 0x1F6D7,
0x1F6DC, 0x1F6EC,
0x1F6F0, 0x1F6FC,
0x1F700, 0x1F776,
0x1F77B, 0x1F7D9,
0x1F7E0, 0x1F7EB,
0x1F7F0, 0x1F7F0,
0x1F800, 0x1F80B,
0x1F810, 0x1F847,
0x1F850, 0x1F859,
0x1F860, 0x1F887,
0x1F890, 0x1F8AD,
0x1F8B0, 0x1F8B1,
0x1F900, 0x1FA53,
0x1FA60, 0x1FA6D,
0x1FA70, 0x1FA7C,
0x1FA80, 0x1FA88,
0x1FA90, 0x1FABD,
0x1FABF, 0x1FAC5,
0x1FACE, 0x1FADB,
0x1FAE0, 0x1FAE8,
0x1FAF0, 0x1FAF8,
0x1FB00, 0x1FB92,
0x1FB94, 0x1FBCA,
0x1FBF0, 0x1FBF9,
},
translit = false,
character_category = false, -- none
}
m["Zyyy"] = {
"undetermined",
104839687,
-- This should not have any characters listed, probably
translit = false,
character_category = false, -- none
}
m["Zzzz"] = {
"uncoded",
104839675,
-- This should not have any characters listed
translit = false,
character_category = false, -- none
}
-- These should be defined after the scripts they are composed of.
m["Hrkt"] = process_ranges{
"Kana",
187659,
"syllabary",
aliases = {"Japanese syllabaries"},
ranges = union(
m["Hira"].ranges,
m["Kana"].ranges
),
spaces = false,
}
m["Jpan"] = process_ranges{
"Japanese",
190502,
"logography, syllabary",
ranges = union(
m["Hrkt"].ranges,
m["Hani"].ranges,
m["Latn"].ranges
),
spaces = false,
sort_by_scraping = true,
}
m["Kore"] = process_ranges{
"Korean",
711797,
"logography, syllabary",
ranges = union(
m["Hang"].ranges,
m["Hani"].ranges,
m["Latn"].ranges
),
}
return require("Module:languages").finalizeData(m, "script")
6x9k7si8f785i8hnw56xikz6jtmke99
圆桌
0
3370
12799
7572
2025-06-29T15:11:43Z
咽頭べさ
11
အကြောင်းအရာ "==ခယ်ႏ== {{zh-see|圓桌}}" ဖြင့် အစားထိုးခဲ့သည်
12799
wikitext
text/x-wiki
==ခယ်ႏ==
{{zh-see|圓桌}}
1v0rtikvylkcxvdffr3dyq4sjjy947y
橙盖鹅膏菌
0
3427
12831
7645
2025-06-29T17:18:46Z
咽頭べさ
11
12831
wikitext
text/x-wiki
==ခယ်ႏ==
===အငေါဝ်းထန်ႏ===
{{zh-pron
|m=chéng gài é gāo jūn
|cat=n,a
}}
===နာမ်ႏ===
{{head|zh|နာမ်ႏ}}
* [[သွန်ꩻအို့ꩻတောင်ꩻ]]
===နပ်တွက်ဗျာႏ===
* ဗာႏ
7a3sxqviwu3auy1et42ysidv6agd43p
爸爸
0
3445
12832
7670
2025-06-29T17:20:45Z
咽頭べさ
11
12832
wikitext
text/x-wiki
==ခယ်ႏ==
{{zh-forms|alt=把拔-bǎbá; eye dialect}}
===အငဝ်းထန်ႏ===
{{zh-pron
|m=bàba,bǎbá,1nb=standard in Mainland and Taiwan,2nb=variant in Taiwan
|m-s=ba2ba2-1
|dg=ба1ба2
|c=baa1-4 baa1,baa1 baa1
|ca=LL-Q9186-Luilui6666-爸爸.wav
|c_note=baa1-4 baa1 - vernacular; baa1 baa1 - literary
|j=ba3 ba3-2
|mn=zz,tp,tn,kh,mg:pa-pa/tn:pa-pah/xm:pā-pâ/xm:pā-pā/xm,qz,ph:pâ-pâ/hc,tc:pá-pah
|mn-t=ba5 ba5
|w=sh:1pa pa;sz:1pa pa1
|x-h=ba2 ba/ba1 ba
|ma=y
|cat=n
}}
===နာမ်ႏ===
{{zh-noun}}
# ဖာ။ ပေါး။
====နပ်တွက်ဗျာႏ====
* ဖြာꩻ
l536fzv89kg80m1tdadhooy58wz86kw
牛车
0
3446
12833
7678
2025-06-29T17:25:15Z
咽頭べさ
11
အကြောင်းအရာ "{{also|牛車}} ==ခယ်ႏ== {{zh-see|牛車}}" ဖြင့် အစားထိုးခဲ့သည်
12833
wikitext
text/x-wiki
{{also|牛車}}
==ခယ်ႏ==
{{zh-see|牛車}}
fkl0g2ul2uqomz9tykxikxrbru1t8l6
眉毛
0
3449
12835
7684
2025-06-29T17:28:23Z
咽頭べさ
11
12835
wikitext
text/x-wiki
==ခယ်ႏ==
===အငဝ်းထန်ႏ===
{{zh-pron
|m=méimáo,tl=y
|m-s=mi2mao2-1
|dg=ми1мо2
|c=mei4 mou4
|ca=LL-Q9186-Luilui6666-眉毛.wav
|g=mi4 mau
|j=mi1 mau1
|mb=mi̿-ma̿u
|md=mì-mò̤
|w=sh:6mi mau
|x=mei2 mau2
|cat=n
}}
===နာမ်ႏ===
* [[မဲ့ကူႏ]]
===နပ်တွက်ဗျာႏ===
* ပင်
l20eojqsrv3v9vkn1ytdewf89d3uzud
12836
12835
2025-06-29T17:29:13Z
咽頭べさ
11
12836
wikitext
text/x-wiki
==ခယ်ႏ==
===အငဝ်းထန်ႏ===
{{zh-pron
|m=méimáo,tl=y
|m-s=mi2mao2-1
|dg=ми1мо2
|c=mei4 mou4
|ca=LL-Q9186-Luilui6666-眉毛.wav
|g=mi4 mau
|j=mi1 mau1
|mb=mi̿-ma̿u
|md=mì-mò̤
|w=sh:6mi mau
|x=mei2 mau2
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
* [[မဲ့ကူႏ]]
===နပ်တွက်ဗျာႏ===
* ပင်
6fooowcr5oq6n7qoczru1v49hnxow00
语言
0
3561
12827
8219
2025-06-29T17:03:07Z
咽頭べさ
11
အကြောင်းအရာ "{{also|語言}} ==ခယ်ႏ== {{zh-see|語言}}" ဖြင့် အစားထိုးခဲ့သည်
12827
wikitext
text/x-wiki
{{also|語言}}
==ခယ်ႏ==
{{zh-see|語言}}
teh4eltx1bxzyvqookk73f4154rfg8a
犬
0
4683
12826
10612
2025-06-29T16:59:23Z
咽頭べさ
11
12826
wikitext
text/x-wiki
{{also|大|太}}
{{character info}}
{{character info|⽝}}
==ခယ်ႏ==
===အငဝ်းထန်ႏ===
{{zh-pron
|m=quǎn
|m-s=quan3
|dg=
|c=hyun2
|ca=LL-Q9186-Luilui6666-犬.wav
|c-t=hun2
|g=qyon3
|h=pfs=khién;hrs=h:kienˊ;gd=kian3
|j=qye1
|mb=kṳǐng
|md=kēng
|mn=ml,jj,tw:khián
|mn-t=kiêng2/kiang2
|mn-t_note=kiêng2 - Chaozhou; kiang2 - Shantou
|px=pt,jk,nr,yy:koeng3/xy:kyoeng3/ft:kieng3
|w=sh:5chioe
|x=qye3
|mc=y
|oc=y
|cat=n
}}
===နာမ်ႏ===
{{zh-noun}}
# [[ထွီႏ]]
# ကအူႏ၊ ကအဲင်ႏဒါႏလိုꩻ တရိစ္ဆာန်ႏ လွူးလမ်းတမျိုꩻ။
==ဂျပန်==
===အငဝ်းထန်ႏ===
{{ja-pron|いぬ|acc=2|acc_ref=DJR,NHK|a=Ja-inu-anglonative.oga}}
===နာမ်ႏ===
{{ja-noun|count=匹|いぬ|イヌ}}
# [[ထွီႏ]]
# ကအူႏ၊ ကအဲင်ႏဒါႏလိုꩻ တရိစ္ဆာန်ႏ လွူးလမ်းတမျိုꩻ။
4d82hu0t91en7fbwo7220yeylcn9u76
家具
0
4703
12822
10671
2025-06-29T16:51:27Z
咽頭べさ
11
12822
wikitext
text/x-wiki
{{also|家俱|傢俱|傢具}}
==ခယ်ႏ==
{{zh-forms|t2=傢具|t3=家俱|t4=傢俱}}
{{zh-wp|zh|wuu|gan}}
===အငဝ်းထန်ႏ===
{{zh-pron
|m=jiājù
|ma=Zh-jiajù.ogg
|c=gaa1 geoi6
|ca=LL-Q9186-Luilui6666-家具.wav
|g='ga1 qy5
|h=pfs=kâ-khí;hrs=h:gaˋ ki˖
|j=jia1 jy3
|mn=xm,qz,tw:ka-kū/zz:kee-kī/twv:ka-khū
|w=sh:1ka jiu,1cia jiu
|x=jia1 jy4
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
# တခြိုꩻအသုင်ꩻအဆောင်ႏ၊ ပရိဘောဂ။
==ဂျပန်==
===အငဝ်းထန်ႏ===
{{ja-pron|かぐ|acc=a}}
* ရိုမစိ - kagu
* ဟိရဂန - かぐ
* ပအိုဝ်ႏ - ကဂု
===နာမ်ႏ===
{{ja-noun|かぐ}}
# [[တခြိုꩻ]]အသုင်ꩻအဆောင်ႏ။ [[ပရိဘောဂ]]
paykwwv75oz3gkxxrlbmackl93h40sb
木耳
0
4905
12829
11045
2025-06-29T17:08:22Z
咽頭べさ
11
12829
wikitext
text/x-wiki
==ခယ်ႏ==
{{zh-forms|alt=木米-Hakka,木栮-Eastern Min}}
===အငဝ်းထန်ႏ===
{{zh-pron
|m=mù'ěr
|m-x=mǔ'er
|m-nj=můq'ěr
|c=muk6 ji5
|c-yj=muk6 ji2
|g=muh6 'eo3
|h=pfs=muk-mí;hrs=h:mug miˊ;gd=mug5 mi3
|j=meh4 er2
|mb=mù-nèng
|md=mŭk-mī
|mn=xm,tp,kh,tn,lk,sx,km,mg,hc,tc,wq,pn,ph:bo̍k-ní/qz,lk,wh,ph:bo̍k-lí/zz,yl:bo̍k-jí/yl:bo̍k-jíⁿ/tc,tt:bo̍k-gí/twv:bo̍k-mí
|mn-t=bhag8 re2
|px=pt,jk,nr,xy,yy,ft:borh7 zi3
|sp=moek5 nji2
|w=sh:8moq gher6;sh,sz:8moq gni6;hz:8moq er3;nb:8moq er6
|w-j=8moq er3
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
# [[သွန်ꩻနားလာႏ]]
==ဂျပန်==
{{ja-kanjitab|yomi=k,i|sort=きくらげ}}
[[Image:Auricularia auricula-judae JPG.jpg|250px|thumb|{{lang|ja|木耳。}}]]
===အငဝ်းထန်ႏ===
{{ja-pron|きくらげ}}
* ပအိုဝ်ႏ - ခိခုရဂဲ
===နာမ်ႏ===
{{ja-noun|きくらげ|キクラゲ}}
* [[သွန်ꩻနားလာႏ]]
jm53dptbcqlol9fsajriyj9m1icjf80
島
0
4921
12814
11051
2025-06-29T16:18:50Z
咽頭べさ
11
12814
wikitext
text/x-wiki
{{also|岛|嶋|嶌|嶹|鳥|烏}}
{{character info}}
==ခယ်ႏ==
===အငဝ်းထန်ႏ===
{{zh-pron
|m=dǎo
|m-x=dào
|dg=до3
|c=dou2
|c-dg=dou2
|c-t=au2
|g=dau3
|h=pfs=tó;hrs=h:doˊ;gd=do3
|j=dau2
|mb=dǒ̤/dǎu
|md=dō̤
|mn=xm,zz,tn,kh,km,tc:tó/qz,jj,tp,hc,yl,mg,lk,sx:tó͘
|mn-t=dao2
|mn-l=dao2
|px=pt,xy:dor3
|sp=daau2
|w=sh,sz:5tau;jd,sj,cm,ks,cz,jx,hz,sx,nb,zs:3tau
|x=dau3
|mc=y
|oc=y
|ma=y
|cat=n,pn
}}
===နာမ်ႏ===
{{zh-noun}}
# [[ကြွန်]]။
** ထီပင်ႏလယ်ႏ သမုဒ္ဒရာႏကို ကအဝ်ႏဒါႏ ဟံႏအစုအဗူႏ။
==ဂျပန်==
===အငဝ်းထန်ႏ===
{{ja-pron|しま|acc=2|acc_ref=NHK}}
===နာမ်ႏ===
{{ja-noun}}
# [[ကြွန်]]။
** ထီပင်ႏလယ်ႏ သမုဒ္ဒရာႏကို ကအဝ်ႏဒါႏ ဟံႏအစုအဗူႏ။
===အာႏကွိုꩻ===
<references/>
kuxuqav6kzbhotjhitijv5nvpbdkt9c
妻
0
4927
12809
11062
2025-06-29T16:00:14Z
咽頭べさ
11
12809
wikitext
text/x-wiki
{{character info}}
==ခယ်ႏ==
====အငဝ်းထန်ႏ====
{{zh-pron
|m=qī
|m-s=
|c=cai1
|c-t=
|g=
|h=pfs=chhî
|j=
|mb=chí
|md=chă̤
|mn=chhe/qz,xm,zz:chhoe
|mn_note=chhe - literary; chhoe - vernacular
|mn-t=ci1
|px=pt,xy:ce1
|w=sh:1chi
|x=
|mc=1
|oc=1,1
|cat=n
}}
====Definitions====
{{head|zh|hanzi}}
# [[မာ]]၊ [[မာမူႏ]]
# [[လမ်းသား]]မာမူႏ။
==ဂျပန်==
===အရွီးခိုႏ ၁===
{{ja-kanjitab|yomi=k|つま}}
====အငဝ်းထန်ႏ====
* {{ja-pron|つま|acc=1|acc_ref=DJR}}
* ဟိရဂန - [[つま]]
* ရိုမစိ - tsuma
* ပအိုဝ်ႏ - သွတ်မ
===နာမ်ႏ===
{{ja-noun|つま}}
# [[မာ]]၊ [[မာမူႏ]]
# [[လမ်းသား]]
bxery9onk6goo7ohr609k0ytw22owr6
松
0
4928
12830
11065
2025-06-29T17:13:18Z
咽頭べさ
11
12830
wikitext
text/x-wiki
{{also|鬆}}
{{character info}}
==ခယ်ႏ==
{{zh-forms|alt=枩,柗,梥-ancient,枀}}
===အငေါဝ်းထန်ႏ===
{{zh-pron
|m=sōng
|m-s=song1
|c=cung4
|h=pfs=chhiùng;gd=qiung2
|mb=cě̤ng
|md=sṳ̀ng
|mn=xm,qz:chêng/chhêng/siông
|mn_note=chêng/chhêng - vernacular (chêng is more common in Xiamen and Quanzhou); siông - literary
|mn-t=sêng5/song5
|mn-t_note=sêng5 - vernacular; song5 - literary
|w=sh,sz,hz:1son
|x=zong2
|mc=y
|oc=y
|cat=n,pn
}}
===နာမ်ႏ===
{{head|zh|hanzi}}
# [[ငို]], သေင်ႏငိုမွူး။
# ခယ်ႏလိုꩻမျိုꩻသီး ကသုင်ꩻဒါႏ [[ခွိုꩻမိဉ်ꩻ]]အကို အမုဲင်(၂၁၆)ကို ကအဝ်ႏဒါႏ ခွိုꩻမိဉ်ꩻတဗာႏ။
==ဂျပန်==
{{ja-kanji forms-IVS
|vs1=01
|vs2=03
|col-vs1=aj
|col-vs2=hdmj
|pic-shin=U677e-j.svg
|pic-kyu=U677e-kyu.svg
|ref={{R:Jitsu}}
|ref2={{R:ja:KDJ|1112|607}}
|ref3={{R:ja:SKJ|669|347}}
}}
===အရွီးခိုႏ===
* {{ja-kanjitab|まつ|yomi=k}}
===အငဝ်းထန်ႏ===
{{ja-pron|まつ|acc=1|acc_ref=<ref name="KDJ2O"/>,DJR,NHK,SMK7}}
* ဟိရဂန - [[まつ]]
* ရိုမစိ - matsu
* ပအိုဝ်ႏ - မသွတ်
===နာမ်ႏ===
{{ja-noun|まつ|hhira=まつ}}
# [[ငို]]၊ သေင်ႏငိုမွူး
rhqwi1ztn1xqko9zb9ji13ktfcsv4df
免許
0
4966
12818
11162
2025-06-29T16:40:39Z
咽頭べさ
11
12818
wikitext
text/x-wiki
==ခယ်ႏ==
{{zh-forms|s=免许}}
===အငဝ်းထန်ႏ===
{{zh-pron
|m=miǎnxǔ
|mn=bián-hú/zz:bián-hí
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
* [[လုဲင်သိဉ်]]
* ပါမစ်။
====ဘာႏသာႏလင်====
* မန်း : [[လိုင်စင်]]၊ [[ပါမစ်]]
* အိန်းကလေတ် : [[license]]; [[permit]]
====ဆွိုက်စပ်အသုင်ꩻ====
* {{zh-l|執照}}
==ဂျပန်==
{{ja-kanjitab|めん|きょ|yomi=on}}
{{wikipedia|menkyo}}
===အငဝ်းထန်ႏ===
* ဟိရဂန - [[めんきょ]]
* ရိုမစိ - menkyo
* ပအိုဝ်ႏ - မဲဉ်းကျေား
===နာမ်ႏ===
{{ja-noun|めんきょ}}
* [[လုဲင်သိဉ်]]
====ဘာႏသာႏလင်====
* မန်း : [[လိုင်စင်]]
* အိန်းကလေတ် : [[license]].
===အခရာႏပီ လိတ်ဖြုံႏကွာႏ===
* [[免許証]]
03eemhcto6bvzgm77ccx8fvevefe4fg
12819
12818
2025-06-29T16:41:30Z
咽頭べさ
11
12819
wikitext
text/x-wiki
{{also|免许}}
==ခယ်ႏ==
{{zh-forms|s=免许}}
===အငဝ်းထန်ႏ===
{{zh-pron
|m=miǎnxǔ
|mn=bián-hú/zz:bián-hí
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
* [[လုဲင်သိဉ်]]
* ပါမစ်။
====ဘာႏသာႏလင်====
* မန်း : [[လိုင်စင်]]၊ [[ပါမစ်]]
* အိန်းကလေတ် : [[license]]; [[permit]]
====ဆွိုက်စပ်အသုင်ꩻ====
* {{zh-l|執照}}
==ဂျပန်==
{{ja-kanjitab|めん|きょ|yomi=on}}
{{wikipedia|menkyo}}
===အငဝ်းထန်ႏ===
* ဟိရဂန - [[めんきょ]]
* ရိုမစိ - menkyo
* ပအိုဝ်ႏ - မဲဉ်းကျေား
===နာမ်ႏ===
{{ja-noun|めんきょ}}
* [[လုဲင်သိဉ်]]
====ဘာႏသာႏလင်====
* မန်း : [[လိုင်စင်]]
* အိန်းကလေတ် : [[license]].
===အခရာႏပီ လိတ်ဖြုံႏကွာႏ===
* [[免許証]]
q8l4mp3qgsejz3kho55swo842jqouby
赤字
0
4976
12821
11189
2025-06-29T16:44:32Z
咽頭べさ
11
12821
wikitext
text/x-wiki
==ခယ်ႏ==
{{zh-forms|lit=red character}}
{{zh-wp}}
===အငဝ်းထန်ႏ===
{{zh-pron
|m=chìzì
|c=cek3 zi6,cik3 zi6
|ca=LL-Q9186 (yue)-Luilui6666-赤字.wav
|mn=qz,tp,xm:chhiah-lī/kh,zz:chhiah-jī
|mn-t=ciah4 ri7
|ma=y
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
# [[အသွုမ်ꩻ]], [[အယွမ်ꩻ]] (စီꩻပွာꩻရေꩻ၊ အစိုႏရ အသုင်ꩻ)
==ဂျပန်==
{{ja-kanjitab|あか|じ|yomi=y}}
===အငဝ်းထန်ႏ===
{{ja-pron|あかじ|acc=0|acc_ref=DJR}}
* ဟိရဂန- [[あかじ]]
* ရိုမစိ - [[akaji]]
* ပအိုဝ်ႏ - အကစိ
===နာမ်ႏ===
{{ja-noun|あかじ}}
* [[အသွုမ်ꩻ]], [[အယွမ်ꩻ]]
* လိတ်ဖြုံႏတနျာႏ။
* ဖျင်အမာႏ
====အခရာႏတဗန်ႏ====
* [[黒字]] ([[くろじ]])
p5swmgaefccz15z01d39jdi1ph5vspx
မော်ဂျူး:zh-pron
828
4977
12801
12769
2025-06-29T15:40:47Z
咽頭べさ
11
12801
Scribunto
text/plain
local m_str_utils = require("Module:string utilities")
local codepoint = m_str_utils.codepoint
local concat = table.concat
local explode_chars = require("Module:Hani").explode_chars
local find = m_str_utils.find
local format = string.format
local gmatch = m_str_utils.gmatch
local gsub = m_str_utils.gsub
local insert = table.insert
local ipairs = ipairs
local match = m_str_utils.match
local pairs = pairs
local split = m_str_utils.split
local gsplit = m_str_utils.gsplit
local export = {}
local hanzi = require("Module:scripts").getByCode("Hani"):getCharacters()
local bopomofo = require("Module:scripts").getByCode("Bopo"):getCharacters()
local langname = {
["cdo"] = "မိဉ်ဒုံခဝ်ကွဉ်ႏ",
["cjy"] = "စိဉ်",
["cpx"] = "ပုဆီအန်းမိဉ်",
["cmn"] = "မန်ဒရိဉ်း",
["csp"] = "ဖိဉ်းဂွါခဝ်နဝ်",
["dng"] = "ဒုန်ဂန်",
["gan"] = "ဂန်",
["hak"] = "ဟက်ကာ",
["hsn"] = "သျင်",
["hsn-lou"] = "သျင်",
["hsn-hya"] = "သျင်",
["luh"] = "လဲစိုးမိဉ်",
["mnp"] = "မိဉ်ခဝ်ကွဉ်ႏ",
["nan-hbl"] = "ဟောက်ခိအဲဉ်း",
["nan-tws"] = "တဝ်းဆွေး",
["wuu"] = "ဝူ",
["wuu-jih"] = "ဝူ",
["yue"] = "ကန်တုံ",
["zhx-sic"] = "သီဆွင်",
["zhx-tai"] = "တုဲင်းသျန်",
}
local langname_abbr = {
["m"] = "မန်ဒရိဉ်း",
["m-s"] = "သီဆွင်",
["m-x"] = "မန်ဒရိဉ်း",
["m-nj"] = "မန်ဒရိဉ်း",
["dg"] = "Dungan",
["c"] = "ကန်တုံ",
["c-dg"] = "ကန်တုံ",
["c-t"] = "တုဲင်းသျန်",
["c-yj"] = "ကန်တုံ",
["g"] = "ဂန်",
["h"] = "ဟက်ကာ",
["j"] = "စိဉ်",
["mb"] = "မိဉ်ခဝ်ကွဉ်ႏ",
["mc"] = "ခယ်ႏစိုးထာႏဝ",
["md"] = "မိဉ်ဒုံခဝ်ကွဉ်ႏ",
["mn"] = "ဟောက်ခိအဲဉ်း",
["mn-t"] = "တဝ်းဆွေး",
["mn-l"] = "လဲစိုးမိဉ်",
["oc"] = "ခယ်ႏကရီးခါ",
["px"] = "ပုဆီအန်းမိဉ်",
["sp"] = "ဖိဉ်းဂွါခဝ်နဝ်",
["w"] = "ဝူ",
["w-j"] = "ဝူ",
["x"] = "သျင်",
["x-l"] = "Loudi Xiang",
["x-h"] = "Hengyang Xiang",
}
local pos_aliases_cat = {
["n"]="နာမ်ႏ", ["noun"]="နာမ်ႏ", ["nouns"]="နာမ်ႏ",
["pn"]="နာမ်ႏဆဲင်ႏတဖြာꩻ", ["propn"]="နာမ်ႏဆဲင်ႏတဖြာꩻ", ["proper"]="နာမ်ႏဆဲင်ႏတဖြာꩻ", ["proper noun"]="နာမ်ႏဆဲင်ႏတဖြာꩻ", ["proper nouns"]="နာမ်ႏဆဲင်ႏတဖြာꩻ",
["pron"]="နာမ်ႏတင်", ["pronoun"]="နာမ်ႏတင်", ["pronouns"]="နာမ်ႏတင်",
["v"]="ကြိယာႏ", ["verb"]="ကြိယာႏ", ["verbs"]="ကြိယာႏ",
["a"]="နာမဝိသေသန", ["adj"]="နာမဝိသေသန", ["adjective"]="နာမဝိသေသန", ["adjectives"]="နာမဝိသေသန",
["adv"]="ကြိယာႏဝိသေသန", ["adverb"]="ကြိယာႏဝိသေသန", ["adverbs"]="ကြိယာႏဝိသေသန",
["prep"]="ဝိဘတ်", ["pre"]="ဝိဘတ်", ["preposition"]="ဝိဘတ်", ["prepositions"]="ဝိဘတ်",
["postp"] = "postpositions", ["post"] = "postpositions",
["con"] = "conjunctions", ["conj"] = "conjunctions", ["conjunction"] = "conjunctions",
["part"] = "particles", ["particle"] = "particles",
["pref"] = "prefixes", ["prefix"] = "prefixes",
["suf"] = "suffixes", ["suffix"] = "suffixes",
["infix"] = "infixes",
["prov"] = "proverbs", ["proverb"] = "proverbs",
["id"] = "idioms", ["idiom"] = "idioms",
["ch"] = "chengyu", ["cy"] = "chengyu", ["4ci"] = "chengyu",
["ph"]="ငဝ်းစုဗူႏ", ["phrase"]="ငဝ်းစုဗူႏ", ["phrases"]="ငဝ်းစုဗူႏ",
["intj"]="အာမေဍိတ်", ["interj"]="အာမေဍိတ်", ["interjection"]="အာမေဍိတ်", ["interjections"]="အာမေဍိတ်",
["cl"] = "classifiers", ["cls"] = "classifiers", ["classifier"] = "classifiers",
["num"]="ဂဏန်ꩻ", ["numeral"]="ဂဏန်ꩻ", ["numerals"]="ဂဏန်ꩻ",
["abb"] = "abbreviations", ["abbreviation"] = "abbreviations",
["det"] = "determiners", ["deter"] = "determiners", ["determiner"] = "determiners",
["syl"] = "syllables", ["syll"] = "syllables", ["syllable"] = "syllables",
}
local function make_note(text)
if find(text, ": ") then
text = "\n*" .. gsub(gsub(text, "\n", ".\n*"), "([:;]) ", "%1\n**")
elseif find(text, "; ") then
text = "\n*" .. gsub(text, "; ", ";\n*")
end
text = gsub(text, "“([^”]+)”", function (a) return "“" .. gsub(a, ";\n%*+", "; ") .. "”" end)
-- fix bug about indentation levels (see https://en.wiktionary.org/w/index.php?oldid=78848651)
local last_level = ("\n"..text):match("\n(%**)[^*\n][^\n]*$")
local append = last_level:gsub("%*","<ul>")
return "\n<div style=\"border: 1px solid var(--wikt-palette-forestgreen, #235923); padding: 4px; margin: 8px; background: var(--wikt-palette-lightyellow, #ffffe0); font-size: 85%\">'''Note''': " .. text .. ".</div>" .. append
end
local function ipa_format(text)
local numbers = { ["1"]="¹",["2"]="²",["3"]="³",["4"]="⁴",["5"]="⁵",["0"]="⁰",["-"]="⁻",["/"]="/, /" }
return gsub(text,"[0-5%-/]",numbers)
end
local function Consolas(text)
return '<span class="zhpron-monospace">' .. text .. "</span>"
end
local function format_IPA(text)
return '<span class="IPA">' .. text .. "</span>"
end
function export.make(frame)
local parent_args = frame:getParent().args
local params = {
pagename = {},
namespace = {},
dial = {},
mc = {},
oc = {},
cat = {},
only_cat = {type = "boolean"},
poj_form_zh_see = {type = "boolean"},
}
for abbr, _ in pairs(langname_abbr) do
params[abbr] = {}
params[abbr .. "a"] = {list = true}
params[abbr .. "_note"] = {}
end
local args = require("Module:parameters").process(parent_args, params, nil, "zh-pron", "make")
local title = mw.title.getCurrentTitle()
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local sortkey = (require("Module:Hani-sortkey").makeSortKey(pagename))
local is_single_hanzi = find(pagename, "^[" .. hanzi .. "]$") ~= nil
local namespace = args.namespace or title.nsText
local m_rom = args["m"]
local m_s_rom = args["m-s"]
local m_x_rom = args["m-x"]
local m_nj_rom = args["m-nj"]
local dg_rom = args["dg"]
local c_rom = args["c"]
local c_dg_rom = args["c-dg"]
local c_t_rom = args["c-t"]
local c_yj_rom = args["c-yj"]
local g_rom = args["g"]
local h_rom = args["h"]
local j_rom = args["j"]
local mb_rom = args["mb"]
local md_rom = args["md"]
local mn_rom = args["mn"]
local mn_l_rom = args["mn-l"]
local mn_t_rom = args["mn-t"]
local px_rom = args["px"]
local sp_rom = args["sp"]
local w_rom = args["w"]
local w_j_rom = args["w-j"]
local x_rom = args["x"]
local x_l_rom = args["x-l"]
local x_h_rom = args["x-h"]
local m_audio = args["ma"]
local m_s_audio = args["m-sa"]
local m_x_audio = args["m-xa"]
local m_nj_audio = args["m-nja"]
local dg_audio = args["dga"]
local c_audio = args["ca"]
local c_dg_audio = args["c-dga"]
local c_t_audio = args["c-ta"]
local c_yj_audio = args["c-yja"]
local g_audio = args["ga"]
local h_audio = args["ha"]
local j_audio = args["ja"]
local mb_audio = args["mba"]
local md_audio = args["mda"]
local mn_audio = args["mna"]
local mn_l_audio = args["mn-la"]
local mn_t_audio = args["mn-ta"]
local px_audio = args["pxa"]
local sp_audio = args["spa"]
local w_audio = args["wa"]
local w_j_audio = args["w-ja"]
local x_audio = args["xa"]
local x_l_audio = args["x-la"]
local x_h_audio = args["x-ha"]
local dial = args["dial"]
local mc = args["mc"]
local oc = args["oc"]
local only_cat = args["only_cat"]
-- True if arguments exist for the specified variety, using a language param abbreviation.
local function has_var(var)
return args[var] or #args[var .. "a"] > 0
end
local function add_audio(text, audios, lang, show)
-- This function has side effects
for _, audio in ipairs(audios) do
if audio == "y" then audio = format("%s-%s.ogg", lang, title.baseText) end
insert(text, "\n*" .. (show and "::" or "**") .. " [[File:")
insert(text, audio)
insert(text, "]]")
end
if #audios > 0 then
insert(text, "[[ကဏ္ဍ:အငေါဝ်းထန်ႏလိဉ့်တွမ်ႏ")
insert(text, langname[lang])
insert(text, "ငေါဝ်းငွါဖုံႏ|" .. sortkey .. "]]")
end
end
local function add_audio_show(text, audios, lang)
add_audio(text, audios, lang, "show")
end
local text = {} --the pronunciation table
if not only_cat then
--The whole table consists of 4 parts
--"textShow" contains Part 1, 3 and 4
local textShow = {'<div class="standard-box zhpron" style="overflow:auto; max-width:500px; font-size:100%">'}
--"textHide" is Part 2
local textHide = {}
local function show(txt)
insert(textShow, txt)
end
local function hide(txt)
insert(textHide, txt)
end
local function hide_note(var)
local note = args[var .. "_note"]
if note then hide(make_note(note)) end
end
show('<div class="vsSwitcher" data-toggle-category="pronunciations">')
--Part 1 and 2, "Pronunciation" and "Pronunciation expressed in different romanizations"
if m_rom or m_s_rom or m_x_rom or m_nj_rom or dg_rom then
show("\n* [[w:en:Mandarin Chinese|မန်ဒရိဉ်း]]")
end
if has_var("m") then
local m_args = {}
local m_pron = require("Module:cmn-pron")
if m_rom then
local str_analysis = m_pron.str_analysis
local other_m_vars = has_var("m-s") or has_var("m-x") or has_var("m-nj") or has_var("dg")
show("\n" .. str_analysis(m_rom, "head", other_m_vars))
m_args[1] = str_analysis(m_rom, "")
for i = 2, 5 do
m_args[i] = str_analysis(m_rom, tostring(i))
end
local m_args_params_prefixed_with_1 = {"n", "na", "nb", "nc", "nd"}
for _, base in ipairs(m_args_params_prefixed_with_1) do
for i = 1, 5 do
local param = tostring(i) .. base
m_args[param] = str_analysis(m_rom, param)
end
end
local m_args_params = {"py", "cap", "tl", "tl2", "tl3", "a", "audio", "er", "ertl", "ertl2", "ertl3",
"era", "eraudio"}
for _, base in ipairs(m_args_params) do
m_args[base] = str_analysis(m_rom, base)
for i = 2, 5 do
local param = tostring(i) .. base
m_args[param] = str_analysis(m_rom, param)
end
end
end
for i, audio in ipairs(m_audio) do
local ind = i == 1 and "" or tostring(i)
m_args[ind .. "a"] = audio
end
show(m_pron.make_audio(m_args))
hide(m_pron.make_args(m_args))
hide_note("m")
end
if (not m_rom) and (m_s_rom or m_x_rom or m_nj_rom or dg_rom) then
hide("\n* [[w:en:Mandarin Chinese|မန်ဒရိဉ်း]]")
end
if has_var("m-s") then
local m_s_pron = require("Module:zhx-sic-pron")
local m_s_processed = gsub(m_s_rom:gsub("/", " / "), "([%d-])([%a])", "%1 %2")
:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>")
if m_s_rom then
show("\n*: <small>(<i>[[w:Sichuanese dialect|Chengdu]], [[w:Sichuanese Pinyin|Sichuanese Pinyin]]</i>)</small>: ")
show(Consolas(m_s_processed))
end
add_audio_show(textShow, m_s_audio, "zhx-sic")
hide("\n** <small>(<i>[[w:Chengdu|Chengdu]]</i>)</small>")
hide("\n*** <small><i>[[w:Sichuanese Pinyin|Sichuanese Pinyin]]</i></small>: ")
hide(Consolas(m_s_processed))
local xinwenz = m_s_pron.convert(m_s_rom, "SWZ")
if xinwenz then
hide("\n*** <small><i>[[w:zh:四川话拉丁化新文字|Scuanxua Ladinxua Xin Wenz]]</i></small>: ")
hide(Consolas(m_s_pron.convert(m_s_rom, "SWZ")))
end
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:zh:成都话|key]])</sup></small>: ")
hide(format_IPA(m_s_pron.convert(m_s_rom, "IPA")))
hide_note("m-s")
end
if has_var("m-x") then
local m_x_pron = require("Module:cmn-pron-Xian")
local m_x_display, m_x_hidden, m_x_ipa = m_x_pron.py_process(m_x_rom)
show("\n*: <small>(<i>[[w:Guanzhong dialect|Xi'an]], [[Wiktionary:About Chinese/Xi'an|Guanzhong Pinyin]]</i>)</small>: ")
show(Consolas(m_x_display))
add_audio_show(textShow, m_x_audio, "cmn")
hide("\n** <small>(<i>[[w:Xi'an|Xi'an]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Xi'an|Guanzhong Pinyin]]</i></small>: ")
hide(Consolas(m_x_hidden))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Guanzhong dialect|key]])</sup></small>: ")
hide(format_IPA(m_x_ipa))
hide_note("m-x")
end
if has_var("m-nj") then
local m_nj_pron = require("Module:cmn-pron-Nanjing")
local m_nj_display, m_nj_hidden, m_nj_num, m_nj_ipa = m_nj_pron.py_process(m_nj_rom)
show("\n*: <small>(<i>[[w:Nanjing dialect|Nanjing]], [[Wiktionary:About Chinese/Nanjing|Nanjing Pinyin]]</i>)</small>: ")
show(Consolas(m_nj_display))
add_audio_show(textShow, m_nj_audio, "cmn")
hide("\n** <small>(<i>[[w:Nanjing|Nanjing]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Nanjing|Nanjing Pinyin]]</i></small>: ")
hide(Consolas(m_nj_hidden))
hide("\n*** <small><i>[[Wiktionary:About Chinese/Nanjing|Nanjing Pinyin]] (numbered)</i></small>: ")
hide(Consolas(m_nj_num))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Nanjing dialect|key]])</sup></small>: ")
hide(format_IPA(m_nj_ipa))
hide_note("m-nj")
end
if has_var("dg") then
local dg_pron = require("Module:dng-pron")
local dg_processed = dg_pron.process(dg_rom)
if dg_rom then
show("\n*: <small>(<i>[[w:en:Dungan language|ဒုန်ဂန်]], [[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|ဝိစ်သိဉ်နရီ]]</i>)</small>: ")
show(Consolas(dg_processed))
end
add_audio_show(textShow, dg_audio, "dng")
hide("\n** <small>(<i>[[w:en:Dungan language|ဒုန်ဂန်]]</i>)</small>")
hide("\n*** <small><i>[[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|ဝိစ်သိဉ်နရီ]]</i></small>: ")
hide(Consolas(dg_processed))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Dungan phonology|key]])</sup></small>: ")
hide(format_IPA(dg_pron.convert(dg_rom, "IPA")) .. "\n**: <small>(Note: Dungan pronunciation is currently experimental and may be inaccurate.)</small>")
hide_note("dg")
end
if has_var("c") or has_var("c-dg") or has_var("c-t") or has_var("c-yj") then
if c_rom or c_dg_rom or c_t_rom or c_yj_rom then
local c_count = (c_rom and 1 or 0) + (c_dg_rom and 1 or 0)
+ (c_t_rom and 1 or 0) + (c_yj_rom and 1 or 0)
local c_sep = (c_count == 1) and " " or "\n*: "
show("\n* [[w:en:Cantonese|ကန်တုံ]]")
hide("\n* [[w:en:Cantonese|ကန်တုံ]]")
if c_rom then
local c_pron = require("Module:yue-pron")
show(c_sep)
show("<small>(<i>")
if c_count > 1 then
show("[[w:Guangzhou Cantonese|Guangzhou]]–[[w:Hong Kong Cantonese|Hong Kong]], ")
end
show("[[w:Jyutping|Jyutping]]</i>)</small>: ")
show(Consolas(c_pron.show_standard(c_rom, is_single_hanzi)))
add_audio_show(textShow, c_audio, "yue")
hide(c_pron.hide_standard(c_rom, is_single_hanzi))
if not args["c_note"] and is_single_hanzi and (c_rom:find("^[ao]") or c_rom:find(",[ao]")) then
args["c_note"] = "The zero initial " .. format_IPA("/∅-/") .. " is commonly pronounced with a ''ng''-initial " .. format_IPA("/ŋ-/") .. " in some varieties of Cantonese, including Hong Kong Cantonese"
end
hide_note("c")
end
if c_dg_rom then
local c_dg_pron = require("Module:yue-pron/Dongguan")
local c_dg_display = c_dg_rom:gsub(","," / ")
:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>")
show(c_sep .. "<small>(<i>[[w:zh:東莞話|Dongguan]], [[Wiktionary:About Chinese/Cantonese/Dongguan|Jyutping++]]</i>)</small>: ")
show(Consolas(c_dg_display))
add_audio_show(textShow, c_dg_audio, "yue")
hide("\n** <small>(<i>[[w:zh:東莞話|Dongguan]], [[w:Guancheng Subdistrict|Guancheng]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Cantonese/Dongguan|Jyutping++]]</i></small>: ")
hide(Consolas(c_dg_display))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:zh:東莞話|key]])</sup></small>: ")
hide(format_IPA(c_dg_pron.jpp_to_ipa(c_dg_rom)))
hide_note("c-dg")
end
if c_t_rom then
local c_t_pron = require("Module:yue-pron/Taishanese")
local c_t_display = c_t_rom:gsub(","," / ")
:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>")
show(c_sep .. "<small>(<i>[[w:en:Taishanese|တုဲင်းသျန်]]၊ [[Wiktionary:About Chinese/Cantonese/Taishanese|ဝိစ်သိဉ်နရီ]]</i>)</small>: ")
show(Consolas(c_t_display))
add_audio_show(textShow, c_t_audio, "zhx-tai")
hide("\n** <small>(<i>[[w:en:Taishanese|တုဲင်းသျန်]], [[w:Taicheng Subdistrict|Taicheng]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Cantonese/Taishanese|ဝိစ်သိဉ်နရီ]]</i></small>: ")
hide(Consolas(c_t_display))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Taishanese|key]])</sup></small>: ")
hide(format_IPA(c_t_pron.hoisanva_to_ipa(c_t_rom)))
hide_note("c-t")
end
if c_yj_rom then
local c_yj_pron = require("Module:yue-pron/Yangjiang")
local c_yj_display = c_yj_rom:gsub(","," / ")
:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>")
show(c_sep .. "<small>(<i>[[w:zh:陽江話|Yangjiang]], [[Wiktionary:About Chinese/Cantonese/Yangjiang|Jyutping++]]</i>)</small>: ")
show(Consolas(c_yj_display))
add_audio_show(textShow, c_yj_audio, "yue")
hide("\n** <small>(<i>[[w:zh:陽江話|Yangjiang Yue]], [[w:Jiangcheng, Yangjiang|Jiangcheng]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Cantonese/Yangjiang|Jyutping++]]</i></small>: ")
hide(Consolas(c_yj_display))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Gao–Yang Yue|key]])</sup></small>: ")
hide(format_IPA(c_yj_pron.jpp_to_ipa(c_yj_rom)))
hide_note("c-yj")
end
end
end
if has_var("g") then
local g_pron = require("Module:gan-pron")
if g_rom then
show("\n* [[w:en:Gan Chinese|ဂန်]] <small>(<i>[[Wiktionary:About Chinese/Gan|ဝိစ်သိဉ်နရီ]]</i>)</small>: ")
show(Consolas(g_pron.rom(g_rom)))
end
add_audio_show(textShow, g_audio, "gan")
hide("\n* [[w:Gan Chinese|ဂန်]]")
hide("\n** <small>(<i>[[w:Nanchang dialect|Nanchang]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Gan|ဝိစ်သိဉ်နရီ]]</i></small>: ")
hide(Consolas(g_pron.rom(g_rom)))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Nanchang dialect|key]])</sup></small>: ")
hide(format_IPA("/" .. g_pron.ipa(g_rom) .. "/"))
hide_note("g")
end
if h_rom and (find(h_rom, "pfs=.") or find(h_rom, "gd=.") or find(h_rom, "hrs=.") or find(h_rom, "ct=.")) or #h_audio > 0 then
local h_pron = require("Module:hak-pron")
if find(h_rom, "pfs=.") or find(h_rom, "gd=.") or find(h_rom, "hrs=.") or find(h_rom, "ct=.") then
show("\n* [[w:Hakka Chinese|Hakka]]")
show(h_pron.rom_display(h_rom,"yes"))
end
add_audio_show(textShow, h_audio, "hak")
hide("\n* [[Wiktionary:About Chinese/Hakka|ဟက်ကာ]]")
if h_rom then hide(h_pron.rom_display(h_rom,"")) end
hide_note("h")
end
if has_var("j") then
local j_pron = require("Module:cjy-pron")
if j_rom then
show("\n* [[w:en:Jin Chinese|စိဉ်]] <small>(<i>[[Wiktionary:About Chinese/Jin|ဝိစ်သိဉ်နရီ]]</i>)</small>: ")
show(Consolas(j_pron.rom(j_rom)))
end
add_audio_show(textShow, j_audio, "cjy")
hide("\n* [[w:en:Jin Chinese|စိဉ်]]")
hide("\n** <small>(<i>[[w:Taiyuan|Taiyuan]]</i>)<sup>[[:w:zh:太原話|+]]</sup></small>")
if j_rom then
hide("\n*** <small><i>[[Wiktionary:About Chinese/Jin|ဝိစ်သိဉ်နရီ]]</i></small>: ")
hide(Consolas(j_pron.rom(j_rom)))
end
local no_sandhi = false
local roms = split(j_rom, "/")
for i = 1, #roms do
if find(roms[i], " [^ ]+ ") then
no_sandhi = true
break
end
end
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] (<i>old-style" .. (no_sandhi and ", no sandhi" or "") .. "</i>)</small>: ")
hide(format_IPA("/" .. j_pron.ipa(j_rom, no_sandhi and "no_sandhi" or "") .. "/"))
hide_note("j")
end
if has_var("mb") then
local mb_pron = require("Module:mnp-pron")
if mb_rom then
show("\n* [[w:en:Northern Min|မိဉ်ခဝ်ကွဉ်ႏ]] <small>(<i>[[w:Kienning Colloquial Romanized|KCR]]</i>)</small>: ")
show(Consolas(mb_pron.rom(mb_rom)))
end
add_audio_show(textShow, mb_audio, "mnp")
hide("\n* [[w:en:Northern Min|မိဉ်ခဝ်ကွဉ်ႏ]]")
hide("\n** <small>(<i>[[w:Jian'ou dialect|Jian'ou]]</i>)</small>")
if mb_rom then
hide("\n*** <small><i>[[w:Kienning Colloquial Romanized|Kienning Colloquial Romanized]]</i></small>: ")
hide(Consolas(mb_pron.rom(mb_rom)))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Jian'ou dialect|key]])</sup></small>: ")
hide(format_IPA(mb_pron.ipa(mb_rom)))
end
hide_note("mb")
end
if has_var("md") then
local md_pron = require("Module:cdo-pron")
if md_rom then
show("\n* [[w:en:Eastern Min|မိဉ်ဒုံခဝ်ကွဉ်ႏ]] <small>(<i>[[Wiktionary:About Chinese/Eastern Min|BUC]]</i>)</small>: ")
show(Consolas(md_pron.rom(md_rom)))
end
add_audio_show(textShow, md_audio, "cdo")
hide("\n* [[w:en:Eastern Min|မိဉ်ဒုံခဝ်ကွဉ်ႏ]]")
hide("\n** <small>(<i>[[w:Fuzhou dialect|Fuzhou]]</i>)</small>")
if md_rom then
hide("\n*** <small><i>[[Wiktionary:About Chinese/Eastern Min|Bàng-uâ-cê]]</i></small>: ")
hide(Consolas(md_pron.rom(md_rom)))
if not (md_rom and find(md_rom, "([^/]*)-([^/]*)-([^/]*)-([^/]*)-([^/]*)")) then
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Fuzhou dialect|key]])</sup></small>: ")
hide(format_IPA("/" .. md_pron.ipa(md_rom) .. "/"))
else
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Fuzhou dialect|key]])</sup> (<i>no sandhi</i>)</small>: ")
hide(format_IPA("/" .. md_pron.ipa(md_rom, "no_sandhi") .. "/"))
end
end
hide_note("md")
end
if has_var("px") then
local px_pron = require("Module:cpx-pron")
show("\n* [[w:en:Puxian Min|ပုဆီအန်းမိဉ်]]")
show(px_pron.rom_display(px_rom,"brief"))
add_audio_show(textShow, px_audio, "cpx")
hide("\n* [[Wiktionary:About Chinese/Puxian Min|ပုဆီအန်းမိဉ်]]")
if px_rom then hide(px_pron.rom_display(px_rom,"complete")) end
hide_note("px")
end
if has_var("mn") or has_var("mn-l") or has_var("mn-t") then
local mn_pron, mn_l_pron
if has_var("mn") or has_var("mn-t") then
mn_pron = require("Module:nan-pron")
end
if has_var("mn-l") then
mn_l_pron = require("Module:luh-pron")
end
if mn_rom or mn_t_rom or mn_l_rom then
show("\n* [[w:en:Southern Min|မိဉ်ခဝ်ကွဉ်ႏ]]")
if mn_rom then
show(((mn_l_rom or mn_t_rom) and "\n*:" or "") .. " <small>(<i>[[w:en:Hokkien|ဟောက်ခိအဲဉ်း]], [[w:Pe̍h-ōe-jī|POJ]]</i>)</small>: ")
show(Consolas(mn_pron.poj_display(mn_pron.poj_check_invalid(mn_rom))))
add_audio_show(textShow, mn_audio, "nan-hbl")
end
if mn_t_rom then
show(((mn_rom or mn_l_rom) and "\n*:" or "") .. " <small>(<i>[[w:en:Teochew dialect|တဝ်းဆွေး]], [[w:Peng'im|Peng'im]]</i>)</small>: ")
show(Consolas(mn_pron.pengim_display(mn_t_rom)))
add_audio_show(textShow, mn_t_audio, "nan-tws")
end
if mn_l_rom then
show(((mn_rom or mn_t_rom) and "\n*:" or "") .. " <small>(<i>[[w:Leizhou Min|Leizhou]], Leizhou Pinyin</i>)</small>: ")
show(Consolas(mn_l_pron.rom(mn_l_rom)))
add_audio_show(textShow, mn_l_audio, "luh")
end
end
hide("\n* [[w:en:Southern Min|မိဉ်ခဝ်ကွဉ်ႏ]]")
if has_var("mn") then
hide(mn_pron.generate_all(mn_rom))
hide_note("mn")
end
if has_var("mn-t") then
hide("\n** <small>(<i>[[w:en:Teochew dialect|တဝ်းဆွေး]]</i>)</small>")
hide("\n*** <small><i>[[w:Peng'im|Peng'im]]</i></small>: ")
hide(Consolas(mn_pron.pengim_display(mn_t_rom)))
hide("\n*** <small><i>[[w:Pe̍h-ōe-jī|Pe̍h-ōe-jī]]-like</i></small>: ")
hide(Consolas(mn_pron.pengim_to_pojlike_conv(mn_t_rom)))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:zh:潮州話#語音|key]])</sup></small>: ")
hide(format_IPA(mn_pron.pengim_to_ipa_conv(mn_t_rom)))
hide_note("mn-t")
end
if has_var("mn-l") then
hide("\n** <small>(<i>[[w:Leizhou Min|Leizhou]]</i>)</small>")
hide("\n*** <small><i>Leizhou Pinyin</i></small>: ")
hide(Consolas(mn_l_pron.rom(mn_l_rom)))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]]</small>: ")
hide(format_IPA(mn_l_pron.ipa(mn_l_rom)))
hide_note("mn-l")
end
end
if has_var("sp") then
local sp_pron = require("Module:csp-pron")
local sp_processed = sp_rom:gsub(",([^ ])",", %1")
:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>")
show("\n* [[w:en:Pinghua|ဖိဉ်းဂွါခဝ်နဝ်]] <small>(<i>[[w:Pinghua|Nanning]], [[Wiktionary:About Chinese/Southern Pinghua|Jyutping++]]</i>)</small>: ")
show(Consolas(sp_processed))
add_audio_show(textShow, sp_audio, "csp")
hide("\n* [[w:en:Pinghua|Southern Pinghua]]")
hide("\n** <small>(<i>[[w:en:Pinghua|ဖိဉ်းဂွါခဝ်နဝ်]], [[w:Nanning|Tingzi]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Southern Pinghua|Jyutping++]]</i></small>: ")
hide(Consolas(sp_processed))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Pinghua#Phonology|key]])</sup></small>: ")
hide(format_IPA(sp_pron.jpp_to_ipa(sp_rom)))
hide_note("sp")
end
if has_var("w") or has_var("w-j") then
local w_count = (w_rom and 1 or 0) + (w_j_rom and 1 or 0)
local w_show, w_hide, w_j_show, w_j_hide
if w_rom then
w_show, w_hide = require("Module:wuu-pron").make(w_rom, w_count)
end
if w_j_rom then
w_j_show, w_j_hide = require("Module:wuu-pron/Jinhua").make(w_j_rom, w_count)
end
if w_count > 1 then
show("\n* [[w:Wu Chinese|ဝူ]] <small>(<i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>")
else
show("\n* [[w:Wu Chinese|ဝူ]]")
end
show(w_show)
show(w_j_show)
add_audio_show(textShow, w_audio, "wuu")
hide("\n* [[w:en:Wu Chinese|ဝူ]]")
hide(w_hide)
hide(w_j_hide)
-- add_audio(textHide, w_audio, "wuu")
hide_note("w")
hide_note("w-j")
end
if has_var("x") or has_var("x-l") or has_var("x-h") then
local x_pron = has_var("x") and require("Module:hsn-pron") or nil
local x_l_pron = has_var("x-l") and require("Module:hsn-pron-Loudi") or nil
local x_h_pron = has_var("x-h") and require("Module:hsn-pron-Hengyang") or nil
if x_rom or x_l_rom or x_h_rom then
show("\n* [[w:en:Xiang Chinese|သျင်]]")
if x_rom then
show(((x_l_rom or x_h_rom) and "\n*:" or "") .. " <small>(<i>[[w:Changsha dialect|Changsha]], [[Wiktionary:About Chinese/Xiang|ဝိစ်သိဉ်နရီ]]</i>)</small>: ")
show(Consolas(x_pron.rom(x_rom)))
add_audio_show(textShow, x_audio, "hsn")
end
if x_l_rom then
show(((x_rom or x_h_rom) and "\n*:" or "") .. " <small>(<i>[[w:zh:娄底话|Loudi]], [[Wiktionary:About Chinese/Xiang/Loudi|ဝိစ်သိဉ်နရီ]]</i>)</small>: ")
show(Consolas(x_l_pron.rom(x_l_rom)))
add_audio_show(textShow, x_l_audio, "hsn-lou")
end
if x_h_rom then
show(((x_rom or x_l_rom) and "\n*:" or "") .. " <small>(<i>[[w:Hengyang dialect|Hengyang]], [[Wiktionary:About Chinese/Xiang/Hengyang|ဝိစ်သိဉ်နရီ]]</i>)</small>: ")
show(Consolas(x_h_pron.rom(x_h_rom)))
add_audio_show(textShow, x_h_audio, "hsn-hya")
end
end
hide("\n* [[:w:en:Xiang Chinese|သျင်]]")
if x_rom then
local x_diff = x_pron.stylediff(x_rom)
hide("\n** <small>(<i>[[w:Changsha dialect|Changsha]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Xiang|ဝိစ်သိဉ်နရီ]]</i></small>: ")
hide(Consolas(x_pron.rom(x_rom)))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Changsha dialect|key]])</sup>")
hide(x_diff and " (<i>old-style</i>)" or "")
hide("</small>: ")
hide(format_IPA("/" .. x_pron.ipa(x_rom) .. "/"))
if x_diff then
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Changsha dialect|key]])</sup> (<i>new-style</i>)</small>: ")
hide(format_IPA("/" .. x_pron.ipa(x_rom, "new") .. "/"))
end
hide_note("x")
end
if x_l_rom then
hide("\n** <small>(<i>[[w:zh:娄底话|Loudi]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Xiang/Loudi|ဝိစ်သိဉ်နရီ]]</i></small>: ")
hide(Consolas(x_l_pron.rom(x_l_rom)))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:zh:娄底话|key]])</sup>")
hide("</small>: ")
hide(format_IPA("/" .. x_l_pron.ipa(x_l_rom) .. "/"))
hide_note("x-l")
end
if x_h_rom then
hide("\n** <small>(<i>[[w:Hengyang dialect|Hengyang]]</i>)</small>")
hide("\n*** <small><i>[[Wiktionary:About Chinese/Xiang/Hengyang|ဝိစ်သိဉ်နရီ]]</i></small>: ")
hide(Consolas(x_h_pron.rom(x_h_rom)))
hide("\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Hengyang dialect|key]])</sup>")
hide("</small>: ")
hide(format_IPA("/" .. x_h_pron.ipa(x_h_rom) .. "/"))
hide_note("x-h")
end
end
-- combine textShow and textHide into text
text = {
concat(textShow),
'<span class="vsToggleElement" style="float: right;"></span>\n<div class="vsHide" style="clear:right;">\n<hr>\n',
concat(textHide),
"</div></div>"
}
--Part 3 "Dialectal data"
if dial ~= "n" and is_single_hanzi then
local success, m_dial = pcall(mw.loadData, "Module:zh/data/dial-pron/" .. pagename)
if success then
local dialPron = {}
local temporary = {}
if dial and find(dial, "^[0-9\\,]+$") then
for element in gsplit(dial, ",") do
insert(dialPron, m_dial[tonumber(element)])
end
else
for _, element in ipairs(m_dial) do
insert(dialPron, element)
end
end
for _, set in ipairs(dialPron) do
for _, object in ipairs(set[2]) do
insert(temporary, object)
end
end
insert(text,
'\n<hr style="clear:right;">\n<div class="vsSwitcher" data-toggle-category="pronunciations" style="background-color:var(--wikt-palette-palergreen, #F8FFFA)">\n* ' ..
'Dialectal data' ..
'<span class="vsToggleElement" style="float:right; padding:0 0"></span>\n' ..
'<div class="vsHide">'
)
insert(text, '\n{| class="wikitable" ' ..
'" style="width:100%; margin:0; ' ..
'text-align:center; border-collapse: collapse; border-style: hidden; display: table;"')
local locStart = "\n|-\n!"
local readingStart = concat({'\n!style="background:var(--wikt-palette-indigo-3, #e0defa); width:9em"|',
'<div style="float: right; clear: right; font-size:60%"><span class="plainlinks">[', tostring(mw.uri.fullUrl("Module:zh/data/dial-pron/" .. pagename, {["action"]="မွဉ်းဖျင်"})), ' edit]</span></div><span lang="zh" class="Hani">'})
local locEnd = '<span class="IPA">'
local headclr = 'style="background:var(--wikt-palette-indigo-3, #e0defa)"|'
-- NOTE:
-- These colours are duplicated in [[Module:zh-dial-syn]].
-- Make sure the two lists are kept in sync.
local mandarinColor = 'style="background:var(--wikt-palette-grey-amber-1, #FCFAF5)"|'
local jinColor = 'style="background:var(--wikt-palette-grey-orange-1, #F9F0E8)"|'
local wuColor = 'style="background:var(--wikt-palette-grey-purple-1, #F5F0FC)"|'
local huiColor = 'style="background:var(--wikt-palette-grey-yellow-1, #FCFAF5)"|'
local xiangColor = 'style="background:var(--wikt-palette-grey-blue-1, #ECF2FC)"|'
local ganColor = 'style="background:var(--wikt-palette-grey-teal-1, #EAF4EF)"|'
local hakkaColor = 'style="background:var(--wikt-palette-grey-blue-1, #ECF2FC)"|'
local cantoneseColor = 'style="background:var(--wikt-palette-grey-cyan-1, #EBF3F5)"|'
local minColor = 'style="background:var(--wikt-palette-grey-green-1, #EDF4EA)"|'
local clrList = {
mandarinColor, mandarinColor, mandarinColor, mandarinColor,
mandarinColor, mandarinColor, mandarinColor, mandarinColor,
mandarinColor, mandarinColor, mandarinColor, mandarinColor,
mandarinColor, mandarinColor, mandarinColor, mandarinColor,
mandarinColor, jinColor, jinColor, jinColor,
wuColor, wuColor, wuColor, wuColor,
huiColor, huiColor, xiangColor, xiangColor,
ganColor, hakkaColor, hakkaColor, cantoneseColor,
cantoneseColor, cantoneseColor, minColor, minColor,
minColor, minColor, minColor
}
local locList = {
concat({headclr, "Variety\n!", headclr, "Location"}),
concat({"rowspan=17 ", mandarinColor, "မန်ဒရိဉ်း\n!", mandarinColor, "[[w:Beijing dialect|Beijing]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Harbin dialect|Harbin]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Tianjin dialect|Tianjin]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Jinan dialect|Jinan]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Qingdao dialect|Qingdao]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:zh:鄭州話|Zhengzhou]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Xi'an dialect|Xi'an]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Xining|Xining]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Yinchuan|Yinchuan]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:zh:蘭州話|Lanzhou]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:zh:烏魯木齊話|Ürümqi]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:zh:武漢話|Wuhan]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Chengdu dialect|Chengdu]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:zh:貴陽話|Guiyang]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Kunming dialect|Kunming]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:Nanjing dialect|Nanjing]]\n|", mandarinColor}),
concat({mandarinColor, "[[w:zh:合肥話|Hefei]]\n|", mandarinColor}),
concat({"rowspan=3 ", jinColor, "စိဉ်\n!", jinColor, "[[w:zh:太原話|Taiyuan]]\n|", jinColor}),
concat({jinColor, "[[w:Pingyao|Pingyao]]\n|", jinColor}),
concat({jinColor, "[[w:Hohhot dialect|Hohhot]]\n|", jinColor}),
concat({"rowspan=4 ", wuColor, "ဝူ\n!", wuColor, "[[w:Shanghai dialect|Shanghai]]\n|", wuColor}),
concat({wuColor, "[[w:Suzhou dialect|Suzhou]]\n|", wuColor}),
concat({wuColor, "[[w:Hangzhou dialect|Hangzhou]]\n|" , wuColor}),
concat({wuColor, "[[w:Wenzhou dialect|Wenzhou]]\n|", wuColor}),
concat({"rowspan=2 ", huiColor, "Hui\n!", huiColor, "[[w:Shexian|Shexian]]\n|", huiColor}),
concat({huiColor, "[[w:zh:屯溪話|Tunxi]]\n|", huiColor}),
concat({"rowspan=2 ", xiangColor, "သျင်\n!", xiangColor, "[[w:Changsha dialect|Changsha]]\n|", xiangColor}),
concat({xiangColor, "[[w:zh:湘潭話|Xiangtan]]\n|", xiangColor}),
concat({ganColor, "Gan\n!", ganColor, "[[w:Nanchang dialect|Nanchang]]\n|", ganColor}),
concat({"rowspan=2 ", hakkaColor, "ဟက်ကာ\n!", hakkaColor, "[[w:Meixian dialect|Meixian]]\n|", hakkaColor}),
concat({hakkaColor, "[[w:Taoyuan, Taiwan|Taoyuan]]\n|", hakkaColor}),
concat({"rowspan=3 ", cantoneseColor, "ကန်တုံ\n!", cantoneseColor, "[[w:Guangzhou dialect|Guangzhou]]\n|", cantoneseColor}),
concat({cantoneseColor, "[[w:Nanning|Nanning]]\n|", cantoneseColor}),
concat({cantoneseColor, "[[w:Hong Kong dialect|Hong Kong]]\n|", cantoneseColor}),
concat({"rowspan=5 ", minColor, "Min\n!", minColor, "[[w:en:Xiamen dialect|Xiamen]] (ဟောက်ခိအဲဉ်း)\n|", minColor}),
concat({minColor, "[[w:Fuzhou dialect|Fuzhou]] (မိဉ်ဒုံခဝ်ကွဉ်ႏ)\n|", minColor}),
concat({minColor, "[[w:Jian'ou dialect|Jian'ou]] (မိဉ်ခဝ်ကွဉ်ႏ)\n|", minColor}),
concat({minColor, "[[w:Shantou dialect|Shantou]] (တဝ်းဆွေး)\n|", minColor}),
concat({minColor, "[[w:Haikou dialect|Haikou]] (Hainanese)\n|", minColor})}
local function ipa_correct(ipa, location)
if location == 22 then return (gsub(ipa, "13", "23")) else return ipa end
end
local function fmtDial(text, location)
local fmttedPron = {}
if text == "" then return "" end
for pronunciation in gsplit(text, "|") do
local ipa = match(pronunciation, "^[^%(%)" .. hanzi .. "~,]+")
ipa = gsub(ipa, "([ptk])([0-5])", "%1̚%2")
local environ = match(pronunciation, "[%(%)" .. hanzi .. "~,]*$") or false
insert(fmttedPron, "<span class=\"IPA\"><small>/" ..
tostring(ipa_format(ipa_correct(ipa, location))) .. "/</small></span>" .. (environ
and " <span class=\"Hani\" lang=\"zh\"><small>"..environ.."</small></span>" or nil))
end
return concat(fmttedPron, "<br>")
end
for locationNo = 1, 40 do
for readingNo = 1, #dialPron do
if readingNo == 1 then
insert(text, locStart)
insert(text, locList[locationNo])
end
if locationNo == 1 then
local situation = dialPron[readingNo][1]
insert(text, readingStart)
insert(text, pagename)
insert(text, (pagename ~= situation and " (" ..
gsub(situation, pagename, "<b>" .. pagename .. "</b>") .. ")" or ""))
insert(text, "</span>")
else
insert(text, (readingNo == 1 and "" or "\n|" .. clrList[locationNo-1]))
insert(text, locEnd)
insert(text, fmtDial(dialPron[readingNo][2][locationNo-1], locationNo))
insert(text, "</span>")
end
end
end
insert(text, "\n|}</div></div>")
end
end
--Part 4 "Middle Chinese & Old Chinese"
local mc_preview, oc_preview
local m_ltc_pron, m_och_pron
-- !!!
-- The following function modifies the tables generated by mod:ltc-pron and mod:och-pron, shifting them
-- from using "mw-collapsible" to using "vsSwitcher", because the former
-- can not collapse on the mobile site and makes Chinese entries a mess.
-- It is supposed to be a temporary solution.
-- !!!
local function shiftCustomtoggle2Vsswitcher(s)
local result
result = (s:gsub(
'\n%* <div title="expand" class="mw%-customtoggle[^>]+">',
'\n<div class="vsSwitcher" data-toggle-category="pronunciations">\n* '
):gsub(
'<span style="float:right; border:1px solid #ccc; border%-radius:1px; padding:0 0; font%-size:90%%">▼</span>(.-)</div>\n{| class="wikitable',
'<span class="vsToggleElement" style="float:right; padding:0 0"></span>%1\n<div class="vsHide">\n{| class="wikitable'
):gsub(
'{| class="wikitable mw%-collapsible mw%-collapsed" id="[^"]+"',
'{| class="wikitable"'
):gsub(
"\n|}$",
"\n|}</div></div>"
))
return result
end
if mc then
m_ltc_pron = require("Module:ltc-pron")
mc_preview = m_ltc_pron.retrieve_pron(pagename, false, mc, true)
if not mc_preview then
require("Module:debug/track")("zh-pron/Middle Chinese data not found")
mc = nil
end
end
if oc then
m_och_pron = require("Module:och-pron")
oc_preview = m_och_pron.generate_show(pagename, oc)
if not oc_preview then
require("Module:debug/track")("zh-pron/Old Chinese data not found")
oc = nil
end
end
if mc or oc then
insert(text, '\n<hr style="clear:right;">\n<div style="background-color:var(--wikt-palette-lighterblue, #ebf4ff); margin: 0 -5px -5px; padding: 0 5px 5px;">')
if mc then
insert(text, shiftCustomtoggle2Vsswitcher(m_ltc_pron.ipa(mc, mc_preview)))
end
if oc then
insert(text, shiftCustomtoggle2Vsswitcher(m_och_pron.ipa(oc, oc_preview)))
end
insert(text, "</div>")
end
insert(text, "</div>")
if namespace == "" or namespace == "-" then
if mc then
if is_single_hanzi then
if mc_preview:find("k̚$") then
-- insert(text, "[[Category:Middle Chinese -k characters|" .. sortkey .. "]]")
elseif mc_preview:find("t̚$") then
-- insert(text, "[[Category:Middle Chinese -t characters|" .. sortkey .. "]]")
elseif mc_preview:find("p̚$") then
--insert(text, "[[Category:Middle Chinese -p characters|" .. sortkey .. "]]")
end
end
end
if not args["cat"] then
--insert(text, "[[Category:zh-pron usage missing POS]]")
end
end
end
local conv_text = {} --categories
if namespace == "" or namespace == "-" then
local catText = args["cat"] or ""
local cat_start = "[[Category:"
local cat_end = "]]"
if w_rom then
w_rom = gsub(w_rom, "%d", "")
end
local function add_cat(cat_table, name, cat)
insert(cat_table, cat_start .. name .. cat .. "ဖုံႏ|" .. sortkey .. cat_end)
end
local cats = split(catText, ",", true)
for i = 1, #cats do
if pos_aliases_cat[cats[i]] == "chengyu" then
insert(cats, i, "idioms")
break
end
end
insert(cats, 1, "ငဝ်းတဲႏ")
if is_single_hanzi then
insert(cats, 2, "ဟန်သီ")
end
for i = 1, #cats do
local cat = cats[i]
if cat == "" then break end
cat = gsub(cat, "^ +", "")
if find(cat, ":") then
local cat_split = split(cat, ":", true)
local lang_name = langname_abbr[cat_split[1]]
local category = pos_aliases_cat[cat_split[2]] or cat
add_cat(conv_text, "ခယ်ႏ", category)
insert(conv_text, cat_start .. lang_name .. category .. "ဖုံႏ|" .. sortkey .. cat_end)
else
cat = pos_aliases_cat[cat] or cat
add_cat(conv_text, "ခယ်ႏ", cat)
if m_rom or m_x_rom or m_nj_rom then add_cat(conv_text, "မန်ဒရိဉ်း", cat) end
if has_var("m-s") then add_cat(conv_text, "သီဆွင်", cat) end
if has_var("dg") then add_cat(conv_text, "ဒုန်ဂန်", cat) end
if c_rom or c_dg_rom or c_yj_rom then add_cat(conv_text, "ကန်တုံ", cat) end
if c_t_rom then add_cat(conv_text, "တုဲင်းသျန်", cat) end
if has_var("g") then add_cat(conv_text, "ဂန်", cat) end
if h_rom and (find(h_rom, "pfs=.") or find(h_rom, "gd=.")) or #h_audio > 0 then
add_cat(conv_text, "ဟက်ကာ", cat)
end
if has_var("j") then add_cat(conv_text, "စိဉ်", cat) end
if has_var("mb") then add_cat(conv_text, "မိဉ်ခဝ်ကွဉ်ႏ", cat) end
if has_var("md") then add_cat(conv_text, "မိဉ်ဒုံခဝ်ကွဉ်ႏ", cat) end
if has_var("mn") then add_cat(conv_text, "ဟောက်ခိအဲဉ်း", cat) end
if has_var("mn-t") then add_cat(conv_text, "တဝ်းဆွေး", cat) end
if has_var("mn-l") then add_cat(conv_text, "လဲစိုးမိဉ်", cat) end
if has_var("px") then add_cat(conv_text, "ပုဆီအန်းမိဉ်", cat) end
if has_var("sp") then add_cat(conv_text, "ဖိဉ်းဂွါခဝ်နဝ်", cat) end
if has_var("w") then add_cat(conv_text, "ဝူ", cat) end
if has_var("w-j") then add_cat(conv_text, "ဝူ", cat) end
if has_var("x") then add_cat(conv_text, "သျင်", cat) end
if has_var("x-l") then add_cat(conv_text, "သျင်", cat) end
if has_var("x-h") then add_cat(conv_text, "သျင်", cat) end
if mc and has_var("mc") then
add_cat(conv_text, "ခယ်ႏစိုးထာႏဝ", cat)
end
if oc and has_var("oc") then
add_cat(conv_text, "ခယ်ႏကရီးခါ", cat)
end
end
end
if not args.only_cat then
insert(conv_text, cat_start .. "IPAအငဝ်းထန်ႏကိုကပါဒါႏခယ်ႏငဝ်းငွါဖုံႏ|" .. sortkey .. cat_end)
end
if not args.poj_form_zh_see then
if not find(pagename, "[" .. hanzi .. bopomofo .. "]") then
-- insert(conv_text, cat_start .. "Chinese terms written in foreign scripts|" .. sortkey .. cat_end)
end
-- TODO: handle Zhuyin.
-- Note: this parses any IDS to pick out the full character.
for _, character in ipairs(explode_chars(pagename)) do
if match(character, "[" .. hanzi .. "%%%+%-·×々〻𖿣⿰-]") then
-- insert(conv_text, cat_start .. "Chinese terms spelled with " .. character .. "|" .. sortkey .. cat_end)
end
end
end
end
local output = concat(text) .. concat(conv_text)
if namespace ~= "" and namespace ~= "-" then
output = gsub(output, "%[%[Category:[^%]]+%]%]", "")
end
return output
end
return export
gqt4or4d2doqiur5ka4m7j5e4ibq71z
မော်ဂျူး:cmn-pron
828
5324
12802
12752
2025-06-29T15:44:30Z
咽頭べさ
11
12802
Scribunto
text/plain
local export = {}
local m_str_utils = require("Module:string utilities")
local cmn = require("Module:languages").getByCode("cmn")
local find = m_str_utils.find
local gsub = m_str_utils.gsub
local len = m_str_utils.len
local match = m_str_utils.match
local gmatch = m_str_utils.gmatch
local sub = m_str_utils.sub
local split = m_str_utils.split
local gsplit = m_str_utils.gsplit
local lower = m_str_utils.lower
local upper = m_str_utils.upper
local format = string.format
local u = m_str_utils.char
local toNFD = mw.ustring.toNFD
local toNFC = mw.ustring.toNFC
local trim = mw.text.trim
local pua = {}
for i = 1, 7 do
pua[i] = u(0xF000+i-1)
end
local m_data = mw.loadData("Module:cmn-pron/data")
local m_zh = require("Module:zh")
local _m_zh_data = nil
local hom_data = nil
local function track(page)
local tracking_page = "cmn-pron/" .. page
require("Module:debug/track")(tracking_page)
return true
end
local function hom_data_part(pinyin)
local x = toNFD(pinyin):sub(1,1)
if "a" <= x and x <= "g" then
return 1
elseif "h" <= x and x <= "m" then
return 2
elseif "n" <= x and x <= "w" then
return 3
end
return 4
end
local function get_hom_data(py)
if hom_data == nil then
hom_data = require("Module:zh/data/cmn-hom/" .. hom_data_part(py))
end
return hom_data
end
-- if not empty
local function ine(var)
if var == "" then
return nil
else
return var
end
end
local breve, hacek, circumflex = u(0x306), u(0x30C), u(0x302)
local function input_error(text)
if type(text) ~= "string" then
return
end
local subs, err = {[breve] = hacek, [circumflex] = "h", ["ŋ"] = "ng", ["Ŋ"] = "Ng"}
text = toNFD(text)
if find(text, breve) and (find(text, "[zcsZCS]" .. circumflex) or find(text, "[ŋŊ]")) then
err = "a breve and an uncommon shorthand"
elseif find(text, breve) then
err = "a breve"
elseif find(text, "[zcsZCS]" .. circumflex) or find(text, "[ŋŊ]") then
err = "an uncommon shorthand"
end
if err then error('The pinyin text "' .. text .. '" contains ' .. err .. '. Replace it with "' .. gsub(text, ".", subs) .. '".', 2) end
end
local function m_zh_data()
if _m_zh_data == nil then _m_zh_data = require("Module:zh/data/cmn-tag") end;
return _m_zh_data;
end
function export.py_detone(text)
return toNFC(gsub(toNFD(text), "[̄́̌̀]", ""))
end
function export.tone_determ(text)
text = toNFD(text)
return m_data.py_tone_mark_to_num[match(text, m_data.tones)] or '5'
end
local function sup(text)
local ret = mw.html.create("sup"):wikitext(text)
return tostring(ret)
end
function export.py_transf(text)
return export.py_detone(text) .. export.tone_determ(text)
end
local function decompose_tones(text)
return (toNFD(text):gsub("[EeUu]\204[\130\136]", toNFC))
end
function export.py_transform(text, detone, not_spaced)
if find(text, "") then
error("Pinyin contains the hidden character: (U+200B). Please remove that character from the text.")
elseif find(text, "%d") then
-- e.g. ma1 instead of mā
error("Numbered tones should be given with tone marks instead.")
end
local tones = m_data.tones
detone = ine(detone)
not_spaced = ine(not_spaced)
text = decompose_tones(text)
text = text
:gsub("\204[\128\129\132\140]", {["̄"] = "\1", ["́"] = "\2", ["̌"] = "\3", ["̀"] = "\4"})
:gsub("\195[\138\156\170\188]", {["ê"] = "\5", ["ü"] = "\6", ["Ê"] = "\14", ["Ü"] = "\15"})
:gsub("\228\184[\128\141]", {["一"] = "\7", ["不"] = "\8"})
local function plaintext(text)
return (text:gsub("\16([\1-\4])", "n%1g")
:gsub("[\1-\8\14-\18]", function(m)
return ({"\204\132", "\204\129", "\204\140", "\204\128", "ê", "ü", "一", "不", [14] = "Ê", [15] = "Ü", [16] = "ng", [17] = "gn", [18] = "'"})[m:byte()]
end))
end
if not not_spaced then
local i = 1
local function check_apostrophes(check_text)
i = i + 1
local new_text = check_text
:gsub("([^mnMN][\1-\4][iouIOU]?)([aeiou\5\6AEIOU\14\15]%f[\1-\4])", "%1'%2")
:gsub("([\1-\4])([aeiou\5\6AEIOU\14\15]%f[\1-\4])", "%1'%2")
:gsub("([a-gi-zA-GI-Z\5\6\14\15])([mnMN]%f[\1-\4])", "%1'%2")
:gsub("([b-dfgj-np-tv-zB-DFGJ-NP-TV-Z])([mnMN]%f[%z%s%p])", "%1'%2")
:gsub("([mnMN][\1-\4])([mnMN]%f[%z%s%p])", "%1'%2")
:gsub("([\7\8])([aeiou\5\6mnAEIOU\14\15MN]%f[\1-\4%z%s%p])", "%1'%2")
if new_text ~= check_text then
check_apostrophes(new_text)
elseif new_text ~= text then
error(("Missing apostrophe before null-initial syllable - should be \"%s\" instead."):format(plaintext(new_text)), i)
end
end
check_apostrophes(text)
end
local check_text = gsub(text,"([AOEaoe])([iou])(" .. tones .. ")", "%1%3%2")
check_text = gsub(check_text,"([iuü])(" .. tones .. ")([aeiou])", "%1%3%2")
if text ~= check_text then
error("Incorrect diacritic placement in Pinyin - should be \"".. check_text .. "\" instead.")
end
text = lower(text)
:gsub(" *([,.?]) *", " %1 ")
:gsub("[#0]", {["#"] = " #", ["0"] = "5"})
:gsub("%. +%. +%.", "...")
:gsub("(%d)([%a\5-\8])", "%1 %2")
:gsub("n([\1-\4]?)g", "\16%1")
:gsub("%f[^aeiou\1-\6]\16%f[aeiou\1-\6]", "ng")
:gsub("gn%f[aeiou\5\6]", "\17")
:gsub("'r", "\18r")
:gsub("\18r([aeiou\5\6])", "'r%1")
:gsub("([aeiou\5\6][\1-\4]?[mn\16]?\18?r?)([bpmfvdtnlgkhjqxzcsywr\16\17\7\8])", "%1 %2")
:gsub("([mn\16\7\8][\1-\4]?\18?r?)([bpmfvdtnlgkhjqxzcsywr\16\17\7\8])", "%1 %2")
:gsub(" r%f[%z%d%s'%-]", "r")
:gsub("([aeiou\5\6][\1-\4]?) ([mn\16])%f[%z%d%s'%-]", "%1%2")
:gsub("['%-]", " ")
if detone or text:find("%d") then
text = text
:gsub("([\1-\4])([^ ]*)", function(m1, m2)
return m2 .. m1:byte()
end)
:gsub("[^%d\7\8]%f[%z%s,.?]", "%05")
:gsub("([\7\8]\18?r)5", "%1")
end
text = plaintext(text)
if not_spaced then
text = text:gsub(" ", "")
end
return (toNFC(trim(text)):gsub(" +", " "))
end
local function iterate_words(text)
local pos, word, non_word
local function get_word()
word, non_word, pos = text:match("([^%s]+)([%s]*)()", pos)
if pos then
return word, non_word
end
end
return get_word
end
local function iterate_syllables(text)
local cap = find(text, "^%u")
text = export.py_transform(text, true)
text = text
:gsub("\195[\170\188]", {["ê"] = "\1", ["ü"] = "\2"})
:gsub("[zcs]h", {["zh"] = "\3", ["ch"] = "\4", ["sh"] = "\5"})
local raw_syllables = split(text, " ")
local function plaintext(text)
return (text and text:gsub("[\1-\8]", function(m)
return ({"ê", "ü", "ẑ", "ĉ", "ŝ", "ŋ", "ɲ", "ɨ"})[m:byte()]
end))
end
local i = 0
local function explode_syllable()
i = i + 1
if raw_syllables[i] then
local syllable, tone, sandhi, block_sandhi = raw_syllables[i]
if syllable == "" then
return explode_syllable()
end
syllable = syllable
:gsub("(\228\184[\128-\141])('?r?)$", function(m, erhua)
sandhi = m
return (m:gsub(".*", {["一"] = "yi1", ["不"] = "bu4"})
:gsub("(%a+)(%d)", "%1" .. erhua .. "%2"))
end)
:gsub("^#", function(m)
block_sandhi = true
return ""
end)
:gsub("%d$", function(m)
tone = m
return ""
end)
:gsub("ng", "\6")
:gsub("gn", "\7")
:gsub("([bpmfv])(o'?r?)$", "%1u%2")
:gsub("([jq\7x])u", "%1\2")
:gsub("[iy]u", {["iu"] = "iou", ["yu"] = "\2"})
:gsub("[eu]i", {["ei"] = "\1i", ["ui"] = "u\1i"})
:gsub("ao", "au")
:gsub("[wy]", {["w"] = "u", ["y"] = "i"})
:gsub("([iu\2])e('?r?)$", "%1\1%2")
:gsub("(.)o([mn\6]'?r?)$", "%1u%2")
:gsub("iu", "\2")
:gsub("^([^aoe\1]?[iu\2])([mn\6]'?r?)$", "%1e%2")
:gsub("([iu])%1", "%1")
:gsub("([\3-\5rzcs])i('?r?)$", "%1\8%2")
local initial, glide1, nucleus, glide2, nasal, erhua = syllable:match("^([bpmfvdtnlgk\6hjq\7x\3-\5rzcs]?)([iu\2\8]?)([aoe\1]?)([iu]?)([mn\6]?)('?r?)$")
return (syllable:gsub("[#%d]", "")), plaintext(initial), plaintext(glide1), plaintext(nucleus), glide2, plaintext(nasal), erhua, tone, sandhi, (not not block_sandhi)
end
end
return explode_syllable
end
-- Generate a normalized pinyin version as a baseline, which everything else can work from.
local function normalize_py(text, no_words)
local raw_words, words = split(text, " "), {}
for i, word in ipairs(raw_words) do
local cap = find(word, "^%u")
word = export.py_transform(word, true)
word = word:gsub("\195[\170\188]", {["ê"] = "\1", ["ü"] = "\2"})
local raw_syllables, syllables = split(word, " "), {}
for j, s in ipairs(raw_syllables) do
s = s
:gsub("[zcs]h", {["zh"] = "\3", ["ch"] = "\4", ["sh"] = "\5"})
:gsub("ng", "\6")
:gsub("gn", "\7")
:gsub("([bpmfv])(or?%d)", "%1u%2")
:gsub("([jq\7x])u", "%1\2")
:gsub("iu", "iou")
:gsub("yu", "\2")
:gsub("ui", "uei")
:gsub("ao", "au")
:gsub("[wy]", {["w"] = "u", ["y"] = "i"})
:gsub("([iu\2])e(r?%d)", "%1\1%2")
:gsub("ue([n\6]r?)", "u%1")
:gsub("io(\6r?)", "\2%1")
:gsub("([iu])%1", "%1")
:gsub("([\3-\5rzcs])i(r?%d)", "%1ɨ%2")
:gsub("[\1-\7]", function(m)
return ({"ê", "ü", "ẑ", "ĉ", "ŝ", "ŋ", "ɲ"})[m:byte()]
end)
table.insert(syllables, toNFC(s))
end
word = syllables
if #word > 0 then
word[1] = cap and gsub(word[1], "^.", upper) or word[1]
table.insert(words, word)
end
end
if no_words then
local syllables = {}
for _, word in ipairs(words) do
for _, s in ipairs(word) do
table.insert(syllables, s)
end
end
words = syllables
end
return words
end
function export.py_ipa(text)
local ipa_initials = m_data.py_ipa_initials
local ipa_initials_tl = m_data.py_ipa_initials_tl
local ipa_finals = m_data.py_ipa_finals
local ipa_erhua = m_data.py_ipa_erhua
local ipa_tl_ts = m_data.py_ipa_tl_ts
local ipa_t_values = m_data.py_ipa_t_values
local tones = {}
local tone_cats = {}
text = lower(text)
local syllables = normalize_py(text, true)
for i, s in ipairs(syllables) do
if s:find("^[,.?]+$") then
table.remove(syllables, i)
end
end
for i = 1, #syllables do
syllables[i] = syllables[i]:gsub("%d", function(m)
tone_cats[i] = m
return ""
end)
if syllables[i] == "一" then
tone_cats[i] = syllables[i+1] and (syllables[i+1]:match("%d") == "4" or syllables[i+1] == "ge") and "1-2" or "1-4"
syllables[i] = "i"
elseif syllables[i] == "不" then
tone_cats[i] = syllables[i+1] and syllables[i+1]:match("%d") == "4" and "4-2" or "4"
syllables[i] = "bu"
end
tone_cats[i] = tone_cats[i] or "5"
syllables[i] = syllables[i]:gsub("#", function(m)
tone_cats[i] = "#" .. tone_cats[i]
return ""
end)
end
for i, s in ipairs(syllables) do
s = gsub(s, "^([bpmfvdtnlgkŋhjqɲxẑĉŝrzcs]?)([^r']+)('?r?)$", function(initial, final, erhua)
if initial == "" and find(final, "^[aeêo]") then
initial = "ˀ"
end
final = ipa_finals[final] or final
if erhua == "r" then
for i, from in ipairs(ipa_erhua[1]) do
final = gsub(toNFD(final), toNFD(from) .. "$", ipa_erhua[2][i])
end
final = toNFC(final)
end
if initial:find("[zcs]") then
final = final:gsub("ʐ", "z")
elseif initial == "" then
final = final:gsub("[iuy]̯", {["i̯"] = "j", ["u̯"] = "w", ["y̯"] = "ɥ"})
end
initial = ipa_initials[initial] or initial
if tone_cats[i] == "5" then
initial = initial:gsub(".*", ipa_initials_tl)
final = final:gsub("ɤ$", "ə")
end
return gsub(initial .. final, "ʐʐ̩", "ʐ̩")
end)
local curr_tone_cat, prev_tone_cat, next_tone_cat = tone_cats[i], tone_cats[i-1], tone_cats[i+1]
if curr_tone_cat == "5" then
tones[i] = prev_tone_cat and ipa_tl_ts[prev_tone_cat:gsub("#", "")] or ""
else
tones[i] = ipa_t_values[curr_tone_cat:gsub("#", "")]
end
if curr_tone_cat:find("3") then
if i == #tone_cats then
if i > 1 then
tones[i] = "²¹⁴⁻²¹⁽⁴⁾"
end
elseif next_tone_cat == "3" then
tones[i] = "²¹⁴⁻³⁵"
elseif next_tone_cat ~= "5" then
tones[i] = "²¹⁴⁻²¹"
end
elseif curr_tone_cat == "4" and (next_tone_cat == "4" or next_tone_cat == "1-4") then
tones[i] = "⁵¹⁻⁵³"
elseif curr_tone_cat == "1-4" and next_tone_cat == "4" then
tones[i] = "⁵⁵⁻⁵³"
end
syllables[i] = s .. tones[i]
syllables[i] = gsub(syllables[i], "#", "")
end
return table.concat(syllables, " ")
end
function export.py_number_to_mark(text)
local priority = m_data.py_mark_priority
local tones = m_data.py_tone_num_to_mark
text = text:gsub("([^%s0-5]+)([0-5])", function(syl, tone)
for _, pattern in ipairs(priority) do
local syl, n = gsub(syl, pattern, "%0" .. (tones[tone] or ""))
if n > 0 then
return syl
end
end
return syl .. tone
end)
return toNFC(text)
end
function export.py_zhuyin(text)
input_error(text)
local py_zhuyin_consonant = m_data.py_zhuyin_consonant
local py_zhuyin_glide = m_data.py_zhuyin_glide
local py_zhuyin_nucleus = m_data.py_zhuyin_nucleus
local py_zhuyin_final = m_data.py_zhuyin_final
local py_zhuyin_syllabic_nasal = m_data.py_zhuyin_syllabic_nasal
local py_zhuyin_tone = m_data.py_zhuyin_tone
local output = {}
text = export.py_transform(text)
for syllable, initial, glide1, nucleus, glide2, nasal, erhua, tone in iterate_syllables(text) do
if not (initial or glide1 or nucleus or glide2 or nasal) then
table.insert(output, syllable)
else
local final = (py_zhuyin_nucleus[nucleus] or nucleus) .. (py_zhuyin_glide[glide2] or glide2)
final = (py_zhuyin_final[final] or final) .. (py_zhuyin_consonant[nasal] or nasal)
final = ((py_zhuyin_glide[glide1] or glide1) .. (py_zhuyin_final[final] or final))
:gsub("(\227\132[\167-\169])ㄜ", "%1")
syllable = (py_zhuyin_consonant[initial] or initial) .. final
if initial:find("[bpmfv]") and syllable:find("ㄨㄛ$") then
syllable = syllable:gsub("ㄨ", "")
end
syllable = syllable:gsub("^\227\132[\135\139\171]$", py_zhuyin_syllabic_nasal)
:gsub("\227\132[\135\139\171]$", "<small>%0</small>")
if syllable == "ㄜ" and erhua == "r" then
syllable = "ㄦ"
erhua = ""
elseif #erhua > 0 then
erhua = "ㄦ"
end
if tone == "5" then
syllable = py_zhuyin_tone[tone] .. syllable .. erhua
else
syllable = syllable .. py_zhuyin_tone[tone] .. erhua
end
table.insert(output, syllable)
end
end
return table.concat(output, " ")
end
function export.zhuyin_py(text)
local zhuyin_py_initial = m_data.zhuyin_py_initial
local zhuyin_py_final = m_data.zhuyin_py_final
local zhuyin_py_tone = m_data.zhuyin_py_tone
local word = split(text, " ", true)
local function process_syllable(syllable)
syllable = gsub(syllable, "^([ㄓㄔㄕㄖㄗㄘㄙ])([ˊˇˋ˙]?)$", "%1ㄧ%2")
return gsub(syllable, "([ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄪ]?)([ㄧㄨㄩ]?[ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄪㄫㄬㄧㄨㄩㄇ])([ˊˇˋ˙]?)(ㄦ?)", function(initial, final, tone, erhua)
initial = zhuyin_py_initial[initial]
final = zhuyin_py_final[final]
if erhua ~= "" then
final = final .. "r"
end
if initial == "" then
final = final
:gsub("^([iu])(n?g?)$", function(a, b) return gsub(a, "[iu]", {["i"] = "yi", ["u"] = "wu"}) .. b end)
:gsub("^(w?u)([in])$", "ue%2")
:gsub("^iu$", "iou")
:gsub("^([iu])", {["i"] = "y", ["u"] = "w"})
:gsub("^ong", "weng")
:gsub("^ü", "yu")
end
if initial:find("[jqx]") then
final = final:gsub("^ü", "u")
end
local tone = zhuyin_py_tone[tone]
if final:find("[ae]") then
final = final:gsub("([ae])", "%1" .. tone)
elseif final:find("i[ou]") then
final = final:gsub("(i[ou])", "%1" .. tone)
elseif final:find("[io]") then
final = final:gsub("([io])", "%1" .. tone)
else
final = gsub(final, "^([wy]?)(.)", "%1" .. "%2" .. tone)
end
return initial .. final
end)
end
for i, syllable in ipairs(word) do
word[i] = process_syllable(syllable)
end
return toNFC(table.concat(word, " "))
end
function export.py_wg(text)
local py_wg_consonant = m_data.py_wg_consonant
local py_wg_consonant_dental = m_data.py_wg_consonant_dental
local py_wg_glide = m_data.py_wg_glide
local py_wg_nucleus = m_data.py_wg_nucleus
local py_wg_o = m_data.py_wg_o
local output = {}
for word, non_word in iterate_words(text) do
local cap = find(word, "^%u")
word = cap and lower(word) or word
local syllables = {}
for syllable, initial, glide1, nucleus, glide2, nasal, erhua, tone in iterate_syllables(word) do
if not (initial or glide1 or nucleus or glide2 or nasal) then
table.insert(syllables, syllable)
else
if glide1 == "ɨ" and py_wg_consonant_dental[initial] then
syllable = py_wg_consonant_dental[initial] .. "ŭ"
else
syllable = ((py_wg_consonant[initial] or initial) .. (py_wg_glide[glide1] or glide1) .. (py_wg_nucleus[nucleus] or nucleus) .. glide2 .. (py_wg_consonant[nasal] or nasal))
:gsub("ehi", "ei")
:gsub("au", "ao")
:gsub("iou", "iu")
:gsub("ian$", "ien")
if py_wg_o[initial] then
syllable = syllable:gsub("ê$", "o")
elseif initial ~= "ŝ" then
syllable = syllable:gsub("uo$", "o")
end
syllable = (#glide1 > 0 and syllable:gsub("ê([mn]g?)", "%1") or syllable)
:gsub("üng", "iung")
if initial == "" then
syllable = syllable
:gsub("^.[\128-\191]*", {["i"] = "y", ["u"] = "w", ["ü"] = "yü"})
:gsub("^[yw]$", {["y"] = "i", ["w"] = "wu"})
:gsub("^([wyo])([mn])", function(m1, m2)
return ({["w"] = "wê", ["y"] = "yi", ["o"] = "u"})[m1] .. m2
end)
elseif glide1 == "u" and not initial:find("[gk]") then
syllable = syllable:gsub("uei", "ui")
end
end
if syllable == "o" and nucleus == "e" and erhua == "r" then
syllable = "êrh"
erhua = ""
elseif #erhua > 0 then
erhua = "-ʼrh"
end
table.insert(syllables, syllable .. tone:gsub("%d", sup) .. erhua)
end
end
syllables[1] = cap and gsub(syllables[1], "^.", upper) or syllables[1]
word = table.concat(syllables, "-")
:gsub("%-([,.?])", "%1")
table.insert(output, word .. non_word)
end
return table.concat(output)
end
local function temp_bg(text, bg)
if bg == 'y' then
return '<' .. text .. '>'
end
return text
end
local function make_bg(text, bg)
if bg == 'y' then
return '<span style="background-color:#F5DEB3">' .. text .. '</span>'
else
return text
end
end
function export.py_gwoyeu(text, original_text)
local initials = m_data.py_gwoyeu_initial
local finals = m_data.py_gwoyeu_final
if text:find('^%s') or text:find('%s$') then error('invalid spacing') end
local words = split(text, " ")
local count = 0
for i, word in ipairs(words) do
local cap = find(toNFD(word), "^%u")
word = export.py_transform(word, true, true)
word = gsub(word, "([1-5])", "%1 ")
word = gsub(word, " $", "")
word = gsub(word, '([!-/:-@%[-`{|}~!-/:-@[-`{-・])', ' %1 ')
word = gsub(word, ' +', ' ')
word = gsub(word, ' $', '')
word = gsub(word, '^ ', '')
local syllables = split(word, " ")
for j, syllable in ipairs(syllables) do
count = count + 1
if not find(syllable, '^[!-/:-@%[-`{|}~!-/:-@[-`{-・]+$') then
local current = sub(mw.title.getCurrentTitle().text, count, count)
if find(current, '^[一七八不]$') then
local exceptions = {['一'] = 'i', ['七'] = 'chi', ['八'] = 'ba', ['不'] = 'bu'}
syllables[j] = exceptions[current]
else
local initial, final, tone = '', '', ''
syllable = gsub(syllable, '([jqxy])u', '%1ü')
syllable = gsub(syllable, '^([zcsr]h?)i(r?[1-5])$', '%1ɨ%2')
if find(syllable, '([bpmfvdtnlgkhjqxzcsryw]?h?)([iuü]?[aoeiɨuüê][ioun]?g?r?)([1-5])') then
syllable = gsub(syllable, '([bpmfvdtnlgkhjqxzcsryw]?h?)([iuü]?[aoeiɨuüê][ioun]?g?r?)([1-5])', function(a, b, c)
initial = initials[a] or error('Unrecognised initial:' .. a); final = finals[b] or error('Unrecognised final:' .. b); tone = c
return (initial .. final .. tone) end)
elseif not (find(mw.title.getCurrentTitle().text, "[们們呒呣哏唔哼哦嗯嘸噷姆欸誒诶麼ㄇㄝM]") or find(mw.title.getCurrentTitle().text, "cmn-pron/testcases", 1, true)) then
error('Unrecognised syllable:' .. syllable)
end
local original = initial..final..tone
if initial:find('^[iu]$') then
final = initial .. final
initial = ''
end
if initial .. final == "e'l" then
final = "el"
end
final = gsub(final, '([iu])%1', '%1')
local len = len(initial) + len(final)
local detone = initial..final
local replace = detone
local fullstop = false
if tone == 5 or tone == '5' then
fullstop = true
if original_text then
tone = split(export.py_transform(original_text, true), ' ')[count]:match('[1-5]')
elseif initial:find('^[lmnr]$') then
tone = 2
else tone = 1 end
if tone == 5 or tone == '5' then
tone = export.tone_determ(m_zh.py(current))
end
end
if tone == 1 or tone == '1' then
if initial:find('^[lmnr]$') then
replace = initial .. 'h' .. sub(detone, 2, len)
else
replace = detone
end
elseif tone == 2 or tone == '2' then
if not initial:find('^[lmnr]$') then
if final:find('^[iu]') then
replace = gsub(detone, '[iu]', {['i'] = 'y', ['u'] = 'w'}, 1)
replace = gsub(replace, '[yw]l?$', {['y'] = 'yi', ['w'] = 'wu', ['wl'] = 'wul',})
else
replace = gsub(detone, '([aiueoyè]+)', '%1r')
end
else
replace = detone
end
elseif tone == 3 or tone == '3' then
if final:find("^iu?e'l$") then
detone = gsub(detone, "'", '')
end
detone = gsub(detone, '^[iu]', {['i'] = 'yi', ['u'] = 'wu'})
if final:find('[aeiou][aeiou]') and (not final:find('^[ie][ie]') or initial..final=="ie") and (not final:find('^[uo][uo]') or initial..final=="uo") then
replace = gsub(detone, '[iu]', {['i'] = 'e', ['u'] = 'o'}, 1)
elseif final:find('[aoeiuyè]') then
replace = gsub(detone, '([iuyw]?)([aoeiuyè])', '%1%2%2', 1)
else
error('Unrecognised final:'..final)
end
elseif tone == 4 or tone == '4' then
if final:find("^iu?e'l$") then
detone = gsub(detone, "'", '')
end
detone = gsub(detone, '^[iu]', {['i'] = 'yi', ['u'] = 'wu'})
if detone:find('[aeo][iu]l?$') then
replace = gsub(detone, "[iu]l?$", {['i'] = 'y', ['u'] = 'w', ['ul'] = 'wl'})
elseif detone:find('[ngl]$') then
replace = gsub(detone, "[ng'l]l?$", {['n'] = 'nn', ['g'] = 'q', ['l'] = 'll', ['gl'] = 'ql', ["'l"] = 'hl'})
else
replace = detone .. 'h'
end
replace = gsub(replace, 'yi([aeiou])', 'y%1')
replace = gsub(replace, 'wu([aeiou])', 'w%1')
end
if fullstop then replace = '.' .. replace end
syllables[j] = gsub(syllable, original, replace)
end
end
end
words[i] = table.concat(syllables, "")
words[i] = cap and gsub(words[i], "^.", upper) or words[i]
end
return table.concat(words, " ")
end
-- Converts Hanyu Pinyin into Tongyong Pinyin.
function export.py_tongyong(text)
local ty_tone = {
["1"] = "", ["2"] = "\204\129", ["3"] = "\204\140", ["4"] = "\204\128", ["5"] = "\204\138"
}
local function num_to_mark(syllable, tone)
tone = ty_tone[tone]
if tone ~= "" then
if find(syllable, "[aeê]") then
syllable = gsub(syllable, "([aeê])", "%1" .. tone)
elseif find(syllable, "o") then
syllable = gsub(syllable, "(o)", "%1" .. tone)
elseif find(syllable, "[iu]") then
syllable = gsub(syllable, "([iu])", "%1" .. tone)
elseif find(syllable, "[mn]") then
syllable = gsub(syllable, "([mn])", "%1" .. tone)
end
end
return syllable
end
local words = {}
for word in gsplit(text, " ") do
local cap = find(toNFD(word), "^%u")
word = export.py_transform(word, true)
local syllables = {}
for syllable in gsplit(word, " ") do
syllable = toNFC(gsub(syllable, "([crsz]h?i)", "%1h"))
syllable = gsub(syllable, "ü", "yu")
syllable = gsub(syllable, "([jqx])u", "%1yu")
syllable = gsub(syllable, "iu", "iou")
syllable = gsub(syllable, "ui", "uei")
syllable = gsub(syllable, "([wf])eng", "%1ong")
syllable = gsub(syllable, "wen", "wun")
syllable = gsub(syllable, "iong", "yong")
syllable = gsub(syllable, "^zh", "jh")
syllable = gsub(syllable, "^q", "c")
syllable = gsub(syllable, "^x", "s")
syllable = #syllables ~= 0 and gsub(syllable, "^([aeo])", "-%1") or syllable
syllable = gsub(syllable, "^([^1-5]+)([1-5])$", num_to_mark)
table.insert(syllables, syllable)
end
word = table.concat(syllables, "")
word = cap and gsub(word, "^.", upper) or word
table.insert(words, word)
end
return toNFC(table.concat(words, " "))
end
-- Converts Hanyu Pinyin into the Yale system.
function export.py_yale(text)
local yale_tone = {
["1"] = u(0x304), ["2"] = u(0x301), ["3"] = u(0x30C), ["4"] = u(0x300), ["5"] = ""
}
local function num_to_mark(syllable, tone)
tone = yale_tone[tone]
if tone ~= "" then
if find(syllable, "[ae]") then
syllable = gsub(syllable, "([ae])", "%1" .. tone)
elseif find(syllable, "o") then
syllable = gsub(syllable, "(o)", "%1" .. tone)
elseif find(syllable, "[iu]") then
syllable = gsub(syllable, "([iu])", "%1" .. tone)
elseif find(syllable, "[mnrz]") then
syllable = gsub(syllable, "([mnrz])", "%1" .. tone)
end
end
return syllable
end
local words = {}
for word in gsplit(text, " ") do
local cap = find(toNFD(word), "^%u")
word = export.py_transform(word, true)
local syllables = {}
for syllable in gsplit(word, " ") do
syllable = toNFC(gsub(syllable, "^r(%d)", "er%1"))
syllable = gsub(syllable, "^([jqxy])u", "%1ü")
syllable = gsub(syllable, "^(.h)i(%d)", "%1r%2")
syllable = gsub(syllable, "^ri(%d)", "r%1")
syllable = gsub(syllable, "^([csz])i(%d)", "%1z%2")
syllable = gsub(syllable, "^zh", "j")
syllable = gsub(syllable, "^.", m_data.py_yale_initial)
syllable = gsub(syllable, "^tsh", "ch")
syllable = gsub(syllable, "i([aeo])", "y%1")
syllable = gsub(syllable, "u([ao])", "w%1")
syllable = gsub(syllable, "ü([ae])", "yw%1")
for chars, replacement in pairs(m_data.py_yale_two_medials) do
syllable = gsub(syllable, chars, replacement)
end
syllable = gsub(syllable, "ong", "ung")
syllable = gsub(syllable, ".", m_data.py_yale_one_medial)
syllable = gsub(syllable, "ü", "yu")
syllable = gsub(syllable, "([^lwy])o(%d)$", "%1wo%2")
syllable = gsub(syllable, "([yz])%1", "%1")
syllable = gsub(syllable, "^([^%d]+)(%d)$", num_to_mark)
table.insert(syllables, syllable)
end
word = table.concat(syllables, "-")
word = cap and gsub(word, "^.", upper) or word
table.insert(words, word)
end
return toNFC(table.concat(words, " "))
end
-- Converts Hanyu Pinyin into the Palladius system.
function export.py_palladius(text)
local words = {}
for word in gsplit(text, " ") do
local cap = find(toNFD(word), "^%u")
word = export.py_transform(word, true)
local syllables = {}
for syllable in gsplit(word, " ") do
syllable = toNFC(gsub(syllable, "%d", ""))
syllable = gsub(syllable, "^([jqxy])u", "%1ü")
syllable = gsub(syllable, "([mnr])(r?)$", function(m1, m2)
m1 = m_data.py_palladius_final[m1] or m1
return m1 .. (m2 == "r" and "р" or "")
end)
syllable = gsub(syllable, "ng", "н")
syllable = gsub(syllable, "^..", m_data.py_palladius_two_initials)
syllable = gsub(syllable, "^.", m_data.py_palladius_one_initial)
for chars, replacement in pairs(m_data.py_palladius_three_medials) do
syllable = gsub(syllable, chars, replacement)
end
for chars, replacement in pairs(m_data.py_palladius_two_medials) do
syllable = gsub(syllable, chars, replacement)
end
syllable = gsub(syllable, ".", m_data.py_palladius_one_medial)
for chars, replacement in pairs(m_data.py_palladius_specials) do
syllable = gsub(syllable, chars, replacement)
end
syllable = gsub(syllable, "н$", "%1" .. pua[1])
syllable = gsub(syllable, "[ую]$", "%1" .. pua[3])
syllable = gsub(syllable, "[ая]?о$", "%1" .. pua[4])
syllable = gsub(syllable, "[ая]$", "%1" .. pua[5])
syllable = gsub(syllable, "ю?[иэ]$", "%1" .. pua[6])
syllable = gsub(syllable, "оу$", "%1" .. pua[6])
if syllable == "н" or syllable == "нь" then
syllable = syllable .. pua[7]
end
table.insert(syllables, syllable)
end
word = table.concat(syllables, "")
word = gsub(word, "н" .. pua[1] .. "([аеёиоуэюя])", "нъ%1")
for chars, replacement in pairs(m_data.py_palladius_disambig) do
word = gsub(word, chars, replacement)
end
word = gsub(word, "[" .. pua[1] .. "-" .. pua[7] .. "]", "")
word = cap and gsub(word, "^.", upper) or word
table.insert(words, word)
end
return toNFC(table.concat(words, " "))
end
function export.py_format(text, cap, bg, simple)
if cap == false then cap = nil end
if bg == false then bg = 'n' else bg = 'y' end
if simple == false then simple = nil end
text = toNFD(text)
local phon = text
local title = mw.title.getCurrentTitle().text
local cat = ''
local spaced = toNFD(export.py_transform(text))
local space_count
spaced, space_count = spaced:gsub(' ', '@')
local consec_third_count
for _ = 1, space_count do
spaced, consec_third_count = gsub(spaced, "([^@]+)̌([^#@]*)@([^#@]+̌)", function(a, b, c)
return temp_bg(a..'́'..b, bg)..'@'..c end, 1)
if consec_third_count > 0 then
phon = gsub(spaced, '@', '')
end
end
text = gsub(text, "#", "")
phon = gsub(phon, "#", "")
if title:find('一') and not text:find('一') and not simple then
cat = cat .. ' '
end
if text:find('[一不]') and not simple then
text = gsub(text, '[一不]$', {['一'] = 'yī', ['不'] = 'bù'})
phon = gsub(phon, '[一不]$', {['一'] = 'yī', ['不'] = 'bù'})
if find(text, '一') then
if find(text, '一[^̄́̌̀]*[̄́̌]') then
cat = cat .. ' '
phon = gsub(phon, '一([^̄́̌̀]*[̄́̌])', function(a) return temp_bg('yì', bg) .. a end)
text = gsub(text, '一([^̄́̌̀]*[̄́̌])', 'yī%1')
end
if find(text, '一[^̄́̌̀]*̀') or find(text, '一ge$') or find(text, '一ge[^nr]') then
cat = cat .. ' '
phon = gsub(phon, '一([^̄́̌̀]*̀)', function(a) return temp_bg('yí', bg) .. a end)
phon = gsub(phon, '一ge', temp_bg('yí', bg) .. 'ge')
text = gsub(text, '一([^̄́̌̀]*[̄́̌])', 'yī%1')
end
end
if find(text, '不 ?[bpmfvdtnlgkhjqxzcsrwy]?[ghn]?[aeiou]*̀') then
cat = cat .. ' '
phon = gsub(phon, '不( ?[bpmfvdtnlgkhjqxzcsrwy]?[ghn]?[aeiou]*̀)', function(a) return temp_bg('bú', bg) .. a end)
end
end
text = gsub(text, '[一不]', {['一'] = 'yī', ['不'] = 'bù'})
text = gsub(text, '兒', function() return make_bg('r', bg) end) -- character is deleted
phon = gsub(phon, '[一不]', {['一'] = 'yī', ['不'] = 'bù'})
phon = gsub(phon, '<([^>]+)>', '<span style="background-color:#F5DEB3">%1</span>')
if not simple then
if cap then
text = gsub(text, '^%l', upper)
phon = gsub(phon, '^%l', upper)
end
local linked_text = require("Module:links").full_link{term = text, lang = cmn}
if phon ~= text then
text = (linked_text) .. " [Phonetic: " .. phon .. "]"
else
text = linked_text
end
if mw.title.getCurrentTitle().nsText ~= "တမ်းပလေက်" then
text = text .. cat
end
end
return toNFC(text)
end
function export.make_tl(original_text, tl_pos, bg, cap)
if bg == false then bg = 'n' else bg = 'y' end
local _, countoriginal = original_text:gsub(" ", " ")
local spaced = export.py_transform(original_text)
if sub(spaced, -1, -1) == ' ' then spaced = sub(spaced, 1, -2) end
local _, count = spaced:gsub(" ", " ")
local index = {}
local start, finish
local pos = 1
for i = 1, count, 1 do
if i ~= 1 then pos = (index[i-1] + 1) end
index[i] = find(spaced, ' ', pos)
end
if tl_pos == 2 then
start = index[count-1] - count + countoriginal + 2
finish = index[count] - count + countoriginal
elseif tl_pos == 3 then
start = index[count-2] - count + countoriginal + 3
finish = index[count-1] - count + countoriginal + 1
else
start = count == 0 and 1 or (index[count] - count + countoriginal + 1)
finish = -1
end
local text = (sub(original_text, 1, start-1) .. make_bg(gsub(sub(original_text, start, finish), '.', export.py_detone), bg))
if finish ~= -1 then text = (text .. sub(original_text, finish+1, -1)) end
if cap == true then text = gsub(text, '^%l', upper) end
return text
end
function export.tag(first, second, third, fourth, fifth)
local text = "(''"
local tag = {}
local tagg = first or "Standard Chinese"
tag[1] = (second ~= '') and second or "Standard Chinese"
tag[2] = (third ~= '') and third or nil
tag[3] = (fourth ~= '') and fourth or nil
tag[4] = (fifth ~= '') and fifth or nil
text = text .. ((tagg == '') and table.concat(tag, ", ") or tagg) .. "'')"
text = gsub(text, 'Standard Chinese', "[[w:Standard Chinese|Standard Chinese]]")
text = gsub(text, 'Mainland', "[[w:Putonghua|Mainland]]")
text = gsub(text, 'Taiwan', "[[w:Taiwanese Mandarin|Taiwan]]")
text = gsub(text, 'Beijing', "[[w:Beijing dialect|Beijing]]")
text = gsub(text, 'erhua', "[[w:erhua|erhua]]")
text = gsub(text, 'Min Nan', "[[w:Min Nan|Min Nan]]")
text = gsub(text, 'shangkouzi', "''[[上口字|shangkouzi]]''")
return text
end
function export.straitdiff(text, pron_ind, tag)
local conv_text = text
for i = 1, #text do
if m_zh_data().MT[sub(text, i, i)] then conv_text = 'y' end
end
if tag == 'tag' then
conv_text = (conv_text == 'y') and m_zh_data().MT_tag[match(text, '[丁-丌与-龯㐀-䶵]')][pron_ind] or ''
elseif pron_ind == 1 or pron_ind == 2 or pron_ind == 3 or pron_ind == 4 or pron_ind == 5 then
local reading = {}
for a, b in pairs(m_zh_data().MT) do
reading[a] = b[pron_ind]
if reading[a] then reading[a] = gsub(reading[a], "^([āōēáóéǎǒěàòèaoe])", "'%1") end
end
conv_text = gsub(text, '.', reading)
text = gsub(text, "^'", "")
text = gsub(text, " '", " ")
if conv_text == text and tag == 'exist' then return nil end
end
conv_text = gsub(conv_text, "^'", "")
return conv_text
end
function export.str_analysis(text, conv_type, other_m_vars)
local MT = m_zh_data().MT
text = gsub(text, '{default}', '')
text = gsub(text, '=', '—')
text = gsub(text, ',', '隔')
text = gsub(text, '隔 ', ', ')
if conv_type == 'head' or conv_type == 'link' then
if find(text, '隔cap—') then
text = gsub(text, '[一不]', {['一'] = 'Yī', ['不'] = 'Bù'})
end
text = gsub(text, '[一不]', {['一'] = 'yī', ['不'] = 'bù'})
end
local comp = split(text, '隔', true)
local reading = {}
local alternative_reading = {}
local zhuyin = {}
--[[
-- not used
local param = {
'1n', '1na', '1nb', '1nc', '1nd', 'py', 'cap', 'tl', 'tl2', 'tl3', 'a', 'audio', 'er', 'ertl', 'ertl2', 'ertl3', 'era', 'eraudio',
'2n', '2na', '2nb', '2nc', '2nd', '2py', '2cap', '2tl', '2tl2', '2tl3', '2a', '2audio', '2er', '2ertl', '2ertl2', '2ertl3', '2era', '2eraudio',
'3n', '3na', '3nb', '3nc', '3nd', '3py', '3cap', '3tl', '3tl2', '3tl3', '3a', '3audio', '3er', '3ertl', '3ertl2', '3ertl3', '3era', '3eraudio',
'4n', '4na', '4nb', '4nc', '4nd', '4py', '4cap', '4tl', '4tl2', '4tl3', '4a', '4audio', '4er', '4ertl', '4ertl2', '4ertl3', '4era', '4eraudio',
'5n', '5na', '5nb', '5nc', '5nd', '5py', '5cap', '5tl', '5tl2', '5tl3', '5a', '5audio', '5er', '5ertl', '5ertl2', '5ertl3', '5era', '5eraudio'
}
--]]
if conv_type == '' then
return comp[1]
elseif conv_type == 'head' or conv_type == 'link' then
for i, item in ipairs(comp) do
if not find(item, '—') then
if find(item, '[一-龯㐀-䶵]') then
local M, T, t = {}, {}, {}
for a, b in pairs(MT) do
M[a] = b[1]; T[a] = b[2]; t[a] = b[3];
M[a] = gsub(M[a], "^([āōēáóéǎǒěàòèaoe])", "'%1")
T[a] = gsub(T[a], "^([āōēáóéǎǒěàòèaoe])", "'%1")
if t[a] then t[a] = gsub(t[a], "^([āōēáóéǎǒěàòèaoe])", "'%1") end
end
local mandarin = gsub(item, '.', M)
local taiwan = gsub(item, '.', T)
mandarin = gsub(mandarin, "^'", "")
mandarin = gsub(mandarin, " '", " ")
if conv_type == 'link' then return mandarin end
taiwan = gsub(taiwan, "^'", "")
taiwan = gsub(taiwan, " '", " ")
local tt = gsub(item, '.', t)
if find(text, 'cap—') then
mandarin = gsub(mandarin, '^%l', upper)
taiwan = gsub(taiwan, '^%l', upper)
tt = gsub(tt, '^%l', upper)
end
if tt == item then
zhuyin[i] = export.py_zhuyin(mandarin, true) .. ', ' .. export.py_zhuyin(taiwan, true)
mandarin = gsub(mandarin, "#", "")
taiwan = gsub(taiwan, "#", "")
reading[i] = '[[' .. mandarin .. '#Mandarin|' .. mandarin .. ']], [[' .. taiwan .. '#Mandarin|' .. taiwan .. ']]'
else
tt = gsub(tt, "^'", "")
tt = gsub(tt, " '", " ")
zhuyin[i] = export.py_zhuyin(mandarin, true) .. ', ' .. export.py_zhuyin(taiwan, true) .. ', ' .. export.py_zhuyin(tt, true)
mandarin = gsub(mandarin, "#", "")
taiwan = gsub(taiwan, "#", "")
tt = gsub(tt, "#", "")
reading[i] = '[[' .. mandarin .. '#Mandarin|' .. mandarin .. ']], [[' .. taiwan .. '#Mandarin|' .. taiwan .. ']], [[' .. tt .. '#Mandarin|' .. tt .. ']]'
end
else
if conv_type == 'link' then return item end
zhuyin[i] = export.py_zhuyin(item, true)
reading[i] = item
if len(mw.title.getCurrentTitle().text) == 1 and #split(export.py_transform(item), " ") == 1 then
local target = export.py_transf(reading[i])
alternative_reading[i] = "[[" .. target .. "|" .. gsub(target, '([1-5])', sup) .. "]]"
if alternative_reading[i]:find("5") then
alternative_reading[i] = alternative_reading[i] .. "<span class=\"Zsym mention\" style=\"font-size:100%;\">/</span>" .. alternative_reading[i]:gsub("5", "0")
end
local title = mw.title.new(mw.ustring.lower(target)):getContent()
if not (title and title:find("{{cmn%-pinyin}}")) then
track("uncreated pinyin")
end
end
reading[i] = gsub(reading[i], "#", "")
if reading[i] ~= '' then
reading[i] = '[[' .. reading[i] .. '#Mandarin|'.. reading[i] .. ']]'
end
end
end
comp[i] = item
if conv_type == 'link' then return comp[1] end
end
local id = m_zh.ts_determ(mw.title.getCurrentTitle().text)
local accel
if id == 'trad' then
accel = '<span class="form-of pinyin-t-form-of transliteration-' .. m_zh.ts(mw.title.getCurrentTitle().text)
elseif id == 'simp' then
track("simp")
accel = '<span class="form-of pinyin-s-form-of transliteration-' .. m_zh.st(mw.title.getCurrentTitle().text)
elseif id == 'both' then
accel = '<span class="form-of pinyin-ts-form-of'
end
accel = accel .. '" lang="cmn" class="zhpron-monospace">'
local result = other_m_vars and "*: <small>(''[[w:Standard Chinese|Standard]]'')</small>\n*::" or "*:"
result = result .. "<small>(''[[w:Pinyin|Pinyin]]'')</small>: " .. accel .. gsub(table.concat(reading, ", "), ", ,", ",")
if alternative_reading[1] then
result = result .. " (" .. table.concat(alternative_reading, ", ") .. ")"
end
result = result .. (other_m_vars and "</span>\n*::" or "</span>\n*:")
result = result .. "<small>(''[[w:Zhuyin|Zhuyin]]'')</small>: " .. '<span lang="cmn-Bopo" class="Bopo">' .. gsub(table.concat(zhuyin, ", "), ", ,", ",") .. "</span>"
return result
elseif conv_type == '2' or conv_type == '3' or conv_type == '4' or conv_type == '5' then
if not find(text, '隔') or (comp[tonumber(conv_type)] and find(comp[tonumber(conv_type)], '—')) then
return ''
else
return comp[tonumber(conv_type)]
end
else
for i = 1, #comp, 1 do
local target = '^' .. conv_type .. '—'
if find(comp[i], target) then
text = gsub(comp[i], target, '')
return text
end
end
text = ''
end
return text
end
function export.homophones(pinyin)
local text = ''
if mw.title.getCurrentTitle().nsText == '' then
local args = get_hom_data(pinyin).list[pinyin]
text = '<div style="visibility:hidden; float:left"><sup><span style="color:#FFF">edit</span></sup></div>'
for i, term in ipairs(args) do
if i > 1 then
text = text .. "<br>"
end
if mw.title.new(term).exists and term ~= mw.title.getCurrentTitle().text then
local forms = { term }
local content = mw.title.new(term):getContent()
local template = match(content, "{{zh%-forms[^}]*}}")
if template then
local simp = match(template, "|s=([^|}])+")
if simp then
table.insert(forms, simp)
end
for tradVar in gmatch(template, "|t[0-9]=([^|}])+") do
table.insert(forms, tradVar)
end
for simpVar in gmatch(template, "|s[0-9]=([^|}])+") do
table.insert(forms, simpVar)
end
term = table.concat(forms, "/")
end
end
text = text .. require("Module:links").full_link{ term = term, lang = cmn, tr = "-" }
end
text = text .. ' '
end
return text
end
local function erhua(word, erhua_pos, pagename)
local title = split(pagename, '')
local linked_title = ''
local syllables = split(export.py_transform(word), ' ')
local count = #syllables
erhua_pos = find(erhua_pos, '[1-9]') and split(erhua_pos, ';') or { count }
for _, pos in ipairs(erhua_pos) do
pos = tonumber(pos)
title[pos] = title[pos] .. '兒'
syllables[pos] = syllables[pos] .. 'r'
end
local title = table.concat(title)
if mw.title.new(title).exists then
linked_title = ' (' .. require("Module:links").full_link{ term = title, lang = cmn, tr = "-" } .. ')'
end
for i, syllable in pairs(syllables) do
if i ~= 1 and toNFD(syllable):find('^[aeiou]') then
syllables[i] = "'" .. syllable
end
end
word = table.concat(syllables, '')
return (export.tag('', '', 'erhua-ed') .. linked_title), word
end
export.erhua = erhua
function export.make(frame)
local args = frame:getParent().args
return export.make_args(args)
end
function export.make_args(args)
local pagename = mw.title.getCurrentTitle().text
local text = {}
local reading = {args[1] or '', args[2] or '', args[3] or '', args[4] or '', args[5] or ''}
args["1nb"] = ine(args["1nb"])
if reading[1] ~= '' then
local title = export.tag((args["1n"] or ''), (args["1na"] or ''), (args["1nb"] or export.straitdiff(args[1], 1, 'tag')), (args["1nc"] or ''), (args["1nd"] or ''))
local pinyin = export.straitdiff(reading[1], 1, '')
table.insert(text, export.make_table(title, pinyin, (args["py"] or ''), (args["cap"] or ''), (args["tl"] or ''), (args["tl2"] or ''), (args["tl3"] or ''), (args["a"] or args["audio"] or '')))
if args["er"] and args["er"] ~= '' then
title, pinyin = erhua(pinyin, args["er"], pagename)
table.insert(text, export.make_table(title, pinyin, '', (args["cap"] or ''), (args["ertl"] or ''), (args["ertl2"] or ''), (args["ertl3"] or ''), (args["era"] or args["eraudio"] or ''), true))
end
end
if reading[2] ~= '' or export.straitdiff(reading[1], 2, 'exist') then
if args["2nb"] and args["2nb"] ~= '' then tagb = args["2nb"] else tagb = export.straitdiff(args[1], 2, 'tag') end
title = export.tag((args["2n"] or ''), (args["2na"] or ''), tagb, (args["2nc"] or ''), (args["2nd"] or ''))
pinyin = (reading[2] ~= '') and reading[2] or export.straitdiff(reading[1], 2, '')
table.insert(text, export.make_table(title, pinyin, (args["2py"] or ''), (args["2cap"] or ''), (args["2tl"] or ''), (args["2tl2"] or ''), (args["2tl3"] or ''), (args["2a"] or args["2audio"] or ''), true))
table.insert(text, ' ')
if args["2er"] and args["2er"] ~= '' then
title, pinyin = erhua(pinyin, args["2er"], pagename)
table.insert(text, export.make_table(title, pinyin, '', (args["2cap"] or ''), (args["2ertl"] or ''), (args["2ertl2"] or ''), (args["2ertl3"] or ''), (args["2era"] or args["2eraudio"] or ''), true))
end
if reading[3] ~= '' or export.straitdiff(reading[1], 3, 'exist') then
if args["3nb"] and args["3nb"] ~= '' then tagb = args["3nb"] else tagb = export.straitdiff(args[1], 3, 'tag') end
title = export.tag((args["3n"] or ''), (args["3na"] or ''), tagb, (args["3nc"] or ''), (args["3nd"] or ''))
if reading[3] ~= '' then pinyin = reading[3] else pinyin = export.straitdiff(reading[1], 3, '') end
table.insert(text, export.make_table(title, pinyin, (args["3py"] or ''), (args["3cap"] or ''), (args["3tl"] or ''), (args["3tl2"] or ''), (args["3tl3"] or ''), (args["3a"] or args["3audio"] or ''), true))
if args["3er"] and args["3er"] ~= '' then
title, pinyin = erhua(pinyin, args["3er"], pagename)
table.insert(text, export.make_table(title, pinyin, '', (args["3cap"] or ''), (args["3ertl"] or ''), (args["3ertl2"] or ''), (args["3ertl3"] or ''), (args["3era"] or args["3eraudio"] or ''), true))
end
if reading[4] ~= '' or export.straitdiff(reading[1], 4, 'exist') then
if args["4nb"] and args["4nb"] ~= '' then tagb = args["4nb"] else tagb = export.straitdiff(args[1], 4, 'tag') end
title = export.tag((args["4n"] or ''), (args["4na"] or ''), tagb, (args["4nc"] or ''), (args["4nd"] or ''))
if reading[4] ~= '' then pinyin = reading[4] else pinyin = export.straitdiff(reading[1], 4, '') end
table.insert(text, export.make_table(title, pinyin, (args["4py"] or ''), (args["4cap"] or ''), (args["4tl"] or ''), (args["4tl2"] or ''), (args["4tl3"] or ''), (args["4a"] or args["4audio"] or ''), true))
if args["4er"] and args["4er"] ~= '' then
title, pinyin = erhua(pinyin, args["4er"], pagename)
table.insert(text, export.make_table(title, pinyin, '', (args["4cap"] or ''), (args["4ertl"] or ''), (args["4ertl2"] or ''), (args["4ertl3"] or ''), (args["4era"] or args["4eraudio"] or ''), true))
end
if reading[5] ~= '' or export.straitdiff(reading[1], 5, 'exist') then
if args["5nb"] and args["5nb"] ~= '' then tagb = args["5nb"] else tagb = export.straitdiff(args[1], 5, 'tag') end
title = export.tag((args["5n"] or ''), (args["5na"] or ''), tagb, (args["5nc"] or ''), (args["5nd"] or ''))
if reading[5] ~= '' then pinyin = reading[5] else pinyin = export.straitdiff(reading[1], 5, '') end
table.insert(text, export.make_table(title, pinyin, (args["5py"] or ''), (args["5cap"] or ''), (args["5tl"] or ''), (args["5tl2"] or ''), (args["5tl3"] or ''), (args["5a"] or args["5audio"] or ''), true))
if args["5er"] and args["5er"] ~= '' then
title, pinyin = erhua(pinyin, args["5er"], pagename)
table.insert(text, export.make_table(title, pinyin, '', (args["5cap"] or ''), (args["5ertl"] or ''), (args["5ertl2"] or ''), (args["5ertl3"] or ''), (args["5era"] or args["5eraudio"] or ''), true))
end
end
end
end
end
if (args["tl"] or '') .. (args["tl2"] or '') .. (args["tl3"] or '') .. (args["2tl"] or '') .. (args["2tl2"] or '') .. (args["2tl3"] or '') ~= '' then
table.insert(text, ' ')
end
return table.concat(text)
end
local function add_audio(text, audio, pinyin)
if audio and audio ~= "" then
if audio == "y" then audio = format('zh-%s.ogg', pinyin) end
table.insert(text, '\n*:: [[File:')
table.insert(text, audio)
table.insert(text, ']]')
table.insert(text, '[[ကဏ္ဍ:အငေါဝ်းထန်ႏလိဉ့်တွမ်ႏမန်ဒရိဉ်းငေါဝ်းငွါဖုံႏ]]')
end
end
function export.make_audio(args)
local text, reading, pinyin = {}, {}, ""
local audio = {
args["a"] or args["audio"] or '',
args["2a"] or args["2audio"] or '',
args["3a"] or args["3audio"] or '',
args["4a"] or args["4audio"] or '',
args["5a"] or args["5audio"] or '',
}
for i=1, 5 do
reading[i] = args[i] or ''
if i == 1 then
pinyin = export.straitdiff(reading[1], 1, '')
else
pinyin = (reading ~= '') and reading[i] or export.straitdiff(reading[1], i, '')
end
pinyin = export.py_format(pinyin, false, false, true)
add_audio(text, audio[i], pinyin)
end
return table.concat(text)
end
function export.make_table(title, pinyin, py, cap, tl, tl2, tl3, a, novariety)
py = ine(py);cap = ine(cap);tl = ine(tl);tl2 = ine(tl2);tl3 = ine(tl3);a = ine(a);novariety = ine(novariety)
local text = {}
local pinyin_simple_fmt = export.py_format(pinyin, false, false, true)
if not novariety then
table.insert(text, '* [[w:en:Mandarin Chinese|မန်ဒရိဉ်း]]')
else
table.insert(text, '<br>')
end
table.insert(text, '\n** <small>' .. title .. '</small>')
local hom_found
if get_hom_data(pinyin_simple_fmt).list[lower(pinyin_simple_fmt)] then
hom_found = true
else
hom_found = false
table.insert(text, '<sup><small><abbr title="Add Mandarin homophones"><span class="plainlinks">[' .. tostring(mw.uri.fullUrl("Module:zh/data/cmn-hom/" .. hom_data_part(pinyin_simple_fmt), {["action"]="edit"})) .. ' +]</span></abbr></small></sup>')
end
table.insert(text, "\n*** <small>''[[w:Pinyin|Hanyu Pinyin]]''</small>: ")
local id = m_zh.ts_determ(mw.title.getCurrentTitle().text)
if id == 'trad' then
table.insert(text, '<span class="form-of pinyin-t-form-of transliteration-')
table.insert(text, m_zh.ts(mw.title.getCurrentTitle().text))
elseif id == 'simp' then
table.insert(text, '<span class="form-of pinyin-s-form-of transliteration-')
table.insert(text, m_zh.st(mw.title.getCurrentTitle().text))
else -- both
table.insert(text, '<span class="form-of pinyin-ts-form-of')
end
table.insert(text, '" lang="cmn" class="zhpron-monospace">')
if py then
table.insert(text, py)
else
if cap then
table.insert(text, export.py_format(pinyin, true, true))
else
table.insert(text, export.py_format(pinyin, false, true))
end
if tl or tl2 or tl3 then
table.insert(text, ' → ')
if tl then tl_pos = 1 elseif tl2 then tl_pos = 2 elseif tl3 then tl_pos = 3 end
if cap then
table.insert(text, export.make_tl(export.py_format(pinyin, true, false, true), tl_pos, true, true))
else
table.insert(text, export.make_tl(pinyin_simple_fmt, tl_pos, true))
end
end
if tl then table.insert(text, ' <small>(toneless final syllable variant)</small>')
elseif tl2 or tl3 then table.insert(text, ' <small>(toneless variant)</small>') end
end
table.insert(text, "</span>\n*** <small>''[[w:Zhuyin|Zhuyin]]''</small>: ")
table.insert(text, '<span lang="cmn-Bopo" class="Bopo">')
table.insert(text, export.py_zhuyin(pinyin_simple_fmt, true))
if tl or tl2 or tl3 then
table.insert(text, ' → ')
table.insert(text, export.py_zhuyin(export.make_tl(pinyin_simple_fmt, tl_pos, false), true))
end
table.insert(text, '</span>')
if tl then table.insert(text, ' <small>(toneless final syllable variant)</small>')
elseif tl2 or tl3 then table.insert(text, ' <small>(toneless variant)</small>') end
table.insert(text, "\n*** <small>''[[w:Tongyong Pinyin|Tongyong Pinyin]]''</small>: <span lang=\"cmn-Latn-tongyong\" class=\"zhpron-monospace\">")
if tl or tl2 or tl3 then
table.insert(text, export.py_tongyong(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt))
else
table.insert(text, export.py_tongyong(pinyin_simple_fmt))
end
table.insert(text, '</span>')
table.insert(text, "\n*** <small>''[[w:Wade–Giles|Wade–Giles]]''</small>: <span lang=\"cmn-Latn-wadegile\" class=\"zhpron-monospace\">")
if tl or tl2 or tl3 then
table.insert(text, export.py_wg(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt))
else
table.insert(text, export.py_wg(pinyin_simple_fmt))
end
table.insert(text, '</span>')
table.insert(text, "\n*** <small>''[[w:Yale romanization of Mandarin|Yale]]''</small>: <span lang=\"cmn-Latn\" class=\"zhpron-monospace\">")
if tl or tl2 or tl3 then
table.insert(text, export.py_yale(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt))
else
table.insert(text, export.py_yale(pinyin_simple_fmt))
end
table.insert(text, '</span>')
table.insert(text, "\n*** <small>''[[w:Gwoyeu Romatzyh|Gwoyeu Romatzyh]]''</small>: <span lang=\"cmn-Latn\" class=\"zhpron-monospace\">")
if tl or tl2 or tl3 then
table.insert(text, export.py_gwoyeu(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt))
else
table.insert(text, export.py_gwoyeu(pinyin_simple_fmt))
end
table.insert(text, '</span>')
table.insert(text, "\n*** <small>''[[w:Cyrillization of Chinese|Palladius]]''</small>: <span class=\"zhpron-monospace\"><span lang=\"cmn-Cyrl\">")
local palladius
if tl or tl2 or tl3 then
palladius = export.py_palladius(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt)
else
palladius = export.py_palladius(pinyin_simple_fmt)
end
table.insert(text, palladius)
table.insert(text, "</span> <span lang=\"cmn-Latn\">(")
table.insert(text, require("Module:ru-translit").tr(palladius, "cmn"))
table.insert(text, ")</span></span>")
table.insert(text, '\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[Appendix:Mandarin pronunciation|key]])</sup></small>: <span class="IPA">/')
table.insert(text, export.py_ipa(pinyin))
if tl or tl2 or tl3 then
table.insert(text, '/ → /')
table.insert(text, export.py_ipa(export.make_tl(pinyin_simple_fmt, tl_pos, false)))
end
table.insert(text, '/</span>')
-- if a then
-- if a == 'y' then a = 'zh-' .. pinyin_simple_fmt .. '.ogg' end
-- table.insert(text, '\n*** <div style="display:inline-block; position:relative; top:0.5em;">[[File:')
-- table.insert(text, a)
-- table.insert(text, ']]</div>[[ကဏ္ဍ:အငေါဝ်းထန်ႏလိဉ့်တွမ်ႏမန်ဒရိဉ်းငေါဝ်းငွါဖုံႏ]]')
-- end
if hom_found then
table.insert(text, "\n*** <small>Homophones</small>: " ..
'<table class="wikitable" style="width:15em;margin:0; position:left; text-align:center">' ..
'<tr><th class="mw-customtoggle-cmnhom" style="color:#3366bb">[Show/Hide]</th></tr>' ..
'<tr class="mw-collapsible mw-collapsed" id="mw-customcollapsible-cmnhom">' ..
'<td><sup><div style="float: right; clear: right;"><span class="plainlinks">[')
table.insert(text, tostring(mw.uri.fullUrl("Module:zh/data/cmn-hom/" .. hom_data_part(pinyin_simple_fmt), {["action"]="edit"})))
table.insert(text, ' edit]</span></div></sup>')
table.insert(text, export.homophones(lower(pinyin_simple_fmt)))
table.insert(text, '</td></tr></table>')
end
return table.concat(text)
end
function export.py_headword(frame)
local params = {
["head"] = true,
["zhuyin"] = true,
["notr"] = {type = "boolean"},
}
local args = require("Module:parameters").process(frame:getParent().args, params, nil, "cmn-pron", "py_headword")
local head = args.head or mw.title.getCurrentTitle().text
local head_simple = require("Module:links").remove_links(head)
local Latn = require("Module:scripts").getByCode("Latn")
local categories = {"ဟန်ယု ပိဉ်ယိဉ်း", "မန်ဒရိဉ်းငဝ်းတဲႏတမွေးတဝ်း ဝေါဟာရဖုံႏ"}
local inflections = {}
if head:find("[0-5]") then
table.insert(categories, "Hanyu Pinyin with tone numbers")
head = head:gsub("%d", sup)
elseif not args.notr then
local py_detoned = export.py_transform(head, true)
if not py_detoned:find("%s") then
if py_detoned:find("5") then
py_detoned = py_detoned .. "//" .. py_detoned:gsub("5", "0")
end
py_detoned = py_detoned:gsub("%d", sup)
table.insert(inflections, {py_detoned, sc = Latn})
end
end
if not args.notr then
local Bopo = require("Module:scripts").getByCode("Bopo")
head_simple = export.py_number_to_mark(head_simple)
table.insert(inflections, {
label = "[[Zhuyin fuhao|Zhuyin]]",
{
term = args.zhuyin or export.py_zhuyin(head_simple),
sc = Bopo,
nolink = true
}
})
end
-- Don't pass a redundant head value, because they get categorised as redundant.
if head == mw.title.getCurrentTitle().text then
head = nil
end
return require("Module:headword").full_headword{lang = cmn, sc = Latn, heads = {head}, inflections = inflections, pos_category = "pinyin", categories = categories, noposcat = true}
end
return export
bq9jsbwjauk1cjh6ml8i11sjrb458xk
ကဏ္ဍ:ဂန်ဟန်သီဖုံႏ
14
5587
12787
2025-06-29T13:55:51Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:ဂန်ဘာႏသာႏငဝ်းငွါ]]"
12787
wikitext
text/x-wiki
[[ကဏ္ဍ:ဂန်ဘာႏသာႏငဝ်းငွါ]]
f73lv9i57fjmr0dqysw051h7pft0yrd
ကဏ္ဍ:ဟက်ကာဟန်သီဖုံႏ
14
5588
12788
2025-06-29T13:58:41Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:ဟက်ကာဘာႏသာႏငဝ်းငွါ]]"
12788
wikitext
text/x-wiki
[[ကဏ္ဍ:ဟက်ကာဘာႏသာႏငဝ်းငွါ]]
e9xmmf6uvl0u9yyhfpjdzxkf0iyphna
ကဏ္ဍ:သီဆွင်ဟန်သီဖုံႏ
14
5589
12789
2025-06-29T14:02:11Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:သီဆွင်ဘာႏသာႏငဝ်းငွါ]]"
12789
wikitext
text/x-wiki
[[ကဏ္ဍ:သီဆွင်ဘာႏသာႏငဝ်းငွါ]]
lo6ccq2ddbi942bw1nvt8hlnz4ltv7e
ကဏ္ဍ:သျင်ဟန်သီဖုံႏ
14
5590
12790
2025-06-29T14:28:47Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:သျင်ဘာႏသာႏငဝ်းငွါ]]"
12790
wikitext
text/x-wiki
[[ကဏ္ဍ:သျင်ဘာႏသာႏငဝ်းငွါ]]
mzgmur0fgvzw2r58ix01d952bj6grjo
ကဏ္ဍ:ဝူဟန်သီဖုံႏ
14
5591
12791
2025-06-29T14:30:43Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:ဝူဘာႏသာႏငဝ်းငွါ]]"
12791
wikitext
text/x-wiki
[[ကဏ္ဍ:ဝူဘာႏသာႏငဝ်းငွါ]]
7qs4alshw3m2w738pgeuijka9925g5h
ကဏ္ဍ:ဟောက်ခိအဲဉ်းဟန်သီဖုံႏ
14
5592
12792
2025-06-29T14:32:31Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:ဟောက်ခိအဲဉ်းဘာႏသာႏငဝ်းငွါ]]"
12792
wikitext
text/x-wiki
[[ကဏ္ဍ:ဟောက်ခိအဲဉ်းဘာႏသာႏငဝ်းငွါ]]
p5fevqqu7oapinf6v9fgzevkzxpfh98
ကဏ္ဍ:မိဉ်ခဝ်ကွဉ်ႏဟန်သီဖုံႏ
14
5593
12793
2025-06-29T14:34:14Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:မိဉ်ခဝ်ကွဉ်ႏဘာႏသာႏငဝ်းငွါ]]"
12793
wikitext
text/x-wiki
[[ကဏ္ဍ:မိဉ်ခဝ်ကွဉ်ႏဘာႏသာႏငဝ်းငွါ]]
jwwy01d5ev7o1l1e9zep2h949kj9wp0
ကဏ္ဍ:စိဉ်ဟန်သီဖုံႏ
14
5594
12794
2025-06-29T14:36:19Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:စိဉ်ဘာႏသာႏငဝ်းငွါ]]"
12794
wikitext
text/x-wiki
[[ကဏ္ဍ:စိဉ်ဘာႏသာႏငဝ်းငွါ]]
f7gy6ited4zh2vvh7dd1839awfv84rx
ကဏ္ဍ:ဒုန်ဂန်ဟန်သီဖုံႏ
14
5595
12795
2025-06-29T14:38:09Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:ဒုန်ဂန်ဘာႏသာႏငဝ်းငွါ]]"
12795
wikitext
text/x-wiki
[[ကဏ္ဍ:ဒုန်ဂန်ဘာႏသာႏငဝ်းငွါ]]
qjqz1q1ydld54j0udbi9osnmg8otr04
ကဏ္ဍ:တုဲင်းသျန်ဟန်သီဖုံႏ
14
5596
12796
2025-06-29T14:39:55Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:တုဲင်းသျန်ဘာႏသာႏငဝ်းငွါ]]"
12796
wikitext
text/x-wiki
[[ကဏ္ဍ:တုဲင်းသျန်ဘာႏသာႏငဝ်းငွါ]]
s9buiruv7w9tpar6whj91eupgswdxyo
ကဏ္ဍ:ကန်တုံဟန်သီဖုံႏ
14
5597
12797
2025-06-29T14:41:34Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:ကန်တုံဘာႏသာႏငဝ်းငွါ]]"
12797
wikitext
text/x-wiki
[[ကဏ္ဍ:ကန်တုံဘာႏသာႏငဝ်းငွါ]]
2zs6ccr6u4o0yo3ubgewwdkdq0zmmgm
圓桌
0
5598
12800
2025-06-29T15:13:30Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "{{also|円卓}} ==ခယ်ႏ== {{zh-forms|s=圆桌}} ===အငေါဝ်းထန်ႏ=== {{zh-pron |m=yuánzhuō |m-s=yuan2zo2 |c=jyun4 coek3 |g='yon4 zoh6 |h=pfs=yèn-chok;gd=yan2 zog5 |j=ye1 zuah4 |mb=ǔing-dŏ̤ |md=ièng-dó̤h |mn=xm,tw:îⁿ-toh |x=yenn2 zo6 |cat=n }} ===နာမ်ႏ=== {{head|zh|noun}} # [[ဒဲဉ်ခွုံႏဝဲင်ꩻ]]။ ===နပ်တွက်ဗျာ..."
12800
wikitext
text/x-wiki
{{also|円卓}}
==ခယ်ႏ==
{{zh-forms|s=圆桌}}
===အငေါဝ်းထန်ႏ===
{{zh-pron
|m=yuánzhuō
|m-s=yuan2zo2
|c=jyun4 coek3
|g='yon4 zoh6
|h=pfs=yèn-chok;gd=yan2 zog5
|j=ye1 zuah4
|mb=ǔing-dŏ̤
|md=ièng-dó̤h
|mn=xm,tw:îⁿ-toh
|x=yenn2 zo6
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
# [[ဒဲဉ်ခွုံႏဝဲင်ꩻ]]။
===နပ်တွက်ဗျာႏ===
* ဝဲင်ꩻ။
1t3kqafkl6cx71oaayvsi0zntcucr6d
yuánzhuō
0
5599
12803
2025-06-29T15:46:01Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "==မန်ဒရိဉ်း== ===Romanization=== {{cmn-pinyin}} # {{cmn-pinyin of|圓桌}}"
12803
wikitext
text/x-wiki
==မန်ဒရိဉ်း==
===Romanization===
{{cmn-pinyin}}
# {{cmn-pinyin of|圓桌}}
8kwbe7fcvmqoxr6bvfs6sqf92u9bkcs
12808
12803
2025-06-29T15:54:39Z
咽頭べさ
11
12808
wikitext
text/x-wiki
==မန်ဒရိဉ်း==
===လုဲင်ႏတွမ်ႏရောမအက္ခရာႏ===
{{cmn-pinyin}}
# {{cmn-pinyin of|圓桌}}
jkh4wuhlycenmhszo7htn4pan2fq3du
တမ်းပလေက်:cmn-pinyin
10
5600
12804
2025-06-29T15:46:29Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "<includeonly>{{#invoke:cmn-pron|py_headword}}</includeonly><!-- --><noinclude>{{documentation}}</noinclude>"
12804
wikitext
text/x-wiki
<includeonly>{{#invoke:cmn-pron|py_headword}}</includeonly><!--
--><noinclude>{{documentation}}</noinclude>
ecvjvmfmlsl5lkdjqzmfswc11ilig7g
တမ်းပလေက်:cmn-pinyin of
10
5601
12805
2025-06-29T15:50:06Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "<span class="use-with-mention"><!-- -->Hanyu Pinyin reading of <!-- ====Chinese characters==== -->{{m|zh|sc={{{sc1|{{{sc|}}}}}}|{{{1<includeonly>|</includeonly>}}}|tr=-}}<!-- -->{{#if:{{{2|}}}|, {{m|zh|sc={{{sc2|{{{sc|}}}}}}|{{{2}}}|tr=-}}}}<!-- -->{{#if:{{{3|}}}|, {{m|zh|sc={{{sc3|{{{sc|}}}}}}|{{{3}}}|tr=-}}}}<!-- -->{{#if:{{{4|}}}|, {{m|zh|sc={{{sc4|{{{sc|}}}}}}|{{{4}}}|tr=-}}}}<!-- -->{{#if:{{{5|}}}|,..."
12805
wikitext
text/x-wiki
<span class="use-with-mention"><!--
-->Hanyu Pinyin reading of <!--
====Chinese characters====
-->{{m|zh|sc={{{sc1|{{{sc|}}}}}}|{{{1<includeonly>|</includeonly>}}}|tr=-}}<!--
-->{{#if:{{{2|}}}|, {{m|zh|sc={{{sc2|{{{sc|}}}}}}|{{{2}}}|tr=-}}}}<!--
-->{{#if:{{{3|}}}|, {{m|zh|sc={{{sc3|{{{sc|}}}}}}|{{{3}}}|tr=-}}}}<!--
-->{{#if:{{{4|}}}|, {{m|zh|sc={{{sc4|{{{sc|}}}}}}|{{{4}}}|tr=-}}}}<!--
-->{{#if:{{{5|}}}|, {{m|zh|sc={{{sc5|{{{sc|}}}}}}|{{{5}}}|tr=-}}}}<!--
-->{{#if:{{{6|}}}|, {{m|zh|sc={{{sc6|{{{sc|}}}}}}|{{{6}}}|tr=-}}}}<!--
-->{{#if:{{{7|}}}|, {{m|zh|sc={{{sc7|{{{sc|}}}}}}|{{{7}}}|tr=-}}}}<!--
-->{{#if:{{{8|}}}|, {{m|zh|sc={{{sc8|{{{sc|}}}}}}|{{{8}}}|tr=-}}}}<!--
-->{{#if:{{{9|}}}|, {{m|zh|sc={{{sc9|{{{sc|}}}}}}|{{{9}}}|tr=-}}}}<!--
-->{{#if:{{{10|}}}|, {{m|zh|sc={{{sc10|{{{sc|}}}}}}|{{{10}}}|tr=-}}}}<!--
--></span><!--
====Categories and checks====
-->{{#if:{{{attn|}}}| }}<!--
-->{{#if:{{{1|}}}|{{#ifexist:{{{1|}}}|| }}}}<!--
-->{{#if:{{{2|}}}|{{#ifexist:{{{2|}}}|| }}}}<!--
-->{{#if:{{{3|}}}|{{#ifexist:{{{3|}}}|| }}}}<!--
-->{{#if:{{{4|}}}|{{#ifexist:{{{4|}}}|| }}}}<!--
-->{{#if:{{{5|}}}|{{#ifexist:{{{5|}}}|| }}}}<!--
-->{{#if:{{{6|}}}|{{#ifexist:{{{6|}}}|| }}}}<!--
-->{{#if:{{{7|}}}|{{#ifexist:{{{7|}}}|| }}}}<!--
-->{{#if:{{{8|}}}|{{#ifexist:{{{8|}}}|| }}}}<!--
-->{{#if:{{{9|}}}|{{#ifexist:{{{9|}}}|| }}}}<!--
-->{{#if:{{{10|}}}|{{#ifexist:{{{10|}}}|| }}}}<!--
--><noinclude>{{documentation}}</noinclude>
pj2hyne8zzdywkdehnowm08udbxreim
ကဏ္ဍ:ဟန်ယု ပိဉ်ယိဉ်း
14
5602
12806
2025-06-29T15:51:28Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:မန်ဒရိဉ်းဘာႏသာႏငဝ်းငွါ]]"
12806
wikitext
text/x-wiki
[[ကဏ္ဍ:မန်ဒရိဉ်းဘာႏသာႏငဝ်းငွါ]]
a3x2y9elcay161tpcepxe8xxeom5zax
ကဏ္ဍ:မန်ဒရိဉ်းငဝ်းတဲႏတမွေးတဝ်း ဝေါဟာရဖုံႏ
14
5603
12807
2025-06-29T15:52:32Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:မန်ဒရိဉ်းဘာႏသာႏငဝ်းငွါ]]"
12807
wikitext
text/x-wiki
[[ကဏ္ဍ:မန်ဒရိဉ်းဘာႏသာႏငဝ်းငွါ]]
a3x2y9elcay161tpcepxe8xxeom5zax
ကဏ္ဍ:ပုဆီအန်းမိဉ်ဟန်သီဖုံႏ
14
5604
12811
2025-06-29T16:06:29Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:ပုဆီအန်းမိဉ်ဘာႏသာႏငဝ်းငွါ]]"
12811
wikitext
text/x-wiki
[[ကဏ္ဍ:ပုဆီအန်းမိဉ်ဘာႏသာႏငဝ်းငွါ]]
pfp9c8rtrsaf22rjyh0cfnkl746csm1
ကဏ္ဍ:မိဉ်ဒုံခဝ်ကွဉ်ႏဟန်သီဖုံႏ
14
5605
12812
2025-06-29T16:09:18Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:မိဉ်ဒုံခဝ်ကွဉ်ႏဘာႏသာႏငဝ်းငွါ]]"
12812
wikitext
text/x-wiki
[[ကဏ္ဍ:မိဉ်ဒုံခဝ်ကွဉ်ႏဘာႏသာႏငဝ်းငွါ]]
nd4m8azs9rflp3ctpwn50ofwymmufmz
ကဏ္ဍ:တဝ်းဆွေးဟန်သီဖုံႏ
14
5606
12813
2025-06-29T16:10:44Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "[[ကဏ္ဍ:တဝ်းဆွေးဘာႏသာႏငဝ်းငွါ]]"
12813
wikitext
text/x-wiki
[[ကဏ္ဍ:တဝ်းဆွေးဘာႏသာႏငဝ်းငွါ]]
tn19g2ezqscslpcekuuraxx511rvae2
မော်ဂျူး:luh-pron
828
5607
12815
2025-06-29T16:21:26Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "local export = {} local m_string_utils = require("Module:string utilities") local find = m_string_utils.find local match = m_string_utils.match local split = mw.text.split local gsplit = mw.text.gsplit local gsub = m_string_utils.gsub local initial_ipa = { ["b"] = "p", ["p"] = "pʰ", ["m"] = "m", ["bh"] = "b", ["d"] = "t", ["t"] = "tʰ", ["n"] = "n", ["l"] = "l", ["g"] = "k", ["k"] = "kʰ", ["ng"] = "..."
12815
Scribunto
text/plain
local export = {}
local m_string_utils = require("Module:string utilities")
local find = m_string_utils.find
local match = m_string_utils.match
local split = mw.text.split
local gsplit = mw.text.gsplit
local gsub = m_string_utils.gsub
local initial_ipa = {
["b"] = "p", ["p"] = "pʰ", ["m"] = "m", ["bh"] = "b",
["d"] = "t", ["t"] = "tʰ", ["n"] = "n", ["l"] = "l",
["g"] = "k", ["k"] = "kʰ", ["ng"] = "ŋ", ["h"] = "h",
["j"] = "t͡s", ["q"] = "t͡sʰ", ["x"] = "s", ["y"] = "z",
["z"] = "t͡s", ["c"] = "t͡sʰ", ["s"] = "s",
[""] = ""
}
local final_ipa = {
["i"] = "i", ["u"] = "u",
["a"] = "a", ["ia"] = "ia", ["ua"] = "ua",
["o"] = "ɔ", ["io"] = "iɔ",
["e"] = "ɛ", ["ie"] = "iɛ", ["ue"] = "uɛ",
["ai"] = "ai", ["uai"] = "uai",
["ao"] = "au", ["iao"] = "iau",
["eu"] = "ɛu", ["iu"] = "iu",
["oi"] = "ɔi", ["ui"] = "ui",
["am"] = "am", ["iam"] = "iam", ["m"] = "m̩",
["em"] = "em", ["im"] = "im",
["ang"] = "aŋ", ["iang"] = "iaŋ", ["uang"] = "uaŋ",
["eng"] = "eŋ", ["ieng"] = "ieŋ", ["ng"] = "ŋ̍",
["ong"] = "ɔŋ", ["iong"] = "iɔŋ",
["ing"] = "iŋ", ["ung"] = "uŋ",
["ab"] = "ap̚", ["iab"] = "iap̚",
["eb"] = "ep̚", ["ib"] = "ip̚",
["ag"] = "ak̚", ["iag"] = "iak̚", ["uag"] = "uak̚",
["eg"] = "ek̚", ["ieg"] = "iek̚", ["ueg"] = "uek̚",
["ig"] = "ik̚", ["ug"] = "uk̚",
["og"] = "ɔk̚", ["iog"] = "iɔk̚",
}
local tone_chao = {
["1"] = "³⁵", ["2"] = "³¹", ["3"] = "²¹", ["4"] = "⁵",
["5"] = "²²", ["6"] = "³³", ["7"] = "⁵⁵", ["8"] = "²"
}
-- find the sandhied tone of the first syllable in a two-syllable word
-- returns nil if the tone of the first syllable does not change
local function tone_sandhi(tone1, tone2)
if tone1 == "1" then
return "6"
elseif (tone1 == "2" and match(tone2, "[1256]")) or (tone1 == "3" and match(tone2, "[123568]")) then
return "7"
end
end
-- convert Leizhounese Pinyin to IPA
function export.ipa(text)
if type(text) == "table" then
text = text.args[1]
end
local result = {}
for word in gsplit(text, "/") do
local syllables = split(word, " ")
local initial, final, tone, block, sandhi, ipa = {}, {}, {}, {}, {}, {}
for i, syllable in ipairs(syllables) do
initial[i], final[i], tone[i], block[i] = match(syllable, "^([bpmdtnlgkhjqxyzcs]?[hg]?)([aeiou][aeioumnbg]?[iomnbg]?g?)([1-8])(#?)$")
-- check z/c/s vs. j/q/x
if (find(initial[i], "^[zcs]$") and find(final[i], "^i")) or (find(initial[i], "^[jqx]$") and find(final[i], "^[aeou]")) then
error("Invalid Leizhou pinyin input \"" .. syllable .. "\": initial " .. initial[i] .. " cannot go with final " .. final[i] .. ".")
end
-- check checked tones
if (find(final[i], "[^n][bdg]$") and find(tone[i], "^[^48]$")) or ((find(final[i], "[^bdg]$") or find(final[i], "ng$")) and find(tone[i], "^[48]$")) then
error("Invalid Leizhou pinyin input \"" .. syllable .. "\": final " .. final[i] .. " cannot go with tone " .. tone[i] .. ".")
end
end
for i=1,#syllables,1 do
if i+1 <= #syllables and block[i] ~= "#" then
sandhi[i] = tone_sandhi(tone[i], tone[i+1])
end
end
for i=1,#syllables,1 do
actual_tone = tone_chao[tone[i]] .. (sandhi[i] and "⁻" .. tone_chao[sandhi[i]] or "")
ipa[i] = initial_ipa[initial[i]] .. final_ipa[final[i]] .. actual_tone
end
table.insert(result, table.concat(ipa, " "))
end
return "/" .. table.concat(result, "/, /") .. "/"
end
function export.rom(text)
text = gsub(text, "/", " / ")
text = gsub(text, '([1-9-]+)', '<sup>%1</sup>')
text = gsub(text, '#', '')
return text
end
return export
3sycoski739xda72sga1hftp3s6bk4r
မော်ဂျူး:csp-pron
828
5608
12816
2025-06-29T16:23:26Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "-- This module is for 南寧平話 (Nanning Pinghua) -- Not to be confused with 南寧白話, which is more like Cantonese -- Representative variety: 亭子 -- Romanisation: Jyutping++ (referred to as jpp below) -- References: -- 1. 南宁平话词典 by 覃远雄 et al. (1997) -- 2. https://leimaau.github.io/book/PHONETICIZE_bingwaa.html -- 3. 广西通志·汉语方言志 (1998) -- Also see [[Category:Nan..."
12816
Scribunto
text/plain
-- This module is for 南寧平話 (Nanning Pinghua)
-- Not to be confused with 南寧白話, which is more like Cantonese
-- Representative variety: 亭子
-- Romanisation: Jyutping++ (referred to as jpp below)
-- References:
-- 1. 南宁平话词典 by 覃远雄 et al. (1997)
-- 2. https://leimaau.github.io/book/PHONETICIZE_bingwaa.html
-- 3. 广西通志·汉语方言志 (1998)
-- Also see [[Category:Nanning Pinghua]]
local export = {}
local initials = {
b = "p", p = "pʰ", m = "m", f = "f", w = "β",
d = "t", t = "tʰ", n = "n", l = "l",
z = "t͡s", c = "t͡sʰ", nj = "ɲ", s = "s", sl = "ɬ", j = "j",
g = "k", k = "kʰ", ng = "ŋ", h = "h",
gw = "kʷ", kw = "kʰʷ",
[""] = "", -- glottal stop?
}
-- Notes:
-- iang="iɐŋ", iak="iɐk̚" in the same row as <e>
-- ing="ɪŋ", ik="ɪk̚" in the same row as <i>
-- ung="ʊŋ", uk="ʊk̚" in the same row as <u>
local finals = {
aa="a", aai="ai", aau="au", aam="am", aan="an", aang="aŋ", aap="ap̚", aat="at̚", aak="ak̚",
ai="əi", au="əu", am="əm", an="ən", ang="əŋ", ap="əp̚", at="ət̚", ak="ək̚",
e="e", eu="eu", em="em", en="en", iang="iɐŋ", ep="ep̚", et="et̚", iak="iɐk̚",
o="o", on="on", ot="ot̚",
i="i", iu="iu",im="im",["in"]="in", ing="ɪŋ", ip="ip̚", it="it̚", ik="ɪk̚",
u="u", ui="ui", un="un", ung="ʊŋ", ut="ut̚", uk="ʊk̚",
yu="y", yun="yn", yut="yt̚",
oe="ø", oeng="øŋ", oek="øk̚",
}
local syllabics = {
ng = "ŋ̍"
}
local tones = {
["1"] = "⁵³", -- 陰平(詩)
["2"] = "³³", -- 陰上(屎) / 下陰入(得)
["3"] = "⁵⁵", -- 陰去(世) / 上陰入(粒)
["4"] = "²¹", -- 陽平(時)
["5"] = "²⁴", -- 陽上(市) / 上陽入(劣)
["6"] = "²²", -- 陽去(是) / 下陽入(絕)
}
function export.jpp_to_ipa(text)
text = text:gsub(", "," ")
if text:find("^ ") or text:find(" $") or text:find(" ,") or text:find(",,") or text:find(" ") then
error("Empty syllable detected.")
end
return "/" .. text:gsub("[^ ,]+", function(syllable_tone)
syl, tone = syllable_tone:match("^(%w+)([1-6])$")
if not syl then
error("Invalid syllable: " .. syllable_tone)
end
tone = tones[tone]
if syllabics[syl] then
return syllabics[syl] .. tone
end
initial, final = syl:match("^([bpmfwdtnlzcjsgkh]*)([aeiouy]+[mnptk]?g?)$")
if not initial then
error("Invalid syllable: " .. syllable_tone)
end
return (initials[initial] or error("Invalid initial: " .. syllable_tone))
.. (finals[final] or error("Invalid final: " .. syllable_tone))
.. tone
end):gsub(",","/, /") .. "/"
end
return export
k1swq7tutups7mcetvefaoqfucasb4p
မော်ဂျူး:Unicode data/images/005
828
5609
12817
2025-06-29T16:35:30Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "return { [ 0x5036 ] = "U5036.svg", [ 0x5109 ] = "儉.svg", [ 0x5143 ] = "Gw u5143.svg", [ 0x5145 ] = "U5145.svg", [ 0x5178 ] = "Gw u5178.svg", [ 0x5186 ] = "0x5186 円.svg", [ 0x51B5 ] = "U51b5.svg", [ 0x5265 ] = "U5265.svg", [ 0x53F1 ] = "U53f1.svg", [ 0x540F ] = "U540f.svg", [ 0x541D ] = "U541df.svg", [ 0x5451 ] = "U5451.svg", [ 0x5516 ] = "U5516.svg", [ 0x5555 ] = "U5555.svg", [ 0x5599 ] =..."
12817
Scribunto
text/plain
return {
[ 0x5036 ] = "U5036.svg",
[ 0x5109 ] = "儉.svg",
[ 0x5143 ] = "Gw u5143.svg",
[ 0x5145 ] = "U5145.svg",
[ 0x5178 ] = "Gw u5178.svg",
[ 0x5186 ] = "0x5186 円.svg",
[ 0x51B5 ] = "U51b5.svg",
[ 0x5265 ] = "U5265.svg",
[ 0x53F1 ] = "U53f1.svg",
[ 0x540F ] = "U540f.svg",
[ 0x541D ] = "U541df.svg",
[ 0x5451 ] = "U5451.svg",
[ 0x5516 ] = "U5516.svg",
[ 0x5555 ] = "U5555.svg",
[ 0x5599 ] = "U5599.svg",
[ 0x55E2 ] = "U55e2.svg",
[ 0x5618 ] = "U5618.svg",
[ 0x565B ] = "U565b.svg",
[ 0x56A2 ] = "U56a2.svg",
[ 0x56CD ] = "U56cd.svg",
[ 0x56DD ] = "U56dd.svg",
[ 0x5700 ] = "U5700.svg",
[ 0x570B ] = "Gw u570b.svg",
[ 0x5728 ] = "Gw u5728.svg",
[ 0x57CA ] = "U57ca.svg",
[ 0x586B ] = "U586b.svg",
[ 0x58B3 ] = "U58b3.svg",
[ 0x58C4 ] = "U58c4.svg",
[ 0x58F7 ] = "U58f7.svg",
[ 0x5944 ] = "U5944.svg",
[ 0x598D ] = "U598d.svg",
[ 0x5A62 ] = "U5a62.svg",
[ 0x5B50 ] = "Gw u5b50.svg",
[ 0x5B78 ] = "Gw u5b78.svg",
[ 0x5C0F ] = "小.svg",
[ 0x5C2D ] = "U5c2d.svg",
[ 0x5C4F ] = "U5c4f.svg",
[ 0x5C61 ] = "U5c61.svg",
[ 0x5E50 ] = "U5e50.svg",
[ 0x5E76 ] = "U5e76.svg",
[ 0x5EC9 ] = "U5ec9.svg",
[ 0x5F92 ] = "Gw u5f92.svg",
}
jew3jz0q5wvoaun4b4itq9xuj0675ze
免许
0
5610
12820
2025-06-29T16:42:14Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "{{also|免許}} ==ခယ်ႏ== {{zh-see|免許}}"
12820
wikitext
text/x-wiki
{{also|免許}}
==ခယ်ႏ==
{{zh-see|免許}}
cttgbq2awcos5ncbp8u9bzbn5duwkvr
傢具
0
5611
12823
2025-06-29T16:52:58Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "{{also|傢俱|家俱|家具}} ==ခယ်ႏ== {{zh-see|家具|v}}"
12823
wikitext
text/x-wiki
{{also|傢俱|家俱|家具}}
==ခယ်ႏ==
{{zh-see|家具|v}}
ey3fazpz4a6ee8sdos7tbfh4mggnta2
家俱
0
5612
12824
2025-06-29T16:53:51Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "{{also|家具|傢俱|傢具}} ==ခယ်ႏ== {{zh-see|家具|v}}"
12824
wikitext
text/x-wiki
{{also|家具|傢俱|傢具}}
==ခယ်ႏ==
{{zh-see|家具|v}}
jxzjvwn58bcz0ix8vzo0m9g6esz1xeg
傢俱
0
5613
12825
2025-06-29T16:54:44Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "{{also|傢具|家具|家俱}} ==ခယ်ႏ== {{zh-see|家具|v}}"
12825
wikitext
text/x-wiki
{{also|傢具|家具|家俱}}
==ခယ်ႏ==
{{zh-see|家具|v}}
4m5hpg28cbxrxivtaoh3x8y8t3xxmzt
語言
0
5614
12828
2025-06-29T17:05:15Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "{{also|语言}} ==ခယ်ႏ== {{zh-forms|s=语言}} {{zh-wp|zh|yue|lzh|gan|hak:Ngî-ngièn|cdo:Ngṳ̄-ngiòng|nan:Giân-gú|wuu}} ===အငေါဝ်းထန်ႏ=== {{zh-pron |m=yǔyán |dg=йү2ян1 |c=jyu5 jin4 |c-t=ngui4 ngun3 |h=pfs=ngî-ngièn;hrs=h:ngiˋ ngien;gd=ngi1 ngian2 |mb=ngṳ̌-ngṳ̂ing |md=ngṳ̄-ngiòng |mn=xm,tp:gú-giân/qz,km:gír-giân/zz:gí-gân/kh,jj,ph:gí-giân |mn-t=..."
12828
wikitext
text/x-wiki
{{also|语言}}
==ခယ်ႏ==
{{zh-forms|s=语言}}
{{zh-wp|zh|yue|lzh|gan|hak:Ngî-ngièn|cdo:Ngṳ̄-ngiòng|nan:Giân-gú|wuu}}
===အငေါဝ်းထန်ႏ===
{{zh-pron
|m=yǔyán
|dg=йү2ян1
|c=jyu5 jin4
|c-t=ngui4 ngun3
|h=pfs=ngî-ngièn;hrs=h:ngiˋ ngien;gd=ngi1 ngian2
|mb=ngṳ̌-ngṳ̂ing
|md=ngṳ̄-ngiòng
|mn=xm,tp:gú-giân/qz,km:gír-giân/zz:gí-gân/kh,jj,ph:gí-giân
|mn-t=ghe2 ngang5
|w=sh:6gniu yi
|mc=1,1
|oc=1,1;3,1
|ma=y
|cat=n
}}
===နာမ်ႏ===
{{zh-noun}}
# [[ဘာႏသာႏငေါဝ်းငွါ]]။
cd8c7o0etfxwzbc6mpuo0y2eu664g4f
牛車
0
5615
12834
2025-06-29T17:26:44Z
咽頭べさ
11
ဖန်ဆင်ꩻလဲဉ်းလိတ်မဲ့ငါ တောမ်ႏ "{{also|牛车}} ==ခယ်ႏ== {{zh-forms|s=牛车}} [[ဖုဲင်:A bullock cart.JPG|thumb|ဖိုးလေားပုင်ႏ]] ===အငဝ်းထန်ႏ=== {{zh-pron |m=niúchē |c=ngau4 ce1 |mn=gû-chhia |cat=n }} ===နာမ်ႏ=== {{head|zh|noun}} # ဖိုးလေား # ထိုမ်းလွေꩻသဲင်ꩻအီတာႏ တောမ်ႏ ဒင်ႏအီတခ..."
12834
wikitext
text/x-wiki
{{also|牛车}}
==ခယ်ႏ==
{{zh-forms|s=牛车}}
[[ဖုဲင်:A bullock cart.JPG|thumb|ဖိုးလေားပုင်ႏ]]
===အငဝ်းထန်ႏ===
{{zh-pron
|m=niúchē
|c=ngau4 ce1
|mn=gû-chhia
|cat=n
}}
===နာမ်ႏ===
{{head|zh|noun}}
# ဖိုးလေား
# ထိုမ်းလွေꩻသဲင်ꩻအီတာႏ တောမ်ႏ ဒင်ႏအီတခြိုꩻအမျိုꩻမျိုꩻတာႏ ဝင်ꩻကအွဉ်ႏတွူႏနေးဒါႏဖိုးနဝ်ꩻ ဝင်ꩻဟဲ့ꩻဖိုးလေားသွူ။
====သွုံꩻပွုံႏသွုံꩻနယ်ꩻ====
# နီဖါဝါးတောမ်ႏဖိုးလော လွေꩻဒင်ႏစောဝ်းလဲဉ်းသိုႏ။
# နီထိုမ်းလွေꩻဖိုးလော တထွူးပေႏဒျာႏထာꩻ တဖူꩻတလီးလွုမ်းနေးစွဉ်ႏ။
====နပ်တွက်ဗျာႏ====
* ဆွိုင်ꩻ
<gallery>
A bullock cart1.ogv
A bullock cart.ogv
</gallery>
ohvy8hnhptmap42dwtbmb1q1yssxt0z