Wiksiyonaryo tlwiktionary https://tl.wiktionary.org/wiki/Wiksiyonaryo:Unang_Pahina MediaWiki 1.47.0-wmf.16 case-sensitive Midya Natatangi Usapan Tagagamit Usapang tagagamit Wiksiyonaryo Usapang Wiksiyonaryo Talaksan Usapang talaksan MediaWiki Usapang MediaWiki Padron Usapang padron Tulong Usapang tulong Kategorya Usapang kategorya TimedText TimedText talk Module Module talk Event Event talk hidrógeno 0 2461 177361 149244 2026-08-25T03:19:06Z Hiyuune 5522 177361 wikitext text/x-wiki {{also|hidrogeno|hidrogenó}} =={{=es=}}== ===Pagbigkas=== {{es-pr|+<audio:LL-Q1321 (spa)-Millars-hidrógeno.wav<a:Espanya>>}} ===Pangngalan=== {{es-noun|m}} # [[idroheno]] ====Katawagang hinango==== {{col|es |bomba de hidrógeno |hidrogenar |peróxido de hidrógeno}} ====Salitang inapo==== * {{desc|tl|idroheno|bor=1}} ===Basahin pa=== * {{R:es:DRAE}} * {{pedia|lang=es}} 59guzvda2itn8pv8lcnneokzvpigpnd amortisasyon 0 4061 177358 177087 2026-08-25T03:08:39Z Hiyuune 5522 177358 wikitext text/x-wiki =={{=tl=}}== ===Etimolohiya=== {{ety|tl|:bor|es:amortización|text=+|tree=1}} ===Pagbigkas=== {{tl-pr|amortisasyón}} ===Pangngalan=== {{tl-noun|amortisasyón|b=+}} # Paraan ng pagbabayad na ibinahagi sa loob ng isang sukat ng panahon. ===Mga salin=== {{trans|binahaging pagbabayad| * Ingles: [[amortization]] }} 4vuu2pock5ucak03jz4zhwi16f35qe7 Padron:eo-head 10 4847 177393 14644 2026-08-25T07:59:53Z Yivan000 4078 Inilipat ni Yivan000 ang pahinang [[Padron:eo-noun]] sa [[Padron:eo-head]] 14644 wikitext text/x-wiki <includeonly>[[Kaurian:Mga pangngalang Esperanto]]</includeonly>'''{{PAGENAME}}''' (''maramihan'' [[{{PAGENAME}}j]]; ''palayon'' [[{{PAGENAME}}n]]; ''maramihang palayon'' [[{{PAGENAME}}jn]])<noinclude> <!--[[Category:Esperanto inflection templates|Noun]]--> </noinclude> st5bt3z5iyp5x2pc03w659mpbzfzs9g 177395 177393 2026-08-25T08:00:14Z Yivan000 4078 enwikt parity 177395 wikitext text/x-wiki {{#invoke:eo-headword|show}}<!-- --><noinclude>{{documentation}}</noinclude> 660iv542weh10e7kb1mtpexxiwmipvd 百科 0 5207 177384 168182 2026-08-25T07:31:26Z Yivan000 4078 177384 wikitext text/x-wiki =={{=zh=}}== {{zh-forms}} ===Pagbikgas=== {{zh-pron |m=bǎikē |m-s=be2ko1 |c=baak3 fo1 |mn=pah-kho |w=sh:7paq khu |cat=n }} ===Pangngalan=== {{head|zh|noun}} # lahat ng mga paksa; [[sari-saring]] mga [[disiplina]] =={{=ja=}}== {{ja-kanjitab|ひゃく|k1=ひゃっ|か|y=o}} ===Pagbigkas=== {{ja-pron|ひゃっか|acc=1}} ===Pangngalan=== {{ja-noun|ひゃっか}} # [[bayaridad]] ng iilan, lahat ng mga bagay ====Katawagang hinango==== * {{ja-r|百%科%事%典|ひゃっ%か%じ%てん|[[ensiklopedya]]}} * {{ja-r|百%科%全%書|ひゃっ%か%ぜん%しょ|[[ensiklopedya]]}} or2k12obyulvmnpeazoimz6u5m0en0k agrikulturo 0 8080 177398 143761 2026-08-25T08:02:19Z Yivan000 4078 177398 wikitext text/x-wiki =={{=eo=}}== ===Pagbigkas=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-agrikulturo.wav}} ===Pangngalan=== {{eo-head|-}} # [[agrikultura]] #: {{syn|eo|terkulturo}} ===Basahin pa=== * {{R:eo:PIV 2020}} * {{R:eo:ReVo}} {{C|eo|Agrikultura}} q3xfgkdn6qs98me6a49p4tf0h6z58b7 177419 177398 2026-08-25T09:25:24Z Hiyuune 5522 /* Esperanto */ 177419 wikitext text/x-wiki =={{=eo=}}== {{wp|eo:}} {{wikidata lexeme|L311457}} ===Pagbigkas=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-agrikulturo.wav}} ===Pangngalan=== {{eo-head|-}} # [[agrikultura]] #: {{syn|eo|terkulturo}} ===Basahin pa=== * {{R:eo:PIV 2020}} * {{R:eo:ReVo}} {{C|eo|Agrikultura}} fyj9zz8k0ttrcn5zntx4kcc7cm9zpkj Kanarienvogel 0 12692 177336 118366 2026-08-24T14:45:42Z Yivan000 4078 177336 wikitext text/x-wiki =={{=de=}}== {{wp|de:}} ===Pagbigkas=== * {{audio|de|De-Kanarienvogel.ogg|a=<<Germany>> (<<Berlin>>)}} ===Pangngalan=== {{de-noun|m,,^}} # [[kanaryo]] ====Paukulan==== {{de-ndecl|m,,^}} ===Basahin pa=== * {{R:de:Duden}} * {{R:de:DWDS}} ldq9uzo1grr8qg7nda7sqq1357b94ok verontschuldiging 0 14219 177354 130152 2026-08-25T03:00:36Z Hiyuune 5522 177354 wikitext text/x-wiki =={{=nl=}}== ===Etimolohiya=== Mula sa {{suffix|nl|verontschuldigen|ing}}. ===Pagbigkas=== * {{audio|nl|Nl-verontschuldiging.ogg}} ===Pangngalan=== {{nl-noun|f|-en|++}} # [[patawad]] r4ha6fs96yq18zb3b5wu6taw3x5bbw6 commissie 0 14529 177337 154666 2026-08-24T14:50:29Z Yivan000 4078 177337 wikitext text/x-wiki =={{=nl=}}== ===Pagbigkas=== * {{IPA|nl|/ˌkɔˈmɪ.si/}} * {{audio|nl|Nl-commissie.ogg}} * {{hyphenation|nl|com|mis|sie}} * {{rhymes|nl|ɪsi}} ===Pangngalan=== {{nl-noun|f|-s|+}} # [[komisyon]] #: {{syn|nl|commissariaat}} 26vcizyh687r31ziv5qbco9yr039a4h दुरुपयोग 0 18820 177343 35972 2026-08-25T02:03:35Z Yivan000 4078 Inilipat ni Yivan000 ang pahinang [[दुरूपयोग]] sa [[दुरुपयोग]] nang walang iniwang redirect: moved as per enwikt 35972 wikitext text/x-wiki == Hindi == === Pangngalan === '''दुरूपयोग''' # [[paslangin]]]] [[kategorya:Mga pangngalang Hindi]] [[en:दुरूपयोग]] [[mg:दुरूपयोग]] jmn7psvqsxvga94fgm7qpd0rkjay27g 177344 177343 2026-08-25T02:05:16Z Yivan000 4078 177344 wikitext text/x-wiki =={{=hi=}}== ===Etimolohiya=== Mula sa {{af|hi|दुष्-<alt:दुर्->|उपयोग}}. ===Pagbigkas=== * {{hi-IPA|दुर-उपयोग}} * {{rhymes|hi|oːɡ|s=3}} ===Pangngalan=== {{hi-noun|m}} # [[abuso]] #: {{uxa|hi|शक्तियों का दुरुपयोग|abuso ng kapangyarihan}} ====Paukulan==== {{hi-ndecl|<M>}} ====Sanggunian==== * {{R:hi:Dasa||2322}} * {{R:hi:Chaturvedi||323}} * {{R:hi:Bahri||314}} gcvfzi33i8ququber1dzonh0hk9fhd9 ताली बजाना 0 18917 177342 147804 2026-08-25T02:02:23Z Yivan000 4078 177342 wikitext text/x-wiki =={{=hi=}}== ===Pagbigkas=== * {{hi-IPA}} ===Pandiwa=== {{hi-verb}} # [[pumalakpak]] ====Pagbabanghay==== {{hi-conj}} pechlyske1ez6kp5l9i87gekf8yrih5 arteesinen kaivo 0 21352 177345 103185 2026-08-25T02:09:32Z Yivan000 4078 177345 wikitext text/x-wiki =={{=fi=}}== ===Etimolohiya=== {{m|fi|arteesinen}} {{m|fi|kaivo}} ===Pangngalan=== {{fi-noun|head=[[arteesinen]] [[kaivo]]}} # [[poso artesyano]] ====Paukulan==== {{fi-decl-nainen-valo|pos1=adj|arteesi|a|kaiv|||o|a}} lhmxdnic3s3hgeb2wvk8maitjr8h0mi ambaraka 0 24663 177335 117601 2026-08-24T14:37:01Z Yivan000 4078 177335 wikitext text/x-wiki =={{=mg=}}== ===Pang-ukol=== {{head|mg|prepositions}} # [[hanggang]] no6wrcs1zat4lc7vrbs2tmj52psfdss filazantsara 0 26126 177341 119084 2026-08-25T01:55:29Z Yivan000 4078 177341 wikitext text/x-wiki =={{=mg=}}== ===Pangngalan=== {{head|mg|noun}} # [[ebanghelyo]] 0sqikeg89h8xi14y5bezy7msjyhtsqh 象形 0 27737 177381 168130 2026-08-25T07:25:01Z Yivan000 4078 177381 wikitext text/x-wiki =={{=ja=}}== {{ja-kanjitab|しょう|けい|yomi=on}} ===Pangngalan=== {{ja-noun|しょうけい}} # (''[[w:Chinese character classification|Klasipikasyon ng panulat ng mag Tsino]]'') [[piktogramo]], partikular na sa mga [[w:Chinese character classification#Pictograms|piktogramong]] {{l|ja|六書}}. ===Tignan din=== * [[六書]] * [[指事]] * [[會意]] * [[形聲]] * [[假借]] * [[轉注]] =={{=zh=}}== {{zh-forms}} ===Pangngalan=== {{cmn-noun|ts|pin=xiàngxíng|pint=xiang4xing2|rs=豕05}} # (''[[w:Chinese character classification|Klasipikasyon ng panulat ng mag Tsino]]'') [[piktogramo]], partikular na sa mga [[w:Chinese character classification#Pictograms|piktogramong]] {{zh-l|六書}}. ===Tignan din=== * {{zh-l|六書}} o3wzg0jke4tmfq4dc4o8nr8bhvli8fj 177383 177381 2026-08-25T07:28:22Z Yivan000 4078 177383 wikitext text/x-wiki =={{=ja=}}== {{ja-kanjitab|しょう|けい|yomi=on}} ===Pangngalan=== {{ja-noun|しょうけい}} # (''[[w:Chinese character classification|Klasipikasyon ng panulat ng mag Tsino]]'') [[piktogramo]], partikular na sa mga [[w:Chinese character classification#Pictograms|piktogramong]] {{l|ja|六書}}. ===Tignan din=== {{list:Han character classification/ja}} =={{=zh=}}== {{zh-forms}} ===Pangngalan=== {{head|zh|noun}} # (''[[w:Chinese character classification|Klasipikasyon ng panulat ng mag Tsino]]'') [[piktogramo]], partikular na sa mga [[w:Chinese character classification#Pictograms|piktogramong]] {{zh-l|六書}}. ===Tignan din=== * {{zh-l|六書}} dpucwtwfv6cmyxmrq7kzjdsujhezmm3 dalawa 0 27856 177376 177223 2026-08-25T07:12:20Z Yivan000 4078 177376 wikitext text/x-wiki =={{=tl=}}== ===Etimolohiya=== Mula sa ''da-duha'', mula sa Proto-Malayo-Polinesyang ''[[*duha]]'', na nagmula rin sa Proto-Awstronesyang ''[[*duSa]]''. ===Pagbigkas=== {{tl-pr|dalawá|audio=LL-Q34057 (tgl)-Geoffjop0908-dalawa.wav}} ===Pambilang=== {{tl-num|dalawá|b=+}} # Ang bilang pagkatapos ng [[isa]] at bago ang [[tatlo]]; [[2]]. Ganito karami: ••. ====Mga salin==== {{trans-top|bilang}} * {{=es=}}: {{t|es|dos}} * {{=ja=}}: {{t|ja|二}} * {{=hil=}}: {{t|hil|dalawa}} * {{=en=}}: {{t|en|two}} * {{=pam=}}: {{t|pam|addua}} * {{=pt=}}: {{t|pt|dois}} * {{=fr=}}: {{t|fr|deux}} * {{=ceb=}}: {{t|ceb|duha}} {{trans-bottom}} =={{=hil=}}== ===Etimolohiya=== Mula sa ''da-duha'', mula sa Proto-Malayo-Polinesyang ''[[*duha]]'', na nagmula rin sa Proto-Awstronesyang ''[[*duSa]]''. ===Bilang=== {{hil-head|bilang}} # {{l|tl|dalawa}} mzcepc94wwrlijqt92qlmazmc3x0rfp Module:zh-pron 828 30123 177386 171624 2026-08-25T07:40:27Z Yivan000 4078 177386 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"] = "Eastern Min", ["cjy"] = "Jin", ["cpx"] = "Puxian Min", ["cmn"] = "Mandarin", ["csp"] = "Southern Pinghua", ["dng"] = "Dungan", ["gan"] = "Gan", ["hak"] = "Hakka", ["hsn"] = "Xiang", ["hsn-lou"] = "Xiang", ["hsn-hya"] = "Xiang", ["luh"] = "Leizhou Min", ["mnp"] = "Northern Min", ["nan-hbl"] = "Hokkien", ["nan-tws"] = "Teochew", ["wuu"] = "Wu", ["wuu-jih"] = "Wu", ["yue"] = "Kantones", --TLCHANGE Cantonese ["zhx-sic"] = "Sichuanese", ["zhx-tai"] = "Taishanese", } local langname_abbr = { ["m"] = "Mandarin", ["m-s"] = "Sichuanese", ["m-x"] = "Mandarin", ["m-nj"] = "Mandarin", ["dg"] = "Dungan", ["c"] = "Kantones", --TLCHANGE "Cantonese", ["c-dg"] = "Kantones", --TLCHANGE "Cantonese", ["c-t"] = "Taishanese", ["c-yj"] = "Cantonese", ["g"] = "Gan", ["h"] = "Hakka", ["j"] = "Jin", ["mb"] = "Northern Min", ["mc"] = "Gitnang Tsino", --TLCHANGE "Middle Chinese", ["md"] = "Eastern Min", ["mn"] = "Hokkien", ["mn-t"] = "Teochew", ["mn-l"] = "Leizhou Min", ["oc"] = "Lumang Tsino", --TLCHANGE "Old Chinese", ["px"] = "Puxian Min", ["sp"] = "Southern Pinghua", ["w"] = "Wu", ["w-j"] = "Wu", ["x"] = "Xiang", ["x-l"] = "Loudi Xiang", ["x-h"] = "Hengyang Xiang", } local pos_aliases_cat = { ["n"] = "na pangngalan", ["noun"] = "na pangngalan", ['nouns'] = "na pangngalan", --TLCHANGE "nouns" ["pn"] = "na pangngalang pantangi", ["propn"] = "na pangngalang pantangi", ["proper"] = "na pangngalang pantangi", ["proper noun"] = "na pangngalang pantangi", ["proper nouns"] = "na pangngalang pantangi", --TLCHANGE "proper nouns" ["pron"] = "na panghalip", ["pronoun"] = "na panghalip", ["pronouns"] = "na panghalip", --TLCHANGE "pronouns" ["v"] = "na pandiwa", ["verb"] = "na pandiwa", ["verbs"] = "na pandiwa", --TLCHANGE "verbs" ["a"] = "na pang-uri", ["adj"] = "na pang-uri", ["adjective"] = "na pang-uri", ["adjectives"] = "na pang-uri", --TLCHANGE "adjectives" ["adv"] = "na pang-abay", ["adverb"] = "na pang-abay", ["adverbs"] = "na pang-abay", --TLCHANGE "adverbs" ["prep"] = "na pang-ukol", ["pre"] = "na pang-ukol", ["prepositions"] = "na pang-ukol", --TLCHANGE "prepositions" ["postp"] = "postpositions", ["post"] = "postpositions", ["con"] = "na pangatnig", ["conj"] = "na pangatnig", ["conjunction"] = "na pangatnig", ["conjunctions"] = "na pangatnig", --TLCHANGE "conjunctions" ["part"] = "na kataga", ["particle"] = "na kataga", ["particles"] = "na kataga", --TLCHANGE "particles" ["pref"] = "na unlapi", ["prefix"] = "na unlapi", ["prefixes"] = "na unlapi", --TLCHANGE "prefixes" ["suf"] = "na hulapi", ["suffix"] = "na hulapi", ["suffixes"] = "na hulapi", --TLCHANGE "suffixes" ["infix"] = "na gitlapi", ["infixes"] = "na gitlapi", --TLCHANGE "infixes" ["prov"] = "na salawikain", ["proverb"] = "na salawikain", ["proverbs"] = "na salawikain", --TLCHANGE "proverbs" ["id"] = "na sawikain", ["idiom"] = "na sawikain", ["idioms"] = "na sawikain", --TLCHANGE "idioms" ["ch"] = "na chengyu", ["cy"] = "na chengyu", ["4ci"] = "na chengyu", --TLCHANGE "chengyu" ["ph"] = "na parirala", ["phrase"] = "na parirala", ["phrases"] = "na parirala", --TLCHANGE "phrases" ["int"] = "pandamdam", ["intj"] = "pandamdam", ["interj"] = "pandamdam", ["interjection"] = "pandamdam", ["interjections"] = "pandamdam", --TLCHANGE "interjections" ["cl"] = "classifiers", ["cls"] = "classifiers", ["classifier"] = "classifiers", ["num"] = "na pambilang", ["na pambilang"] = "na pambilang", ["numerals"] = "na pambilang", --TLCHANGE "numerals" ["abb"] = "na daglat", ["abbreviation"] = "na daglat", ["abbreviations"] = "na daglat", --TLCHANGE "abbreviations" ["det"] = "na pantukoy", ["deter"] = "na pantukoy", ["determiner"] = "na pantukoy", ["determiners"] = "na pantukoy", --TLCHANGE "determiners" ["syl"] = "na pantig", ["syll"] = "na pantig", ["syllable"] = "na pantig", ["syllables"] = "na pantig", --TLCHANGE "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, "[[Category:") insert(text, langname[lang]) insert(text, " terms with audio pronunciation|" .. 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:Mandarin Chinese|Mandarin]]") 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:Mandarin Chinese|Mandarin]]") 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:Dungan language|Dungan]], [[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|Wiktionary]]</i>)</small>: ") show(Consolas(dg_processed)) end add_audio_show(textShow, dg_audio, "dng") hide("\n** <small>(<i>[[w:Dungan language|Dungan]]</i>)</small>") hide("\n*** <small><i>[[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|Wiktionary]]</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:Kantones|Kantones]]") --TLCHANGE "\n* [[w:Cantonese|Cantonese]]" hide("\n* [[w:Kantones|Kantones]]") --TLCHANGE "\n* [[w:Cantonese|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:Taishanese|Taishan]], [[Wiktionary:About Chinese/Cantonese/Taishanese|Wiktionary]]</i>)</small>: ") show(Consolas(c_t_display)) add_audio_show(textShow, c_t_audio, "zhx-tai") hide("\n** <small>(<i>[[w:Taishanese|Taishanese]], [[w:Taicheng Subdistrict|Taicheng]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:About Chinese/Cantonese/Taishanese|Wiktionary]]</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:Gan Chinese|Gan]] <small>(<i>[[Wiktionary:About Chinese/Gan|Wiktionary]]</i>)</small>: ") show(Consolas(g_pron.rom(g_rom))) end add_audio_show(textShow, g_audio, "gan") hide("\n* [[w:Gan Chinese|Gan]]") hide("\n** <small>(<i>[[w:Nanchang dialect|Nanchang]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:About Chinese/Gan|Wiktionary]]</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|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:Jin Chinese|Jin]] <small>(<i>[[Wiktionary:About Chinese/Jin|Wiktionary]]</i>)</small>: ") show(Consolas(j_pron.rom(j_rom))) end add_audio_show(textShow, j_audio, "cjy") hide("\n* [[w:Jin Chinese|Jin]]") 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|Wiktionary]]</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:Northern Min|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:Northern Min|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:Eastern Min|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:Eastern Min|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:Puxian Min|Puxian Min]]") show(px_pron.rom_display(px_rom,"brief")) add_audio_show(textShow, px_audio, "cpx") hide("\n* [[Wiktionary:About Chinese/Puxian Min|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:Southern Min|Southern Min]]") if mn_rom then show(((mn_l_rom or mn_t_rom) and "\n*:" or "") .. " <small>(<i>[[w:Hokkien|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:Teochew dialect|Teochew]], [[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:Southern Min|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:Teochew dialect|Teochew]]</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:Pinghua|Southern 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:Pinghua|Southern Pinghua]]") hide("\n** <small>(<i>[[w:Pinghua|Nanning 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|Wu]] <small>(<i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>") else show("\n* [[w:Wu Chinese|Wu]]") end show(w_show) show(w_j_show) add_audio_show(textShow, w_audio, "wuu") hide("\n* [[w:Wu Chinese|Wu]]") 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:Xiang Chinese|Xiang]]") 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|Wiktionary]]</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|Wiktionary]]</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|Wiktionary]]</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:Xiang Chinese|Xiang]]") 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|Wiktionary]]</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|Wiktionary]]</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|Wiktionary]]</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"})), ' 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, "Mandarin\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, "Jin\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, "Wu\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, "Xiang\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, "Hakka\n!", hakkaColor, "[[w:Meixian dialect|Meixian]]\n|", hakkaColor}), concat({hakkaColor, "[[w:Taoyuan, Taiwan|Taoyuan]]\n|", hakkaColor}), concat({"rowspan=3 ", cantoneseColor, "Kantones\n!", cantoneseColor, "[[w:Guangzhou dialect|Guangzhou]]\n|", cantoneseColor}), --TLCHANGE Cantonese 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:Xiamen dialect|Xiamen]] (Hokkien)\n|", minColor}), concat({minColor, "[[w:Fuzhou dialect|Fuzhou]] (Eastern Min)\n|", minColor}), concat({minColor, "[[w:Jian'ou dialect|Jian'ou]] (Northern Min)\n|", minColor}), concat({minColor, "[[w:Shantou dialect|Shantou]] (Teochew)\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, "na sawikain") --TLCHANGE "idioms" break end end insert(cats, 1, "na lema") --TLCHANGE "lemmas" if is_single_hanzi then insert(cats, 2, "na hanzi") --TLCHANGE "hanzi" 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, "Tsino ", category) --TLCHANGE "Chinese " insert(conv_text, cat_start .. lang_name .. " " .. category .. "|" .. sortkey .. cat_end) else cat = pos_aliases_cat[cat] or cat add_cat(conv_text, "Tsino ", cat) --TLCHANGE "Chinese " if m_rom or m_x_rom or m_nj_rom then add_cat(conv_text, "Mandarin ", cat) end if has_var("m-s") then add_cat(conv_text, "Sichuanese ", cat) end if has_var("dg") then add_cat(conv_text, "Dungan ", cat) end if c_rom or c_dg_rom or c_yj_rom then add_cat(conv_text, "Kantones ", cat) end --TLCHANGE Cantonese if c_t_rom then add_cat(conv_text, "Taishanese ", cat) end if has_var("g") then add_cat(conv_text, "Gan ", cat) end if h_rom and (find(h_rom, "pfs=.") or find(h_rom, "gd=.")) or #h_audio > 0 then add_cat(conv_text, "Hakka ", cat) end if has_var("j") then add_cat(conv_text, "Jin ", cat) end if has_var("mb") then add_cat(conv_text, "Northern Min ", cat) end if has_var("md") then add_cat(conv_text, "Eastern Min ", cat) end if has_var("mn") then add_cat(conv_text, "Hokkien ", cat) end if has_var("mn-t") then add_cat(conv_text, "Teochew ", cat) end if has_var("mn-l") then add_cat(conv_text, "Leizhou Min ", cat) end if has_var("px") then add_cat(conv_text, "Puxian Min ", cat) end if has_var("sp") then add_cat(conv_text, "Southern Pinghua ", cat) end if has_var("w") then add_cat(conv_text, "Wu ", cat) end if has_var("w-j") then add_cat(conv_text, "Wu ", cat) end if has_var("x") then add_cat(conv_text, "Xiang ", cat) end if has_var("x-l") then add_cat(conv_text, "Xiang ", cat) end if has_var("x-h") then add_cat(conv_text, "Xiang ", cat) end if mc and has_var("mc") then add_cat(conv_text, "Middle Chinese ", cat) end if oc and has_var("oc") then add_cat(conv_text, "Old Chinese ", cat) end end end if not args.only_cat then insert(conv_text, cat_start .. "Tsino na salitang may pagbigkas na IPA|" .. sortkey .. cat_end) --TLCHANGE Chinese terms with IPA pronunciation end if not args.poj_form_zh_see then if not find(pagename, "[" .. hanzi .. bopomofo .. "]") then insert(conv_text, cat_start .. "Tsino na salitang sinulat sa katitikang banyaga|" .. sortkey .. cat_end) --TLCHANGE Chinese terms written in foreign scripts 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 .. "Tsino na salitang binaybay ng " .. character .. "|" .. sortkey .. cat_end) --TLCHANGE 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 o0603k7tutk4swu0tat5b48z43os1py 177387 177386 2026-08-25T07:43:31Z Yivan000 4078 177387 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"] = "Silanganing Min", --TLCHANGE "Eastern Min", ["cjy"] = "Jin", ["cpx"] = "Puxian Min", ["cmn"] = "Mandarin", ["csp"] = "Southern Pinghua", ["dng"] = "Dungan", ["gan"] = "Gan", ["hak"] = "Hakka", ["hsn"] = "Xiang", ["hsn-lou"] = "Xiang", ["hsn-hya"] = "Xiang", ["luh"] = "Leizhou Min", ["mnp"] = "Kahilagaang Min", --TLCHANGE "Northern Min", ["nan-hbl"] = "Hokkien", ["nan-tws"] = "Teochew", ["wuu"] = "Wu", ["wuu-jih"] = "Wu", ["yue"] = "Kantones", --TLCHANGE Cantonese ["zhx-sic"] = "Sichuanese", ["zhx-tai"] = "Taishanese", } local langname_abbr = { ["m"] = "Mandarin", ["m-s"] = "Sichuanese", ["m-x"] = "Mandarin", ["m-nj"] = "Mandarin", ["dg"] = "Dungan", ["c"] = "Kantones", --TLCHANGE "Cantonese", ["c-dg"] = "Kantones", --TLCHANGE "Cantonese", ["c-t"] = "Taishanese", ["c-yj"] = "Kantones", --TLCHANGE "Cantonese", ["g"] = "Gan", ["h"] = "Hakka", ["j"] = "Jin", ["mb"] = "Kahilagaang Min", --TLCHANGE "Northern Min", ["mc"] = "Gitnang Tsino", --TLCHANGE "Middle Chinese", ["md"] = "Silanganing Min", --TLCHANGE "Eastern Min", ["mn"] = "Hokkien", ["mn-t"] = "Teochew", ["mn-l"] = "Leizhou Min", ["oc"] = "Lumang Tsino", --TLCHANGE "Old Chinese", ["px"] = "Puxian Min", ["sp"] = "Southern Pinghua", ["w"] = "Wu", ["w-j"] = "Wu", ["x"] = "Xiang", ["x-l"] = "Loudi Xiang", ["x-h"] = "Hengyang Xiang", } local pos_aliases_cat = { ["n"] = "na pangngalan", ["noun"] = "na pangngalan", ['nouns'] = "na pangngalan", --TLCHANGE "nouns" ["pn"] = "na pangngalang pantangi", ["propn"] = "na pangngalang pantangi", ["proper"] = "na pangngalang pantangi", ["proper noun"] = "na pangngalang pantangi", ["proper nouns"] = "na pangngalang pantangi", --TLCHANGE "proper nouns" ["pron"] = "na panghalip", ["pronoun"] = "na panghalip", ["pronouns"] = "na panghalip", --TLCHANGE "pronouns" ["v"] = "na pandiwa", ["verb"] = "na pandiwa", ["verbs"] = "na pandiwa", --TLCHANGE "verbs" ["a"] = "na pang-uri", ["adj"] = "na pang-uri", ["adjective"] = "na pang-uri", ["adjectives"] = "na pang-uri", --TLCHANGE "adjectives" ["adv"] = "na pang-abay", ["adverb"] = "na pang-abay", ["adverbs"] = "na pang-abay", --TLCHANGE "adverbs" ["prep"] = "na pang-ukol", ["pre"] = "na pang-ukol", ["prepositions"] = "na pang-ukol", --TLCHANGE "prepositions" ["postp"] = "postpositions", ["post"] = "postpositions", ["con"] = "na pangatnig", ["conj"] = "na pangatnig", ["conjunction"] = "na pangatnig", ["conjunctions"] = "na pangatnig", --TLCHANGE "conjunctions" ["part"] = "na kataga", ["particle"] = "na kataga", ["particles"] = "na kataga", --TLCHANGE "particles" ["pref"] = "na unlapi", ["prefix"] = "na unlapi", ["prefixes"] = "na unlapi", --TLCHANGE "prefixes" ["suf"] = "na hulapi", ["suffix"] = "na hulapi", ["suffixes"] = "na hulapi", --TLCHANGE "suffixes" ["infix"] = "na gitlapi", ["infixes"] = "na gitlapi", --TLCHANGE "infixes" ["prov"] = "na salawikain", ["proverb"] = "na salawikain", ["proverbs"] = "na salawikain", --TLCHANGE "proverbs" ["id"] = "na sawikain", ["idiom"] = "na sawikain", ["idioms"] = "na sawikain", --TLCHANGE "idioms" ["ch"] = "na chengyu", ["cy"] = "na chengyu", ["4ci"] = "na chengyu", --TLCHANGE "chengyu" ["ph"] = "na parirala", ["phrase"] = "na parirala", ["phrases"] = "na parirala", --TLCHANGE "phrases" ["int"] = "pandamdam", ["intj"] = "pandamdam", ["interj"] = "pandamdam", ["interjection"] = "pandamdam", ["interjections"] = "pandamdam", --TLCHANGE "interjections" ["cl"] = "classifiers", ["cls"] = "classifiers", ["classifier"] = "classifiers", ["num"] = "na pambilang", ["na pambilang"] = "na pambilang", ["numerals"] = "na pambilang", --TLCHANGE "numerals" ["abb"] = "na daglat", ["abbreviation"] = "na daglat", ["abbreviations"] = "na daglat", --TLCHANGE "abbreviations" ["det"] = "na pantukoy", ["deter"] = "na pantukoy", ["determiner"] = "na pantukoy", ["determiners"] = "na pantukoy", --TLCHANGE "determiners" ["syl"] = "na pantig", ["syll"] = "na pantig", ["syllable"] = "na pantig", ["syllables"] = "na pantig", --TLCHANGE "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, "[[Category:") insert(text, langname[lang]) insert(text, " terms with audio pronunciation|" .. 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:Mandarin Chinese|Mandarin]]") 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:Mandarin Chinese|Mandarin]]") 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:Dungan language|Dungan]], [[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|Wiktionary]]</i>)</small>: ") show(Consolas(dg_processed)) end add_audio_show(textShow, dg_audio, "dng") hide("\n** <small>(<i>[[w:Dungan language|Dungan]]</i>)</small>") hide("\n*** <small><i>[[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|Wiktionary]]</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:Kantones|Kantones]]") --TLCHANGE "\n* [[w:Cantonese|Cantonese]]" hide("\n* [[w:Kantones|Kantones]]") --TLCHANGE "\n* [[w:Cantonese|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:Taishanese|Taishan]], [[Wiktionary:About Chinese/Cantonese/Taishanese|Wiktionary]]</i>)</small>: ") show(Consolas(c_t_display)) add_audio_show(textShow, c_t_audio, "zhx-tai") hide("\n** <small>(<i>[[w:Taishanese|Taishanese]], [[w:Taicheng Subdistrict|Taicheng]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:About Chinese/Cantonese/Taishanese|Wiktionary]]</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:Gan Chinese|Gan]] <small>(<i>[[Wiktionary:About Chinese/Gan|Wiktionary]]</i>)</small>: ") show(Consolas(g_pron.rom(g_rom))) end add_audio_show(textShow, g_audio, "gan") hide("\n* [[w:Gan Chinese|Gan]]") hide("\n** <small>(<i>[[w:Nanchang dialect|Nanchang]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:About Chinese/Gan|Wiktionary]]</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|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:Jin Chinese|Jin]] <small>(<i>[[Wiktionary:About Chinese/Jin|Wiktionary]]</i>)</small>: ") show(Consolas(j_pron.rom(j_rom))) end add_audio_show(textShow, j_audio, "cjy") hide("\n* [[w:Jin Chinese|Jin]]") 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|Wiktionary]]</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:Northern Min|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:Northern Min|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:Eastern Min|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:Eastern Min|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:Puxian Min|Puxian Min]]") show(px_pron.rom_display(px_rom,"brief")) add_audio_show(textShow, px_audio, "cpx") hide("\n* [[Wiktionary:About Chinese/Puxian Min|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:Southern Min|Katimugang Min]]") --TLCHANGE "\n* [[w:Southern Min|Southern Min]]" if mn_rom then show(((mn_l_rom or mn_t_rom) and "\n*:" or "") .. " <small>(<i>[[w:Hokkien|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:Teochew dialect|Teochew]], [[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:Southern Min|Katimugang Min]]") --TLCHANGE "\n* [[w:Southern Min|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:Teochew dialect|Teochew]]</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:Pinghua|Southern 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:Pinghua|Southern Pinghua]]") hide("\n** <small>(<i>[[w:Pinghua|Nanning 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|Wu]] <small>(<i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>") else show("\n* [[w:Wu Chinese|Wu]]") end show(w_show) show(w_j_show) add_audio_show(textShow, w_audio, "wuu") hide("\n* [[w:Wu Chinese|Wu]]") 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:Xiang Chinese|Xiang]]") 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|Wiktionary]]</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|Wiktionary]]</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|Wiktionary]]</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:Xiang Chinese|Xiang]]") 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|Wiktionary]]</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|Wiktionary]]</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|Wiktionary]]</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"})), ' 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, "Mandarin\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, "Jin\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, "Wu\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, "Xiang\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, "Hakka\n!", hakkaColor, "[[w:Meixian dialect|Meixian]]\n|", hakkaColor}), concat({hakkaColor, "[[w:Taoyuan, Taiwan|Taoyuan]]\n|", hakkaColor}), concat({"rowspan=3 ", cantoneseColor, "Kantones\n!", cantoneseColor, "[[w:Guangzhou dialect|Guangzhou]]\n|", cantoneseColor}), --TLCHANGE Cantonese 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:Xiamen dialect|Xiamen]] (Hokkien)\n|", minColor}), concat({minColor, "[[w:Fuzhou dialect|Fuzhou]] (Eastern Min)\n|", minColor}), concat({minColor, "[[w:Jian'ou dialect|Jian'ou]] (Northern Min)\n|", minColor}), concat({minColor, "[[w:Shantou dialect|Shantou]] (Teochew)\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, "na sawikain") --TLCHANGE "idioms" break end end insert(cats, 1, "na lema") --TLCHANGE "lemmas" if is_single_hanzi then insert(cats, 2, "na hanzi") --TLCHANGE "hanzi" 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, "Tsino ", category) --TLCHANGE "Chinese " insert(conv_text, cat_start .. lang_name .. " " .. category .. "|" .. sortkey .. cat_end) else cat = pos_aliases_cat[cat] or cat add_cat(conv_text, "Tsino ", cat) --TLCHANGE "Chinese " if m_rom or m_x_rom or m_nj_rom then add_cat(conv_text, "Mandarin ", cat) end if has_var("m-s") then add_cat(conv_text, "Sichuanese ", cat) end if has_var("dg") then add_cat(conv_text, "Dungan ", cat) end if c_rom or c_dg_rom or c_yj_rom then add_cat(conv_text, "Kantones ", cat) end --TLCHANGE Cantonese if c_t_rom then add_cat(conv_text, "Taishanese ", cat) end if has_var("g") then add_cat(conv_text, "Gan ", cat) end if h_rom and (find(h_rom, "pfs=.") or find(h_rom, "gd=.")) or #h_audio > 0 then add_cat(conv_text, "Hakka ", cat) end if has_var("j") then add_cat(conv_text, "Jin ", cat) end if has_var("mb") then add_cat(conv_text, "Northern Min ", cat) end if has_var("md") then add_cat(conv_text, "Eastern Min ", cat) end if has_var("mn") then add_cat(conv_text, "Hokkien ", cat) end if has_var("mn-t") then add_cat(conv_text, "Teochew ", cat) end if has_var("mn-l") then add_cat(conv_text, "Leizhou Min ", cat) end if has_var("px") then add_cat(conv_text, "Puxian Min ", cat) end if has_var("sp") then add_cat(conv_text, "Southern Pinghua ", cat) end if has_var("w") then add_cat(conv_text, "Wu ", cat) end if has_var("w-j") then add_cat(conv_text, "Wu ", cat) end if has_var("x") then add_cat(conv_text, "Xiang ", cat) end if has_var("x-l") then add_cat(conv_text, "Xiang ", cat) end if has_var("x-h") then add_cat(conv_text, "Xiang ", cat) end if mc and has_var("mc") then add_cat(conv_text, "Middle Chinese ", cat) end if oc and has_var("oc") then add_cat(conv_text, "Old Chinese ", cat) end end end if not args.only_cat then insert(conv_text, cat_start .. "Tsino na salitang may pagbigkas na IPA|" .. sortkey .. cat_end) --TLCHANGE Chinese terms with IPA pronunciation end if not args.poj_form_zh_see then if not find(pagename, "[" .. hanzi .. bopomofo .. "]") then insert(conv_text, cat_start .. "Tsino na salitang sinulat sa katitikang banyaga|" .. sortkey .. cat_end) --TLCHANGE Chinese terms written in foreign scripts 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 .. "Tsino na salitang binaybay ng " .. character .. "|" .. sortkey .. cat_end) --TLCHANGE 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 1wmi2rjubczbvy5rhonawa3nyrrvrbb 177389 177387 2026-08-25T07:51:09Z Yivan000 4078 177389 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"] = "Silanganing Min", --TLCHANGE "Eastern Min", ["cjy"] = "Jin", ["cpx"] = "Puxian Min", ["cmn"] = "Mandarin", ["csp"] = "Southern Pinghua", ["dng"] = "Dungan", ["gan"] = "Gan", ["hak"] = "Hakka", ["hsn"] = "Xiang", ["hsn-lou"] = "Xiang", ["hsn-hya"] = "Xiang", ["luh"] = "Leizhou Min", ["mnp"] = "Kahilagaang Min", --TLCHANGE "Northern Min", ["nan-hbl"] = "Hokkien", ["nan-tws"] = "Teochew", ["wuu"] = "Wu", ["wuu-jih"] = "Wu", ["yue"] = "Kantones", --TLCHANGE Cantonese ["zhx-sic"] = "Sitsuwanes", --TLCHANGE "Sichuanese", ["zhx-tai"] = "Toisanes", --TLCHANGE "Taishanese", } local langname_abbr = { ["m"] = "Mandarin", ["m-s"] = "Sitsuwanes", --TLCHANGE "Sichuanese", ["m-x"] = "Mandarin", ["m-nj"] = "Mandarin", ["dg"] = "Dungan", ["c"] = "Kantones", --TLCHANGE "Cantonese", ["c-dg"] = "Kantones", --TLCHANGE "Cantonese", ["c-t"] = "Toisanes",--TLCHANGE "Taishanese", ["c-yj"] = "Kantones", --TLCHANGE "Cantonese", ["g"] = "Gan", ["h"] = "Hakka", ["j"] = "Jin", ["mb"] = "Kahilagaang Min", --TLCHANGE "Northern Min", ["mc"] = "Gitnang Tsino", --TLCHANGE "Middle Chinese", ["md"] = "Silanganing Min", --TLCHANGE "Eastern Min", ["mn"] = "Hokkien", ["mn-t"] = "Teochew", ["mn-l"] = "Leizhou Min", ["oc"] = "Lumang Tsino", --TLCHANGE "Old Chinese", ["px"] = "Puxian Min", ["sp"] = "Southern Pinghua", ["w"] = "Wu", ["w-j"] = "Wu", ["x"] = "Xiang", ["x-l"] = "Loudi Xiang", ["x-h"] = "Hengyang Xiang", } local pos_aliases_cat = { ["n"] = "na pangngalan", ["noun"] = "na pangngalan", ['nouns'] = "na pangngalan", --TLCHANGE "nouns" ["pn"] = "na pangngalang pantangi", ["propn"] = "na pangngalang pantangi", ["proper"] = "na pangngalang pantangi", ["proper noun"] = "na pangngalang pantangi", ["proper nouns"] = "na pangngalang pantangi", --TLCHANGE "proper nouns" ["pron"] = "na panghalip", ["pronoun"] = "na panghalip", ["pronouns"] = "na panghalip", --TLCHANGE "pronouns" ["v"] = "na pandiwa", ["verb"] = "na pandiwa", ["verbs"] = "na pandiwa", --TLCHANGE "verbs" ["a"] = "na pang-uri", ["adj"] = "na pang-uri", ["adjective"] = "na pang-uri", ["adjectives"] = "na pang-uri", --TLCHANGE "adjectives" ["adv"] = "na pang-abay", ["adverb"] = "na pang-abay", ["adverbs"] = "na pang-abay", --TLCHANGE "adverbs" ["prep"] = "na pang-ukol", ["pre"] = "na pang-ukol", ["prepositions"] = "na pang-ukol", --TLCHANGE "prepositions" ["postp"] = "postpositions", ["post"] = "postpositions", ["con"] = "na pangatnig", ["conj"] = "na pangatnig", ["conjunction"] = "na pangatnig", ["conjunctions"] = "na pangatnig", --TLCHANGE "conjunctions" ["part"] = "na kataga", ["particle"] = "na kataga", ["particles"] = "na kataga", --TLCHANGE "particles" ["pref"] = "na unlapi", ["prefix"] = "na unlapi", ["prefixes"] = "na unlapi", --TLCHANGE "prefixes" ["suf"] = "na hulapi", ["suffix"] = "na hulapi", ["suffixes"] = "na hulapi", --TLCHANGE "suffixes" ["infix"] = "na gitlapi", ["infixes"] = "na gitlapi", --TLCHANGE "infixes" ["prov"] = "na salawikain", ["proverb"] = "na salawikain", ["proverbs"] = "na salawikain", --TLCHANGE "proverbs" ["id"] = "na sawikain", ["idiom"] = "na sawikain", ["idioms"] = "na sawikain", --TLCHANGE "idioms" ["ch"] = "na chengyu", ["cy"] = "na chengyu", ["4ci"] = "na chengyu", --TLCHANGE "chengyu" ["ph"] = "na parirala", ["phrase"] = "na parirala", ["phrases"] = "na parirala", --TLCHANGE "phrases" ["int"] = "pandamdam", ["intj"] = "pandamdam", ["interj"] = "pandamdam", ["interjection"] = "pandamdam", ["interjections"] = "pandamdam", --TLCHANGE "interjections" ["cl"] = "classifiers", ["cls"] = "classifiers", ["classifier"] = "classifiers", ["num"] = "na pambilang", ["na pambilang"] = "na pambilang", ["numerals"] = "na pambilang", --TLCHANGE "numerals" ["abb"] = "na daglat", ["abbreviation"] = "na daglat", ["abbreviations"] = "na daglat", --TLCHANGE "abbreviations" ["det"] = "na pantukoy", ["deter"] = "na pantukoy", ["determiner"] = "na pantukoy", ["determiners"] = "na pantukoy", --TLCHANGE "determiners" ["syl"] = "na pantig", ["syll"] = "na pantig", ["syllable"] = "na pantig", ["syllables"] = "na pantig", --TLCHANGE "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, "[[Category:") insert(text, langname[lang]) insert(text, " terms with audio pronunciation|" .. 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:Mandarin Chinese|Mandarin]]") 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:Mandarin Chinese|Mandarin]]") 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|Pinyin Sitsuwanes]]</i>)</small>: ") --TLCHANGE "\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|Pinyin Sitsuwanes]]</i></small>: ") --TLCHANGE "\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:Dungan language|Dungan]], [[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|Wiktionary]]</i>)</small>: ") show(Consolas(dg_processed)) end add_audio_show(textShow, dg_audio, "dng") hide("\n** <small>(<i>[[w:Dungan language|Dungan]]</i>)</small>") hide("\n*** <small><i>[[w:Dungan alphabet|Cyrillic]] and [[Wiktionary:Dungan transliteration|Wiktionary]]</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:Kantones|Kantones]]") --TLCHANGE "\n* [[w:Cantonese|Cantonese]]" hide("\n* [[w:Kantones|Kantones]]") --TLCHANGE "\n* [[w:Cantonese|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:Taishanese|Taishan]], [[Wiktionary:About Chinese/Cantonese/Taishanese|Wiktionary]]</i>)</small>: ") show(Consolas(c_t_display)) add_audio_show(textShow, c_t_audio, "zhx-tai") hide("\n** <small>(<i>[[w:Taishanese|Taishanese]], [[w:Taicheng Subdistrict|Taicheng]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:About Chinese/Cantonese/Taishanese|Wiktionary]]</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:Gan Chinese|Gan]] <small>(<i>[[Wiktionary:About Chinese/Gan|Wiktionary]]</i>)</small>: ") show(Consolas(g_pron.rom(g_rom))) end add_audio_show(textShow, g_audio, "gan") hide("\n* [[w:Gan Chinese|Gan]]") hide("\n** <small>(<i>[[w:Nanchang dialect|Nanchang]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:About Chinese/Gan|Wiktionary]]</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|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:Jin Chinese|Jin]] <small>(<i>[[Wiktionary:About Chinese/Jin|Wiktionary]]</i>)</small>: ") show(Consolas(j_pron.rom(j_rom))) end add_audio_show(textShow, j_audio, "cjy") hide("\n* [[w:Jin Chinese|Jin]]") 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|Wiktionary]]</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:Northern Min|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:Northern Min|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:Eastern Min|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:Eastern Min|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:Puxian Min|Puxian Min]]") show(px_pron.rom_display(px_rom,"brief")) add_audio_show(textShow, px_audio, "cpx") hide("\n* [[Wiktionary:About Chinese/Puxian Min|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:Southern Min|Katimugang Min]]") --TLCHANGE "\n* [[w:Southern Min|Southern Min]]" if mn_rom then show(((mn_l_rom or mn_t_rom) and "\n*:" or "") .. " <small>(<i>[[w:Hokkien|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:Teochew dialect|Teochew]], [[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:Southern Min|Katimugang Min]]") --TLCHANGE "\n* [[w:Southern Min|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:Teochew dialect|Teochew]]</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:Pinghua|Southern 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:Pinghua|Southern Pinghua]]") hide("\n** <small>(<i>[[w:Pinghua|Nanning 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|Wu]] <small>(<i>[[Wiktionary:About Chinese/Wu|Wugniu]]</i>)</small>") else show("\n* [[w:Wu Chinese|Wu]]") end show(w_show) show(w_j_show) add_audio_show(textShow, w_audio, "wuu") hide("\n* [[w:Wu Chinese|Wu]]") 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:Xiang Chinese|Xiang]]") 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|Wiktionary]]</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|Wiktionary]]</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|Wiktionary]]</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:Xiang Chinese|Xiang]]") 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|Wiktionary]]</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|Wiktionary]]</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|Wiktionary]]</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"})), ' 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, "Mandarin\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, "Jin\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, "Wu\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, "Xiang\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, "Hakka\n!", hakkaColor, "[[w:Meixian dialect|Meixian]]\n|", hakkaColor}), concat({hakkaColor, "[[w:Taoyuan, Taiwan|Taoyuan]]\n|", hakkaColor}), concat({"rowspan=3 ", cantoneseColor, "Kantones\n!", cantoneseColor, "[[w:Guangzhou dialect|Guangzhou]]\n|", cantoneseColor}), --TLCHANGE Cantonese 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:Xiamen dialect|Xiamen]] (Hokkien)\n|", minColor}), concat({minColor, "[[w:Fuzhou dialect|Fuzhou]] (Eastern Min)\n|", minColor}), concat({minColor, "[[w:Jian'ou dialect|Jian'ou]] (Northern Min)\n|", minColor}), concat({minColor, "[[w:Shantou dialect|Shantou]] (Teochew)\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, "na sawikain") --TLCHANGE "idioms" break end end insert(cats, 1, "na lema") --TLCHANGE "lemmas" if is_single_hanzi then insert(cats, 2, "na hanzi") --TLCHANGE "hanzi" 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, "Tsino ", category) --TLCHANGE "Chinese " insert(conv_text, cat_start .. lang_name .. " " .. category .. "|" .. sortkey .. cat_end) else cat = pos_aliases_cat[cat] or cat add_cat(conv_text, "Tsino ", cat) --TLCHANGE "Chinese " if m_rom or m_x_rom or m_nj_rom then add_cat(conv_text, "Mandarin ", cat) end if has_var("m-s") then add_cat(conv_text, "Sitsuwanes ", cat) end --TLCHANGE "Sichuanese " if has_var("dg") then add_cat(conv_text, "Dungan ", cat) end if c_rom or c_dg_rom or c_yj_rom then add_cat(conv_text, "Kantones ", cat) end --TLCHANGE Cantonese if c_t_rom then add_cat(conv_text, "Toisanes ", cat) end --TLCHANGE "Taishanese " if has_var("g") then add_cat(conv_text, "Gan ", cat) end if h_rom and (find(h_rom, "pfs=.") or find(h_rom, "gd=.")) or #h_audio > 0 then add_cat(conv_text, "Hakka ", cat) end if has_var("j") then add_cat(conv_text, "Jin ", cat) end if has_var("mb") then add_cat(conv_text, "Kahilagaang Min ", cat) end --TLCHANGE "Northern Min " if has_var("md") then add_cat(conv_text, "Silanganing Min ", cat) end --TLCHANGE "Eastern Min " if has_var("mn") then add_cat(conv_text, "Hokkien ", cat) end if has_var("mn-t") then add_cat(conv_text, "Teochew ", cat) end if has_var("mn-l") then add_cat(conv_text, "Leizhou Min ", cat) end if has_var("px") then add_cat(conv_text, "Puxian Min ", cat) end if has_var("sp") then add_cat(conv_text, "Southern Pinghua ", cat) end if has_var("w") then add_cat(conv_text, "Wu ", cat) end if has_var("w-j") then add_cat(conv_text, "Wu ", cat) end if has_var("x") then add_cat(conv_text, "Xiang ", cat) end if has_var("x-l") then add_cat(conv_text, "Xiang ", cat) end if has_var("x-h") then add_cat(conv_text, "Xiang ", cat) end if mc and has_var("mc") then add_cat(conv_text, "Gitnang Tsino ", cat) --TLCHANGE "Middle Chinese " end if oc and has_var("oc") then add_cat(conv_text, "Lumang Tsino ", cat) --TLCHANGE "Old Chinese " end end end if not args.only_cat then insert(conv_text, cat_start .. "Tsino na salitang may pagbigkas na IPA|" .. sortkey .. cat_end) --TLCHANGE Chinese terms with IPA pronunciation end if not args.poj_form_zh_see then if not find(pagename, "[" .. hanzi .. bopomofo .. "]") then insert(conv_text, cat_start .. "Tsino na salitang sinulat sa katitikang banyaga|" .. sortkey .. cat_end) --TLCHANGE Chinese terms written in foreign scripts 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 .. "Tsino na salitang binaybay ng " .. character .. "|" .. sortkey .. cat_end) --TLCHANGE 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 fgt828kcsei953qosktlxcu8kqdabbq Module:yue-pron 828 30133 177385 168217 2026-08-25T07:40:01Z Yivan000 4078 177385 Scribunto text/plain local export = {} local m_string_utils = require("Module:string utilities") local gsplit = m_string_utils.gsplit local gsub = m_string_utils.gsub local len = m_string_utils.len local lower = m_string_utils.lower local split = m_string_utils.split local entering = { p = 1, t = 1, k = 1 } local entering_tones = { ["1"] = "7", ["3"] = "8", ["6"] = "9" } local ipa_allophones = { ei = "eri", eoi = "eoy", ing = "irng", ik = "irk", ou = "oru", ung = "urng", uk = "urk", } local ipa_initial = { ["b"] = "p", ["p"] = "pʰ", ["m"] = "m", ["f"] = "f", ["d"] = "t", ["t"] = "tʰ", ["n"] = "n", ["l"] = "l", ["g"] = "k", ["k"] = "kʰ", ["ng"] = "ŋ", ["gw"] = "kʷ", ["kw"] = "kʷʰ", -- ["zh"] = "t͡ʃ", ["ch"] = "t͡ʃʰ", ["sh"] = "ʃ", ["z"] = "t͡s", ["c"] = "t͡sʰ", ["s"] = "s", ["h"] = "h", ["w"] = "w", ["j"] = "j", [""] = "" } -- vowels with "r" only appear as allophones and should not appear in the input local ipa_nucleus = { ["aa"] = "aː", ["a"] = "ɐ", ["e"] = "ɛː", ["er"] = "e", ["i"] = "iː", ["ir"] = "ɪ", ["o"] = "ɔː", ["or"] = "o", ["oe"] = "œː", ["eo"] = "ɵ", ["u"] = "uː", ["ur"] = "ʊ", ["yu"] = "yː" } local ipa_coda = { ["i"] = "i̯", ["u"] = "u̯", ["y"] = "y̯", ["m"] = "m", ["n"] = "n", ["ng"] = "ŋ", ["p"] = "p̚", ["t"] = "t̚", ["k"] = "k̚", [""] = "" } local ipa_tone = { ["1"] = "<span style=\"cursor:help\" title=\"or 53\">⁵⁵</span>", ["2"] = "³⁵", ["3"] = "³³", ["4"] = "²¹", ["5"] = "¹³", ["6"] = "²²", ["7"] = "⁵", ["8"] = "³", ["9"] = "²", [""] = "" } local ipa_tone_sandhi = { ["-"] = "⁻", [""] = "" } local ipa_syllabic = { ["m"] = "m̩", ["ng"] = "ŋ̍" } -- display `main`, but show `option` on hovering local function alt(main,option) return '<span style="cursor:help" title="or ' .. option .. '">' .. main .. '</span>' end local acute = { a="á", e="é", i="í", o="ó", u="ú", m="ḿ", ng="ńg" } local grave = { a="à", e="è", i="ì", o="ò", u="ù", m="m̀", ng="ǹg" } local macron = { a="ā", e="ē", i="ī", o="ō", u="ū", m="m̄", ng="n̄g" } -- "?" indicates finals that are not supported by Yale local yale_final = { ["a"] = "?", ["aa"] = "a", ["eu"] = "?", ["em"] = "?", ["en"] = "?", ["ep"] = "?", ["et"] = "?", ["om"] = "?", ["op"] = "?", ["um"] = "?", ["up"] = "?", ["oe"] = "eu", ["oem"] = "?", ["oen"] = "?", ["oeng"] = "eung", ["oep"] = "?", ["oet"] = "?", ["oek"] = "euk", ["eoi"] = "eui", ["eon"] = "eun", ["eot"] = "eut", } -- The core function to handle conversion to Yale. -- For non-syllabics, there is exactly one vowel cluster in the syllable: -- the first vowel is inputted as `a`, and the rest of the vowels is `b`, and `t` is the tone. --- (e.g. "keui" -> a="e",b="ui"; "keung" -> a="e",b="u") -- Conversion rule: --- if `t` is 4, 5, or 6, then "h" is inserted after `b`. --- if `t` is 1, 2, 4, or 5, then the corresponding accent is put on `a`. -- (finally, for syllabics, the whole syllabic is `a`, and `b` is empty) local function yale_tone(a,b,t) local h = "" if t == "4" or t == "5" or t == "6" then h = "h" end if t == "1" then a = alt(macron[a], grave[a]) end if t == "4" then a = grave[a] end if t == "2" or t == "5" then a = acute[a] end return a..b..h end function export.jyutping_to_ipa(text) if type(text) == "table" then text = text.args[1] end text = text:gsub(", "," "):gsub("%.%.%.", " "):gsub(" $",""):gsub(" / ","/, /") -- :gsub("([zcs])yu", "%1hyu") -- :gsub("([zcs])oe", "%1hoe") -- :gsub("([zcs])eo", "%1heo") :gsub("(%l+)(%d)(%-?)(%d?)", function(main,tone,symbol,tone2) -- try initial+final local initial, final = main:match("^([bpmfdtnlgknzcshwj]?[gw]?)([aeiouy]%l*)$") if not initial then -- otherwise try initial+syllabic local syllabic initial, syllabic = main:match("^(h?)([mn]g?)$") if not initial then error("Invalid Jyutping syllable: " .. main) end main = ipa_initial[initial] .. (ipa_syllabic[syllabic] or error("Unrecognised syllabic: " .. syllabic)) -- really? else -- e.g. convert <ei> (which would be */ɛːi̯/) to <eri> (/ei̯/) final = ipa_allophones[final] or final local nucleus, coda = final:match("^(y?[aeiou][aeor]?)([iuymnptk]?g?)$") if not nucleus then error("Invalid Jyutping final: " .. final) end if entering[coda] then tone = entering_tones[tone] or tone tone2 = entering_tones[tone2] or tone2 end main = (ipa_initial[initial] or error(("Unrecognised initial: \"%s\""):format(initial))) .. (ipa_nucleus[nucleus] or error(("Unrecognised nucleus: \"%s\""):format(nucleus))) .. (ipa_coda[coda] or error(("Unrecognised coda: \"%s\""):format(coda))) end return main .. ipa_tone[tone] .. ipa_tone_sandhi[symbol] .. ipa_tone[tone2] end) return text end function export.jyutping_to_yale(text) if type(text) == "table" then text = text.args[1] end text = text:gsub("jy?","y") :gsub("[cz]",{z="j",c="ch"}) --:gsub("[1-6]%-","") :gsub("(%l+)(%d)(%-?)(%d?)", function(main,tone,symbol,tone2) if tone2 ~= "" then tone = tone2 end -- find the first vowel letter local initial,final = main:match("^([^aeiou]*)([aeiou].*)$") local a,b,c if initial then final = yale_final[final] or final if final == "?" then return "?" end a,b,c = final:match("^([aeiou])([aiu]*)([mnptk]?g?)$") else -- otherwise it is a syllabic initial,a = main:match("(h?)([mn]g?)") b,c = "","" end return initial..yale_tone(a,b,tone)..c end) if text:find("?") then return false end return text end function export.jyutping_to_cantonese_pinyin(text) if type(text) == "table" then text = text.args[1] end if text:find("oe[mnpt][^g]") then -- unsupported finals return false end text = text:gsub("yu","y") :gsub("eo[int]",{eoi="oey",eon="oen",eot="oet"}) :gsub("[zc]",{z="dz",c="ts"}) :gsub("([ptk])([1-6])(%-?)([1-6]?)",function(a,b,c,d) return a .. (entering_tones[b] or b) .. c .. (entering_tones[d] or d) end) return text end function export.jyutping_to_guangdong(text) if type(text) == 'table' then text = text.args[1] end -- unsupported finals if text:find("%f[a]a%d") or text:find("oe[mnpt][^g]") or text:find("[ou][mp]") or text:find("e[un][^g]") then return false end text = text:gsub("yu","ü") :gsub("j","y") :gsub("[zcs]%f[iü]",{z="j",c="q",s="x"}) -- ü=\xC3\xBC :gsub("([jqxy])ü","%1u") :gsub("eoi","êu") :gsub("[aeo][aeo]?",{aa="a",a="e",e="é",oe="ê",eo="ê"}) :gsub("([ae])u","%1o") :gsub("([gk])w","%1u") :gsub("[ptk]%f[%d]",{p="b",t="d",k="g"}) return text end -- substitute changed tones for finding homophones function export.jyutping_format(text) text = text:gsub("[1-6]%-([1-6])", "%1") return split(text," / ") 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 local function make_superscript(text) return (text:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>")) end -- the only allowed punctuations are: --- ", ": represents a comma (or a break of any sort) --- "...": represents a slot where a text can go to (e.g. [[一……就……]]) --- ",": separates alternate readings local function validate(c_rom) if c_rom:find("[7-9]") then error("Invalid tone in Jyutping.") end if c_rom:find("[A-Z]") then error("Please do not capitalize the Jyutping.") end if c_rom:find("%-[a-z]") then error("Please do not hyphenate the Jyutping.") end if c_rom:find("[0-9][a-z]") then error("Error in Jyutping: please use spaces to separate syllables.") end if c_rom:find("[zcs]h") then error("'zh'/'ch'/'sh' are non-valid Jyutping, use 'z'/'c'/'s' instead.") end if c_rom:find("y[^u]") then error("Wrong usage of 'y' in Jyutping.") end if c_rom:find("oei") then error("Invalid rime oei in Jyutping. Did you mean eoi?") end if c_rom:find("eong") then error("Invalid rime eong in Jyutping. Did you mean oeng?") end if c_rom:find("eok") then error("Invalid rime eok in Jyutping. Did you mean oek?") end if c_rom:find("r") then error("Invalid letter \"r\" in Jyutping.") end if c_rom:find("%d%d") then error("Invalid Jyutping: please use a hyphen to indicate a changed tone.") end c_rom = c_rom:gsub("^%.%.%.",""):gsub("%.%.%.%f[%z,]",""):gsub("%.%.%."," "):gsub(", ?"," ") if c_rom:find("^ ") or c_rom:find(" ") or c_rom:find(" $") then error("Empty syllable detected.") end if c_rom:find("[^a-z1-6%- ]") then error("Invalid character found.") end -- ensure that each syllable matches `^%l+%d%-?%d?$` for syllable in c_rom:gmatch("%S+") do if not syllable:match("^%l+%d%-?%d?$") then error("Invalid Jyutping syllable: " .. syllable) end end end -- generate the shown text of Standard Cantonese -- if the pagename is one character long, then generate links to all the readings function export.show_standard(c_rom, is_single_hanzi) validate(c_rom) c_rom = c_rom:gsub(",%f[^ ,]"," / ") if is_single_hanzi then for reading in c_rom:gmatch("[^ ,./]+") do require('Module:debug').track('yue-pron/'..reading) end c_rom = c_rom:gsub("(%l+)(%d%-?%d?)","[[%1%2|%1<sup>%2</sup>]]") else c_rom = make_superscript(c_rom) end return c_rom end -- generate the collapsed text of Standard Cantonese -- generate all the different romanisations, as well as homophones function export.hide_standard(c_rom, is_single_hanzi) local res = "" c_rom = c_rom:gsub(",%f[^ ,]"," / ") -- generate IPA first because the error-catching is located there local c_ipa = export.jyutping_to_ipa(c_rom) local c_yale = export.jyutping_to_yale(c_rom) local c_cp = export.jyutping_to_cantonese_pinyin(c_rom) local c_gd = export.jyutping_to_guangdong(c_rom) local c_hom = mw.loadData("Module:yue-pron/hom") local c_hom_exists = false for _,c_first in ipairs(export.jyutping_format(c_rom)) do if c_hom[c_first] then c_hom_exists = c_first break end end res = res .. "\n** <small>(<i>[[w:Standard Cantonese|Pamantayang Kantones]], [[w:Guangzhou Cantonese|Guangzhou]]–[[w:Hong Kong Cantonese|Hong Kong]]</i>)</small>" --TLCHANGE "\n** <small>(<i>[[w:Standard Cantonese|Standard Cantonese]], [[w:Guangzhou Cantonese|Guangzhou]]–[[w:Hong Kong Cantonese|Hong Kong]]</i>)</small>" if not c_hom_exists and not is_single_hanzi then res = res .. '<sup><small><abbr title="Add Cantonese homophones"><span class="plainlinks">[' res = res .. tostring(mw.uri.fullUrl("Module:yue-pron/hom",{["action"]="edit"})) res = res .. " +]</span></abbr></small></sup>" end res = res .. "\n*** <small><i>[[w:Jyutping|Jyutping]]</i></small>: " res = res .. Consolas(make_superscript(c_rom)) if c_yale then res = res .. "\n*** <small><i>[[w:Yale romanization of Cantonese|Yale]]</i></small>: " res = res .. Consolas(c_yale) end if c_cp then res = res .. "\n*** <small><i>[[w:Cantonese Pinyin|Cantonese Pinyin]]</i></small>: " res = res .. Consolas(make_superscript(c_cp)) end if c_gd then res = res .. "\n*** <small><i>[[w:Guangdong Romanization|Guangdong Romanization]]</i></small>: " res = res .. Consolas(make_superscript(c_gd)) end res = res .. "\n*** <small>Sinological [[Wiktionary:International Phonetic Alphabet|IPA]] <sup>([[w:Cantonese phonology|key]])</sup></small>: " res = res .. format_IPA("/" .. c_ipa .. "/") if c_hom_exists then res = res .. '\n*** <small>Homophones</small>: <table class="wikitable mw-collapsible mw-collapsed" style="width:15em;margin:0;' res = res .. 'position:left; text-align:center"><tr><th></th></tr><tr><td><div style="float: right; clear: right;"><sup>' res = res .. '<span class="plainlinks">[' res = res .. tostring(mw.uri.fullUrl("Module:yue-pron/hom",{["action"]="edit"})) res = res .. ' edit]</span></sup></div><div style="visibility:hidden; float:left"><sup><span style="color:#FFF">edit</span></sup></div>' local hom_text = {} local yue = require("Module:languages").getByCode("yue") for _,hom in ipairs(c_hom[c_hom_exists]) do table.insert(hom_text, require("Module:links").full_link( { term = hom, lang = yue, tr = "-" } )) end res = res .. table.concat(hom_text, "<br>") res = res .. "</td></tr></table>" res = res .. "[[Category:Cantonese terms with homophones]]" end return res end function export.jyutping_headword(frame) local args = require("Module:parameters").process(frame:getParent().args, { ["head"] = {}, }) return require("Module:headword").full_headword{ lang = require("Module:languages").getByCode("yue"), sc = require("Module:scripts").getByCode("Latn"), heads = {make_superscript(args.head or mw.loadData("Module:headword/data").pagename)}, pos_category = "jyutping" } end return export 4otabqs127lkiusm7l5iv13ozyx118d Module:zh-forms 828 30549 177362 167846 2026-08-25T05:28:51Z Yivan000 4078 enwikt parity 177362 Scribunto text/plain local export = {} local links = require("Module:links") local lang = require("Module:languages") local m_data = require("Module:zh-forms/data") local m_scripts = require("Module:scripts") local m_str_utils = require("Module:string utilities") local concat = table.concat local explode = m_str_utils.explode_utf8 local find = m_str_utils.find local get_section = require("Module:pages").get_section local gsub = m_str_utils.gsub local insert = table.insert local len = m_str_utils.len local match = m_str_utils.match local new_title = mw.title.new local sub = m_str_utils.sub local u = m_str_utils.char local Hani_chars = m_scripts.getByCode("Hani"):getCharacters() local nonbreaking_hyphen = u(0x2011) local sc = { ["trad"] = "Hant", ["simp"] = "Hans", ["both"] = "Hani", } -- Change one variant character to another variant character. -- Currently, only do so once. Return false if there is more than one character to change, or if there is no change. function export.change_to_variant(text) local count = 0 local text = gsub(text, ('([%s])'):format(m_data.chars_variant_both), function(char) count = count + 1 if (count > 1) then return '' end -- add |t2= manually, please local this_char_index = find(m_data.chars_variant_both, char) local first_or_second = (this_char_index % 2) local other_char_index = this_char_index + (first_or_second == 1 and 1 or -1) return sub(m_data.chars_variant_both, other_char_index, other_char_index) end) return (count == 1 and text or '') end local zh_link_impl = nil local function zh_link(...) if zh_link_impl == nil then zh_link_impl = require("Module:zh/link") end return zh_link_impl.link(...) end function export.make(frame) local params = { [1] = { list = true, allow_holes = true, allow_empty = true }, ["s"] = { list = true }, ["t"] = { list = true }, ["ss"] = {}, ["ns"] = {}, ["alt"] = {}, ["type"] = {}, ["delink"] = {}, ["lit"] = {}, ["note"] = {}, ["gloss"] = {}, ["align"] = {} } local args = require("Module:parameters").process(frame:getParent().args, params) local comp_type = args["type"] local s, t = {}, {} local annotation = {} local pagename = mw.loadData("Module:headword/data").pagename local current_title = mw.title.getCurrentTitle() local content = current_title:getContent() if not frame:getParent().args["t"] then insert(t, 1, current_title.subpageText) end for i = 1, #args.s do if (#args.s == 1) and pagename == args.s[i] then error('Redundant text in |s=.') end insert(s, args.s[i]) end for i = 1, #args.t do if (#args.t == 1) and pagename == args.t[i] then error('Redundant text in |t=.') end insert(t, args.t[i]) end local t1 = t[1] local t1_len = len(t1) -- temp tracking if #s == 0 and require("Module:zh").ts(t1) ~= t1 then require('Module:debug').track('zh-forms/entry possibly missing a simplified form') end if #t == 1 then local to_variant = export.change_to_variant(t1) if (to_variant ~= '') then -- automatically generate a |t2= insert(t, export.change_to_variant(t1)) elseif find(t1, ('[%s]'):format(m_data.chars_variant_both .. m_data.chars_variant_one)) then require('Module:debug').track('zh-forms/entry possibly missing a variant form') end end s.name = "simp" t.name = "trad" if #t ~= 1 and #s == 0 then insert(s, t1) end local function asterisk(term, iscomp) if iscomp and t1_len > 1 then return "" end if term == current_title.subpageText or not (new_title(term) or {}).exists then return "" end local content = new_title(term):getContent() content = gsub(content, "zh%-pron", "Ꙁ") content = gsub(content, "zh%-see", "Ꙁ") content = gsub(content, "[^Ꙁ]", "") return len(content) > 1 and '<sup><span class="explain" title="This form has one or more other meanings.">*</span></sup>' or '' end local function var_fmt(length, color) return '\n|-\n! style="padding: 0.' .. (length > 8 and '3' or '5') .. 'em;border: 1px solid var(--border-color-base,#aaa);background: ' .. (color or 'var(--wikt-palette-cyan, #eaffff)') .. ';color:inherit;font-weight: normal;font-size: smaller;" colspan="2" |' end local function char_gap(length, script, last) return '\n| style="' .. (length > 1 and 'min-width:3em;' or '') .. 'padding: 0.' .. (length > 8 and '3' or '5') .. 'em; background-color:var(--wikt-palette-white, #ffffff);color:inherit;' .. (last and 'border-right: 1px solid var(--border-color-base,#aaa);border' .. (length ~= 1 and '-bottom' or '') .. ': 1px solid var(--border-color-base,#aaa); ' or 'border-bottom: 1px solid var(--border-color-base,#aaa); ') .. 'font-size:x-large" lang="zh-' .. sc[script] .. '" class="' .. sc[script] .. '" | ' end local function header(length, var_count) return ((length > 3 or var_count * length > 5 or args.align == 'left') and '{|' or '{| class="floatright"') .. ' style="clear: right;margin: 1em 0 1em 1em;border-collapse: collapse;text-align: center"' .. (length ~= 1 and '\n|-\n! colspan=2|' or '') end local function gloss_fmt(word, colspan, length) return '\n! style="padding: 0.' .. (length > 8 and '3' or '5') .. 'em;border: 1px solid var(--border-color-base,#aaa);background:var(--wikt-palette-lightyellow, #ffffe0);color:inherit;font-weight:normal;font-size:85%;max-width:3em;" colspan=' .. (colspan or 1) ..'|' end local function form_fmt(text, length, script) local fmtd_text = {} for i,value in ipairs(text) do fmtd_text[i] = links.language_link{ lang = lang.getByCode("zh"), term = value } .. asterisk(value, false) end return length ~= 1 and ((length > 8 and '' or '<span style="font-size:140%">') .. '(<span lang="zh-' .. sc[script] .. '" class="' .. sc[script] .. '">' .. concat(fmtd_text, "/") .. '</span>)' .. (length > 8 and '' or '</span>')) or '' end local function char_fmt(text, length, script) return (#text ~= 1 and (char_gap(length, script) .. concat(text, char_gap(length, script), 1, #text-1)) or '') .. char_gap(length, script, true) .. text[#text] end local word_division = {} local i = 1 local decomposable if comp_type then for index in mw.text.gsplit(comp_type, "", true) do if find(sub(t1, i, i), '[,%-]') then insert(word_division, { i, i } ) i = i + 1 elseif sub(t1, i, i) == '…' then insert(word_division, { i, i + 1 } ) i = i + 2 end insert(word_division, { i, i + index - 1 } ) i = i + index end if i - 1 ~= len(gsub(t1, '…+$', '')) and not find(concat(t) .. concat(s), "[⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻]") then error("'type' parameter does not match word length.") end else for i = 1, t1_len do insert(word_division, { i, i } ) end decomposable = len(gsub(t1, '…+$', '')) > 2 and true or false end local delink = {} if args["delink"] then if args["delink"] == "y" then for del_index, _ in ipairs(word_division) do delink[del_index] = "yes" end else for position in mw.text.gsplit(args["delink"], ",") do delink[tonumber(position)] = "yes" end end end local char_set = { ['simp'] = {}, ['trad'] = {} } local identity = #s == 0 and {t} or {s,t} local uncreated = {} for _, id in ipairs(identity) do for i, position in ipairs(word_division) do local char_string = "" for j = 1, #id do local word_form = sub(id[j], position[1], position[2]) if not find(char_string, word_form) then char_string = (char_string ~= "" and (char_string .. '/') or "") .. word_form end end if not find(char_string, '[,%-]') then local hash = {} for thing in mw.text.gsplit(char_string, (delink[i] and "" or "/")) do insert(hash, links.language_link{ lang = lang.getByCode("zh"), term = thing } .. asterisk(thing, true)) end char_string = concat(hash, (delink[i] and "" or "/")) end insert(char_set[id.name], char_string) end for _, item in ipairs(id) do if not (new_title(item) or {}).exists and item ~= current_title.subpageText then insert(uncreated, '"[[' .. item .. ']]"') end end end local scripts = { [m_scripts.getByCode("Hani"):getCharacters()] = "Hani" , [m_scripts.getByCode("Latn"):getCharacters()] = "Latn", ["0-90-9"] = "Numb", [m_scripts.getByCode("Polyt"):getCharacters()] = "Grek", [m_scripts.getByCode("Bopo"):getCharacters()] = "Bopo" } local script = {} for range, script_name in pairs(scripts) do if find(t1, '[' .. range .. ']') then insert(script, script_name) end end if find(t1, "([^─…]+)%1") and args['gloss'] ~= '-' and t1_len < 7 then if gsub(comp_type or "", "1", "") == "" then insert(annotation, '[[Category:Chinese reduplications]]') elseif find(t1, "([^…][^…]+)%1") or find(concat(char_set['trad'], " "), "([^─…%[%]a-z]+)%1") then local evil for _, component in ipairs(char_set['trad']) do if len(component) > 1 then local comp_content = new_title(links.remove_links(component)):getContent() or false if not comp_content or find(comp_content, "|gloss=-") or not find(comp_content, "==Chinese==") then evil = true end end end if not evil then insert(annotation, '[[Category:Chinese reduplications]]') end end end insert(annotation, #script > 1 and '[[Category:Chinese terms written in multiple scripts]]' or nil) insert(annotation, (decomposable and args['gloss'] ~= '-' and not args['note'] and not args['lit']) and '[[Category:Chinese entries with potentially decomposable titles]]' or nil) insert(annotation, (#uncreated > 0 and current_title.nsText == "") and '[[Category:Chinese terms with uncreated forms]]' .. '<small class="attentionseeking">(' .. (#uncreated == 1 and 'This form' or 'These forms') .. ' in the hanzi box ' .. (#uncreated == 1 and 'does' or 'do') .. ' not have a page created for ' .. (#uncreated == 1 and 'it' or 'them') .. ' yet: ' .. concat(uncreated, ", ") .. '.)</small>' or nil) local ss = "" if args["ss"] then ss = var_fmt(t1_len, 'var(--wikt-palette-lightyellow, #ffffe0)') .. '[[w:Second round of simplified Chinese characters|2nd round simp.]]' .. sub(char_gap(t1_len, 'simp', true), 1, -45) .. '; padding-top: 10px; padding-bottom: 10px; border-right: 1px solid var(--border-color-base,#aaa); border-bottom: 1px solid var(--border-color-base,#aaa)"' .. ' colspan="' .. #word_division .. '"|' .. zh_link(nil, nil, { "*" .. args["ss"], tr = "-" }, current_title.subpageText) end local ns = "" if args["ns"] then ns = var_fmt(t1_len, 'var(--wikt-palette-lightyellow, #ffffe0)') .. 'nonstandard simp.' .. sub(char_gap(t1_len, 'simp', true), 1, -45) .. '; padding-top: 10px; padding-bottom: 10px; border-right: 1px solid var(--border-color-base,#aaa); border-bottom: 1px solid var(--border-color-base,#aaa)"' .. ' colspan="' .. #word_division .. '"|' .. zh_link(nil, nil, { "*" .. args["ns"], tr = "-" }, current_title.subpageText) end local altforms = "" if args["alt"] then local altform_list = {} for altform in mw.text.gsplit(args["alt"], ",") do local altdecomp = mw.text.split(altform, ":") local altdecomp2 = mw.text.split(altdecomp[1], "-") local altdecomp3 = altdecomp2[2] and ' <span style="font-size:80%"><i>' .. altdecomp2[2] .. '</i></span>' or '' insert(altform_list, '<span style="white-space:nowrap;">' .. zh_link(nil, nil, { altdecomp2[1], tr = (altdecomp[2] or "-") }, current_title.subpageText) .. altdecomp3 .. '</span>') end if #altform_list > 5 then altforms = '<div class="vsSwitcher" data-toggle-category="Chinese alternative forms">' .. '<div class="vsShow">' .. concat(altform_list, "<br>", 1, 5) .. '</div><div class="vsHide">' .. concat(altform_list, "<br>") .. '</div><span class="vsToggleElement" style="display:block;width:fit-content;margin:auto">&nbsp;</span></div>' else altforms = concat(altform_list, "<br>") end altforms = var_fmt(t1_len, 'var(--wikt-palette-palegreen, #e2f6e2)') .. 'alternative forms' .. sub(char_gap(t1_len, "trad", true), 1, -45) .. '; padding-top: 10px; padding-bottom: 10px; border-right: 1px solid var(--border-color-base,#aaa); border-bottom: 1px solid var(--border-color-base,#aaa)"' .. ' colspan="' .. #word_division .. '"|' .. altforms end local anagrams = "" if t1_len >= 2 and t1_len <= 5 then local function generate_anagrams(term, n, anagrams, checked) if n == 0 then local anagram = concat(term) if checked[anagram] then return end local title = new_title(anagram) if not title then return end title = title:getContent() if title and get_section(title, "Chinese", 2) then insert(anagrams, anagram) end checked[anagram] = true else for i = 1, n do generate_anagrams(term, n - 1, anagrams, checked) local i = n % 2 == 0 and i or 1 term[i], term[n] = term[n], term[i] end end return anagrams end local term, checked = explode(t1), {[t1] = true} anagrams = generate_anagrams(term, #term, {}, checked) local anagrams_num = #anagrams for i = 1, anagrams_num do anagrams[i] = "<span style=\"white-space:nowrap;\">" .. zh_link(nil, nil, {anagrams[i], tr = "-"}, current_title.subpageText) .. "</span>" end if anagrams_num == 0 then anagrams = "" else anagrams = concat(anagrams, "<br>") local label = anagrams_num == 1 and "anagram" or "anagrams" anagrams = var_fmt(t1_len, 'var(--wikt-palette-palegreen, #e2f6e2)') .. label .. sub(char_gap(t1_len, "trad", true), 1, -45) .. '; padding-top: 10px; padding-bottom: 10px; border-right: 1px solid var(--border-color-base,#aaa); border-bottom: 1px solid var(--border-color-base,#aaa)"' .. ' colspan="' .. #word_division .. '"|' .. anagrams end end local literal = (args["lit"] or args["note"]) and '\n|-' .. gloss_fmt(t1_len, #word_division + 2, t1_len) .. (args["lit"] and '<i>Literally:</i> “' .. args["lit"] .. (find(args["lit"], "%.$") and "”" or "”.") or args["note"]) or "" local gloss = {} if args['gloss'] == '-' then gloss = { gloss_fmt(t1_len * 1.6, #word_division, t1_len) .. '<i>phonetic</i>' } elseif t1_len == 1 then gloss = {}--{ gloss_fmt(1.6, #word_division) .. '-' } else for i, position in ipairs(word_division) do local character = sub(t1, position[1], position[2]) local gloss_text = args[1][i] -- Load glosses module if no gloss was supplied and the word is a single character. if not gloss_text and position[1] == position[2] then local glosses = mw.loadData("Module:zh/data/glosses") gloss_text = glosses.glosses[character] or "" gloss_text = gsub(gloss_text, "{{taxlink|([^{}]+)}}", function (taxlink_text) local taxlink_args, argi = {}, 1 for arg in mw.text.gsplit(taxlink_text, "|") do local arg_split = mw.text.split(arg, "=") if arg_split[2] then taxlink_args[arg_split[1]] = arg_split[2] else taxlink_args[argi] = (arg ~= "" and arg or nil) argi = argi + 1 end end local frame = mw.getCurrentFrame() return frame:expandTemplate{ title = 'taxlink', args = taxlink_args } end) if gloss_text == "" and find(character, "^[" .. Hani_chars .. "]+$") and not find(glosses.nonlemma, character) then require('Module:debug').track('zh-forms/no gloss found for Chinese character') end end if gloss_text == "-" then gloss_text = "''phonetic''" end if not gloss_text then gloss_text = "" end --[[ To ensure that suffixes are not broken up between lines, like this: - ist ]] if find(gloss_text, "-", nil, true) then gloss_text = gsub(gloss_text, "^%-", nonbreaking_hyphen) gloss_text = gsub(gloss_text, "(%s)%-", "%1" .. nonbreaking_hyphen) end if gloss_text == "" and position[2] > position[1] then local content = new_title(character):getContent() or false if content then gloss_text = require("Module:zh/extract").extract_gloss(content, false) if gloss_text == "" and find(character, "^[" .. Hani_chars .. "]+$") then require('Module:debug').track('zh-forms/no gloss found but entry exists') end --[[ if not string.match(content, character) then require('Module:debug').track('zh-forms/compounds not mentioned in derived terms on the component pages') end ]]-- else if gloss_text == "" and find(character, "^[" .. Hani_chars .. "]+$") then insert(annotation, '[[Category:Chinese redlinks/zh-forms]]') end end end gloss_text = gsub(gloss_text, ";[^a-zA-Z0-9]+;", ";") gloss_text = gsub(gloss_text, ";[^a-zA-Z0-9]*$", "") gloss_text = gsub(gloss_text, ";+", ";") if len(gsub(gloss_text, '[^;]', '')) > 2 then gloss_text = '<div class="vsSwitcher" data-toggle-category="glosses"><div class="vsShow">' .. match(gloss_text, '^[^;]+;[^;]+;[^;]+') .. '</div><div class="vsHide">' .. gloss_text .. '</div><span class="vsToggleElement" style="display:block;width:fit-content;margin:auto">&nbsp;</span></div>' end local word_length = match(character, '[,…%-]') and 0 or (delink[i] and len(character) or len(character) * (len(gsub(char_set['trad'][i], '[^/]', '')) + 1)) insert(gloss, gloss_fmt(word_length, 1, t1_len) .. gloss_text) end end if content then --[[ local applicable_pos = { ["Noun"] = 1, ["Verb"] = 1, ["Adjective"] = 1, ["Adverb"] = 1, ["Definitions"] = 1, ["Pronunciation"] = 1 } local previous_level = 2 local subheading_wanted ]]-- --[=[ -- Used under headers for Chinese varieties, for instance in [[āu-piah]] local Chinese_section = string.match(content, "\n==Chinese==\n(.-)\n==[^=]") if not Chinese_section then error("No Chinese section found.") end --]=] if t1_len == 1 and not string.match(content, "===Definitions===") then require('Module:debug').track('zh-forms/no definitions section found') end --[[ disable, {{zh-der}} has been deprecated so this expression will always be false if t1_len == 1 and not string.match(content, "===Compounds===") and string.match(content, "zh-der") then require('Module:debug').track('zh-forms/derived terms probably needing renaming') end ]]-- --[[ comment out relatively expensive parsing for equals, heading_text in string.gmatch(content, "\n(%=%=+)([^%=]+)%=%=+") do local current_level = #equals if subheading_wanted and current_level ~= previous_level + 1 then if applicable_pos[heading_text] then error("The heading \"===Etymology ''n''===\" or \"===Pronunciation ''n''===\" must be followed by a subheading one level lower.") end end previous_level = current_level subheading_wanted = string.find(heading_text, " [0-9]+") and true or false end ]]-- end local simp_note = "" --This is not a complete list! if #identity == 1 and find(m_data.chars_unified, '[' .. t1 .. ']') then simp_note = '<sup><span class="explain" title="Using the same code point' .. (t1_len > 1 and 's' or '') .. ' as the traditional form due to Han unification. Without proper font support, it may be displayed as the same as the traditional form.">#</span></sup>' char_set['simp'] = char_set['trad'] end return concat{ header(t1_len, math.max(#t, #s)), concat(gloss, ""), ((#identity == 1 and simp_note == '') and (var_fmt(t1_len) .. '[[Simplified Chinese|simp.]] and [[Traditional Chinese|trad.]]<br>' .. form_fmt(t, t1_len, 'both') .. char_fmt(char_set['trad'], t1_len, 'both')) or var_fmt(t1_len) .. '[[Traditional Chinese|trad.]] ' .. form_fmt(t, t1_len, 'trad') .. char_fmt(char_set['trad'], t1_len, 'trad') .. (var_fmt(t1_len) .. '[[Simplified Chinese|simp.]] ' .. simp_note .. form_fmt(#s == 0 and t or s, t1_len, 'simp') .. char_fmt(char_set['simp'], t1_len, 'simp')) ), ss, ns, altforms, anagrams, literal, '\n|}', concat(annotation) } end return export 1i4ubc58hspidqvatou7fntca5q31pl Module:zh-see 828 30559 177374 177081 2026-08-25T06:58:01Z Yivan000 4078 177374 Scribunto text/plain local m_str_utils = require("Module:string utilities") local categorize = require("Module:zh-cat").categorize local change_to_variant = require("Module:zh-forms").change_to_variant local concat = table.concat local extract_gloss = require("Module:zh/extract").extract_gloss local find_templates = require("Module:template parser").find_templates local format_cat = require("Module:utilities").format_categories local full_link = require("Module:links").full_link local get_lang = require("Module:languages").getByCode local get_section = require("Module:pages").get_section local gsplit = mw.text.gsplit local html_create = mw.html.create local insert = table.insert local ipairs = ipairs local maintenance_cats = require("Module:headword").maintenance_cats local pairs = pairs local tostring = tostring local track = require('Module:debug').track local trim = m_str_utils.trim local ulen = m_str_utils.len local usub = m_str_utils.sub local m_data = mw.loadData("Module:zh-see/data") local lect_codes = mw.loadData("Module:zh/data/lect codes") local headword_data = mw.loadData("Module:headword/data") local namespace = mw.title.getCurrentTitle().namespace local langs = setmetatable({}, { __index = function(t, k) local lang = get_lang(k) t[k] = lang return lang end }) local function get_content(title) local content = mw.title.new(title) if not content then return false end return get_section(content:getContent(), "{{=zh=}}", 2) --TLCHANGE "Chinese" end local function process_zh_forms(data, abbrevs, args) for k, v in pairs(args) do if k == "alt" then for altform in gsplit(v, "%s*,%s*") do if altform:match("^" .. data.pagename .. "%f[%z%-]") then abbrevs.v = true end end elseif v == data.pagename then if k:match("^s%d*$") then abbrevs.s = true elseif k:match("^ss%d*$") then abbrevs.ss = true elseif k:match("^t%d*$") then abbrevs.v = true abbrevs.t = true end end end end local function process_categories(template, name) local cat_type = m_data.cat_type[name] if not cat_type then return end local args = template:get_arguments() local code = lect_codes.langcode_to_abbr[args[1]] and args[1] if not code then return end local lang = langs[code] local cat_prefix = ( cat_type == "topics" and (lang:getCode() .. ":") or cat_type == "catlangname" and (lang:getCanonicalName() .. " ") or "" ) local categories = {} for i = 2, #args do insert(categories, cat_prefix .. trim(args[i])) end return format_cat(categories, lang) end local function iterate_templates(frame, data, abbrev, chained) local zh_forms, zh_see, zh_pron, zh_char_comp local abbrevs if not abbrev then abbrevs = {} end for template in find_templates(data.content) do local name = template:get_name() if name == "zh-forms" then zh_forms = true if not abbrev then process_zh_forms(data, abbrevs, template:get_arguments()) end elseif name == "zh-see" and not chained then local args = template:get_arguments() zh_see = args[1] data.new_abbrev = args[2] elseif name == "zh-pron" then zh_pron = zh_pron or template:get_arguments() elseif data.abbrev ~= "poj" then if name == "zh-character component" then zh_char_comp = true else local cats = process_categories(template, name) if cats then insert(data.categories, cats) end end end end if zh_forms then if not abbrev then -- Note: Don't mention second-round simplified if there's a match for (first-round) simplified. abbrev = (abbrevs.s and "s" or "") .. (abbrevs.ss and not abbrevs.s and "ss" or "") .. (abbrevs.v and "v" or "") .. (abbrevs.t and "t" or "") if abbrev ~= "" then if chained then data.new_abbrev = abbrev else data.abbrev = abbrev end end end elseif zh_see then data.new_title = zh_see data.content = get_content(zh_see) if data.content then data.chain = true return iterate_templates(frame, data, data.new_abbrev, true) end end if zh_pron then local data_abbrev = data.abbrev if data_abbrev == "poj" or data_abbrev == "trc" then local new_zh_pron = {} for k, v in pairs(zh_pron) do if k == "mn" or k == "cat" then new_zh_pron[k] = v end end zh_pron = new_zh_pron if data_abbrev == "poj" then zh_pron.poj_form_zh_see = "yes" end end zh_pron.only_cat = "yes" -- FIXME: this should be a callable function. local cats = frame:expandTemplate{ title = "Template:zh-pron", args = zh_pron } if cats then insert(data.categories, cats) end end if zh_char_comp then insert(data.categories, format_cat({"zh:Chinese character components"}, langs.zh)) end if not data.chain then data.new_title = nil data.new_abbrev = nil end if not (chained or zh_forms or zh_pron) then track("zh-see/unidirectional reference to variant") elseif not (chained or data.content:match(data.pagename)) then track("zh-see/unidirectional reference variant→orthodox") end end local export = {} function export.show(frame) local data = { args = frame:getParent().args, pagename = headword_data.pagename, categories = {} } data.title = data.args[1] data.abbrev = data.args[2] ~= "" and data.args[2] data.simp = data.args.simp or false if data.title == data.pagename then return error("The soft-directed item is the same as the page title.") end data.content = get_content(data.title) if not data.content then insert(data.categories, format_cat({"Chinese redlinks/zh-see"}, langs.zh)) else iterate_templates(frame, data, data.abbrev) end -- automatically generated |t2= if not data.abbrev and change_to_variant(data.title) == data.pagename then data.abbrev = "vt" end local non_lemma_cat = m_data.non_lemma_type[data.abbrev or "s"] if not non_lemma_cat then error("Please specify a valid type of non-lemma; the value \"" .. data.abbrev .. "\" is not valid (see [[Template:zh-see]]).") end local self_link_chars if data.abbrev == "poj" then self_link_chars = full_link{ term = data.pagename .. "//", lang = langs["nan-hbl"], tr = "-" } else self_link_chars = full_link{ term = data.pagename:gsub(".[\128-\191]*", "[[%0]]") .. "//", lang = langs.zh, tr = "-" } end local title_link = full_link{ term = data.title .. "//", lang = langs.zh, tr = "-" } local new_title_link if data.chain then new_title_link = full_link{ term = data.new_title .. "//", lang = langs.zh, tr = "-" } end local gloss_text = data.args[3] or (data.content and extract_gloss(data.content, true)) local wikitext1 = "'''Para sa pagbigkas at kahulugan ng '''" .. --TLCHANGE "'''For pronunciation and definitions of '''" self_link_chars .. "''' – tingnan ang " .. (new_title_link or title_link) --TLCHANGE "''' – see " if gloss_text and #gloss_text > 0 then wikitext1 = wikitext1 .. " (“" .. gloss_text .. "”)" end wikitext1 = wikitext1 .. ".'''" local wikitext2 = "(''This " .. (data.abbrev ~= "poj" and ulen(data.pagename) == 1 and "character" or "term") .. " is " .. non_lemma_cat .. " form of'' " .. title_link if data.simp then local link1 = full_link{ term = usub(data.simp, 1, 1) .. "//", lang = langs.zh, tr = "-" } local link2 = full_link{ term = usub(data.simp, 2, 2) .. "//", lang = langs.zh, tr = "-" } data.simp = html_create("small") :wikitext(":&nbsp; " .. link1 .. " → " .. link2) :allDone() end if data.chain then data.chain = ", which is in turn ''" .. m_data.non_lemma_type[data.new_abbrev ~= "" and data.new_abbrev or "v"] .. "'' form of " .. new_title_link end local box = html_create("table") :addClass("wikitable") :addClass("zh-see") :allDone() if non_lemma_cat:match("simplified") then box = box:addClass("mw-collapsible") :addClass("mw-collapsed") end box = box:css("border", "1px") :css("border", "1px solid var(--wikt-palette-grey-9, #797979)") :css("margin-left", "1px") :css("text-align", "left") :css("min-width", (data.chain and "80" or "70") .. "%") :tag("tr") :tag("td") :css("background-color", "var(--wikt-palette-dullcyan,#eaecf0)") :css("color", "inherit") :css("padding-left", "0.5em") :wikitext(wikitext1) :tag("br") :done() :wikitext(wikitext2) :node(data.simp) :wikitext(data.chain) :wikitext(").") :allDone() if non_lemma_cat:match("simplified") then box = box:tag("tr") :tag("td") :addClass("mw-collapsible-content") :css("background-color", "var(--wikt-palette-lightyellow,#FFFFe0)") :css("color", "inherit") :css("font-size", "smaller") :tag("b") :wikitext("Alamin:") --TLCHANGE "Notes:" (not direct translation) :done() :tag("ul") :tag("li") :wikitext("Ang [[w:Simplified Chinese|Tsino na pinasimple]] ay nagagamit sa Kalupaang Tsina, Malaysiya") --TLCHANG "[[w:Simplified Chinese|Simplified Chinese]] is mainly used in Mainland China, Malaysia" :tag("span") :addClass("serial-comma") :wikitext(",") :done() :wikitext(" at Singgapur.") --TLCHANGE " and Singapore." :done() :tag("li") :wikitext("Ang [[w:Traditional Chinese|Tsino na tradisyonal]] ay nagagamit sa Hong Kong, Makaw") --TLCHANGE "[[w:Traditional Chinese|Traditional Chinese]] is mainly used in Hong Kong, Macau" :tag("span") :addClass("serial-comma") :wikitext(",") :done() :wikitext(" at Taiwan.") --TLCHANGE " and Taiwan." :allDone() end box = tostring(box) if not data.content and (namespace == 0 or namespace == 118) then insert(data.categories, format_cat({"Chinese terms with uncreated forms"}, langs.zh)) end for _, word in ipairs(m_data.categorize) do if non_lemma_cat:match(word) then insert(data.categories, categorize(word)) end end local lang if data.abbrev == "poj" then lang = langs["nan-hbl"] insert(data.categories, format_cat({"Hokkien na anyong pe̍h-ōe-jī"}, lang)) --TLCHANGE "Hokkien pe̍h-ōe-jī forms" else lang = langs.zh end -- Standard maintenance categories usually done by [[Module:headword]]. local lang_maintenance_cats = {} local page_maintenance_cats = {} maintenance_cats( headword_data.page, lang, lang_maintenance_cats, page_maintenance_cats ) lang_maintenance_cats = format_cat(lang_maintenance_cats, lang) page_maintenance_cats = format_cat(page_maintenance_cats, nil, "-") return box .. concat(data.categories) .. lang_maintenance_cats .. page_maintenance_cats end return export 84gub6zbn2hozablql3ubk6q65s16mw Module:translations 828 31198 177379 175648 2026-08-25T07:15:49Z Yivan000 4078 177379 Scribunto text/plain local export = {} local debug_track_module = "Module:debug/track" local languages_module = "Module:languages" local links_module = "Module:links" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local templatestyles_module = "Module:TemplateStyles" local utilities_module = "Module:utilities" local wikimedia_languages_module = "Module:wikimedia languages" local anchor_encode = mw.uri.anchorEncode local concat = table.concat local html_create = mw.html.create local insert = table.insert local load_data = mw.loadData local new_title = mw.title.new local require = require --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function decode_uri(...) decode_uri = require(string_utilities_module).decode_uri return decode_uri(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_wikimedia_lang(...) get_wikimedia_lang = require(wikimedia_languages_module).getByCode return get_wikimedia_lang(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function plain_link(...) plain_link = require(links_module).plain_link return plain_link(...) end local function process_params(...) process_params = require(parameters_module).process return process_params(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function split_on_slashes(...) split_on_slashes = require(links_module).split_on_slashes return split_on_slashes(...) end local function templatestyles(...) templatestyles = require(templatestyles_module) return templatestyles(...) end local function track(...) track = require(debug_track_module) return track(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local en local function get_en() en, get_en = require(languages_module).getByCode("en"), nil return en end local headword_data local function get_headword_data() headword_data, get_headword_data = load_data("Module:headword/data"), nil return headword_data end local parameters_data local function get_parameters_data() parameters_data, get_parameters_data = load_data("Module:parameters/data"), nil return parameters_data end local translations_data local function get_translations_data() translations_data, get_translations_data = load_data("Module:translations/data"), nil return translations_data end local function is_translation_subpage(pagename) if (headword_data or get_headword_data()).page.namespace ~= "" then return false elseif not pagename then pagename = (headword_data or get_headword_data()).encoded_pagename end return pagename:match("./translations$") and true or false end local function canonical_pagename() local pagename = (headword_data or get_headword_data()).encoded_pagename return is_translation_subpage(pagename) and pagename:sub(1, -14) or pagename end local function interwiki(terminfo, term, lang, langcode) -- No interwiki link if term is empty/missing if not term or #term < 1 then terminfo.interwiki = false return end -- Percent-decode the term. term = decode_uri(terminfo.term, "PATH") -- Don't show an interwiki link if it's an invalid title. if not new_title(term) then terminfo.interwiki = false return end local interwiki_langcode = (translations_data or get_translations_data()).interwiki_langs[langcode] local wmlangs = interwiki_langcode and {get_wikimedia_lang(interwiki_langcode)} or lang:getWikimediaLanguages() -- Don't show the interwiki link if the language is not recognised by Wikimedia. if #wmlangs == 0 then terminfo.interwiki = false return end local sc = terminfo.sc local target_page = get_link_page(term, lang, sc) local split = split_on_slashes(target_page) if not split[1] then terminfo.interwiki = false return end target_page = split[1] local wmlangcode = wmlangs[1]:getCode() local interwiki_link = language_link{ lang = lang, sc = sc, term = wmlangcode .. ":" .. target_page, alt = "(" .. wmlangcode .. ")", tr = "-" } terminfo.interwiki = tostring(html_create("span") :addClass("tpos") :wikitext("&nbsp;" .. interwiki_link) ) end function export.show_terminfo(terminfo, check) local lang = terminfo.lang local langcode, langname = lang:getCode(), lang:getCanonicalName() -- Translations must be for mainspace languages. if not lang:hasType("regular") then error("Translations must be for attested and approved main-namespace languages.") else local disallowed = (translations_data or get_translations_data()).disallowed local err_msg = disallowed[langcode] if err_msg then error("Translations not allowed in " .. langname .. " (" .. langcode .. "). " .. langname .. " translations should " .. err_msg) end local fullcode = lang:getFullCode() if fullcode ~= langcode then err_msg = disallowed[fullcode] if err_msg then langname = lang:getFullName() error("Translations not allowed in " .. langname .. " (" .. fullcode .. "). " .. langname .. " translations should " .. err_msg) end end end local term = terminfo.term -- Check if there is a term. Don't show the interwiki link if there is nothing to link to. if not term then -- Track entries that don't provide a term. -- FIXME: This should be a category. track("translations/no term") track("translations/no term/" .. langcode) end if terminfo.interwiki then interwiki(terminfo, term, lang, langcode) end langcode = lang:getFullCode() if (translations_data or get_translations_data()).need_super[langcode] then local tr = terminfo.tr if tr ~= nil then terminfo.tr = tr:gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") end end local link = full_link(terminfo, "translation") local categories = {"Salitang may salin sa " .. lang:getFullName()} --TLCHANGE "Terms with " .. lang:getFullName() .. " translations" if check then link = tostring(html_create("span") :addClass("ttbc") :tag("sup") :addClass("ttbc") :wikitext("(please [[WT:Translations#Translations to be checked|verify]])") :done() :wikitext(" " .. link) ) insert(categories, "Requests for review of " .. langname .. " translations") end return link .. format_categories(categories, en or get_en(), nil, canonical_pagename()) end -- Implements {{t}}, {{t+}}, {{t-check}} and {{t+check}}. function export.show(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["translation"]) local check = frame.args["check"] return export.show_terminfo({ lang = args[1], sc = args["sc"], track_sc = true, term = args[2], alt = args["alt"], id = args["id"], genders = args[3], tr = args["tr"], ts = args["ts"], lit = args["lit"], interwiki = frame.args["interwiki"], }, check and check ~= "") end local function add_id(div, id) return id and div:attr("id", anchor_encode("Translations-" .. id)) or div end -- Implements {{trans-top}} and part of {{trans-top-also}}. local function top(args, title, id, navhead) local column_width = (args["column-width"] == "wide" or args["column-width"] == "narrow") and "-" .. args["column-width"] or "" local div = html_create("div") :addClass("NavFrame") :node(navhead) :tag("div") :addClass("NavContent") :tag("table") :addClass("translations") :attr("role", "presentation") :attr("data-gloss", title or "") :tag("tr") :tag("td") :addClass("translations-cell") :addClass("multicolumn-list" .. column_width) :attr("colspan", "3") :allDone() div = add_id(div, id) local categories = {} if not title then insert(categories, "Translation table header lacks gloss") end local pagename = canonical_pagename() if is_translation_subpage() then insert(categories, "Translation subpages") end return (tostring(div):gsub("</td></tr></table></div></div>$", "")) .. (#categories > 0 and format_categories(categories, en or get_en(), nil, pagename) or "") .. -- Category to trigger [[MediaWiki:Gadget-TranslationAdder.js]]; we want this even on -- user pages and such. format_categories("Entradang may talasalinan", nil, nil, nil, true) .. --TLCHANGE "Entries with translation boxes" templatestyles("Module:translations/styles.css") end -- Entry point for {{trans-top}}. function export.top(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["trans-top"]) local title = args[1] local id = args.id or title title = title and remove_links(title) return top(args, title, id, html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(title or "Mga salin") --TLCHANGE "Translations" ) end -- Entry point for {{checktrans-top}}. function export.check_top(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["checktrans-top"]) local text = "\n:''The translations below need to be checked and inserted above into the appropriate translation tables. See instructions at " .. frame:expandTemplate{ title = "section link", args = {"Wiktionary:Entry layout#Translations"} } .. ".''\n" local header = html_create("div") :addClass("checktrans") :wikitext(text) local subtitle = args[1] local title = "Translations to be checked" if subtitle then title = title .. "&zwnj;: \"" .. subtitle .. "\"" end -- No ID, since these should always accompany proper translation tables, and can't be trusted anyway (i.e. there's no use-case for links). return tostring(header) .. "\n" .. top(args, title, nil, html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(title or "Translations") ) end -- Implements {{trans-bottom}}. function export.bottom(frame) -- Check nothing is being passed as a parameter. process_params(frame:getParent().args, (parameters_data or get_parameters_data())["trans-bottom"]) return "</table></div></div>" end -- Implements {{trans-see}} and part of {{trans-top-also}}. local function see(args, see_text) local navhead = html_create("div") :addClass("NavHead") :css("text-align", "left") :wikitext(args[1] .. " ") :tag("span") :css("font-weight", "normal") :wikitext("— ") :tag("i") :wikitext(see_text) :allDone() local terms, id = args[2], args["id"] if #terms == 0 then terms[1] = args[1] end for i = 1, #terms do local term_id = id[i] or id.default local data = { term = terms[i], id = term_id and "Translations-" .. term_id or "Translations", } terms[i] = plain_link(data) end return navhead:wikitext(concat(terms, ",&lrm; ")) end -- Entry point for {{trans-see}}. function export.see(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["trans-see"]) local div = html_create("div") :addClass("pseudo") :addClass("NavFrame") :node(see(args, "see ")) return tostring(add_id(div, args.id.default or args[1])) end -- Entry point for {{trans-top-also}}. function export.top_also(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["trans-top-also"]) local navhead = see(args, "tignan din ang ") --TLCHANGE "see also " local title = args[1] local id = args.id.default or title title = remove_links(title) return top(args, title, id, navhead) end -- Implements {{translation subpage}}. function export.subpage(frame) process_params(frame:getParent().args, (parameters_data or get_parameters_data())["translation subpage"]) if not is_translation_subpage() then error("This template should only be used on translation subpages, which have titles that end with '/translations'.") end -- "Translation subpages" category is handled by {{trans-top}}. return ("''This page contains translations for %s. See the main entry for more information.''"):format(full_link{ lang = en or get_en(), term = canonical_pagename(), }) end -- Implements {{t-needed}}. function export.needed(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["t-needed"]) local lang, category = args[1], "" local span = html_create("span") :addClass("trreq") :attr("data-lang", lang:getCode()) :tag("i") :wikitext("please add this translation if you can") :done() if not args["nocat"] then local type, sort = args[2], args["sort"] if type == "quote" then category = "Requests for translations of " .. lang:getCanonicalName() .. " quotations" elseif type == "usex" then category = "Requests for translations of " .. lang:getCanonicalName() .. " usage examples" else category = "Requests for translations into " .. lang:getCanonicalName() lang = en or get_en() end category = format_categories(category, lang, sort, not sort and canonical_pagename() or nil) end return tostring(span) .. category end -- Implements {{no equivalent translation}}. function export.no_equivalent(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["no equivalent translation"]) local text = "no equivalent term in " .. args[1]:getCanonicalName() if not args["noend"] then text = text .. ", but see" end return tostring(html_create("i"):wikitext(text)) end -- Implements {{no attested translation}}. function export.no_attested(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["no attested translation"]) local langname = args[1]:getCanonicalName() local text = "no [[WT:ATTEST|attested]] term in " .. langname local category = "" if not args["noend"] then text = text .. ", but see" local sort = args["sort"] category = format_categories(langname .. " unattested translations", en or get_en(), sort, not sort and canonical_pagename() or nil) end return tostring(html_create("i"):wikitext(text)) .. category end -- Implements {{not used}}. function export.not_used(frame) local args = process_params(frame:getParent().args, (parameters_data or get_parameters_data())["not used"]) return tostring(html_create("i"):wikitext((args[2] or "not used") .. " in " .. args[1]:getCanonicalName())) end return export 3e1v7oosuf16fldbug116jrchf21nqi 仁者见仁,智者见智 0 31349 177373 155704 2026-08-25T06:44:04Z Yivan000 4078 177373 wikitext text/x-wiki {{also|仁者見仁,智者見智}} =={{=zh=}}== {{zh-see|仁者見仁,智者見智}} 9ig8h1j7jpxflxolteoxndm8ac1l8ir Module:languages/data/exceptional 828 32629 177388 176135 2026-08-25T07:46:22Z Yivan000 4078 177388 Scribunto text/plain local m_langdata = require("Module:languages/data") -- 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 local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["aav-khs-pro"] = { "Proto-Khasian", 116773216, "aav-khs", "Latn", type = "reconstructed", } m["aav-nic-pro"] = { "Proto-Nicobarese", 116773793, "aav-nic", "Latn", type = "reconstructed", } m["aav-pkl-pro"] = { "Proto-Pnar-Khasi-Lyngngam", 116773259, "aav-pkl", "Latn", type = "reconstructed", } m["aav-pro"] = { -- mkh-pro will merge into this "Proto-Austroasiatic", 116773186, "aav", "Latn", type = "reconstructed", } m["afa-pro"] = { "Proto-Afroasiatic", 269125, "afa", "Latn", type = "reconstructed", } m["alg-aga"] = { "Agawam", nil, "alg-eas", "Latn", } m["alg-pro"] = { "Proto-Algonquian", 7251834, "alg", "Latn", type = "reconstructed", sort_key = {remove_diacritics = "·"}, } m["alv-ama"] = { "Amasi", 4740400, "nic-grs", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron}, } m["alv-bgu"] = { "Bainouk Gubeeher", 17002646, "alv-bny", "Latn", } m["alv-bua-pro"] = { "Proto-Bua", 116773723, "alv-bua", "Latn", type = "reconstructed", } m["alv-cng-pro"] = { "Proto-Cangin", 116773726, "alv-cng", "Latn", type = "reconstructed", } m["alv-edo-pro"] = { "Proto-Edoid", 116773206, "alv-edo", "Latn", type = "reconstructed", } m["alv-fli-pro"] = { "Proto-Fali", 116773754, "alv-fli", "Latn", type = "reconstructed", } m["alv-gbe-pro"] = { "Proto-Gbe", 116773208, "alv-gbe", "Latn", type = "reconstructed", } m["alv-gng-pro"] = { "Proto-Guang", 116773757, "alv-gng", "Latn", type = "reconstructed", } m["alv-gtm-pro"] = { "Proto-Central Togo", 116773732, "alv-gtm", "Latn", type = "reconstructed", } m["alv-gwa"] = { "Gwara", 16945580, "nic-pla", "Latn", } m["alv-hei-pro"] = { "Proto-Heiban", 116773760, "alv-hei", "Latn", type = "reconstructed", } m["alv-ido-pro"] = { "Proto-Idomoid", 116773764, "alv-ido", "Latn", type = "reconstructed", } m["alv-igb-pro"] = { "Proto-Igboid", 116773765, "alv-igb", "Latn", type = "reconstructed", } m["alv-kwa-pro"] = { "Proto-Kwa", 116773780, "alv-kwa", "Latn", type = "reconstructed", } m["alv-mum-pro"] = { "Proto-Mumuye", 116773791, "alv-mum", "Latn", type = "reconstructed", } m["alv-nup-pro"] = { "Proto-Nupoid", 116773795, "alv-nup", "Latn", type = "reconstructed", } m["alv-pro"] = { "Proto-Atlantic-Congo", 116732838, "alv", "Latn", type = "reconstructed", } m["alv-edk-pro"] = { "Proto-Edekiri", nil, "alv-edk", "Latn", type = "reconstructed", } m["alv-yor-pro"] = { "Proto-Yoruba", nil, "alv-yor", "Latn", type = "reconstructed", } m["alv-yrd-pro"] = { "Proto-Yoruboid", 116773824, "alv-yrd", "Latn", type = "reconstructed", } m["alv-von-pro"] = { "Proto-Volta-Niger", 116773820, "alv-von", "Latn", type = "reconstructed", } m["apa-pro"] = { "Proto-Apachean", 116773135, "apa", "Latn", type = "reconstructed", } m["aql-pro"] = { "Proto-Algic", 18389588, "aql", "Latn", type = "reconstructed", sort_key = {remove_diacritics = "·"}, } m["art-adu"] = { "Adûni", 1232159, "art", "Latn", type = "appendix-constructed", } m["art-bel"] = { "Belter Creole", 108055510, "art", "Latn", type = "appendix-constructed", sort_key = { remove_diacritics = c.acute, from = {"ɒ"}, to = {"a"}, }, } m["art-blk"] = { "Bolak", 2909283, "art", "Latn", type = "appendix-constructed", } m["art-bsp"] = { "Black Speech", 686210, "art", "Latn, Teng", type = "appendix-constructed", } m["art-com"] = { "Communicationssprache", 35227, "art", "Latn", type = "appendix-constructed", } m["art-dtk"] = { "Dothraki", 2914733, "art", "Latn", type = "appendix-constructed", } m["art-elo"] = { "Eloi", nil, "art", "Latn", type = "appendix-constructed", } m["art-gld"] = { "Goa'uld", 19823, "art", "Latn, Egyp, Mero", type = "appendix-constructed", } m["art-lap"] = { "Lapine", 6488195, "art", "Latn", type = "appendix-constructed", } m["art-man"] = { "Mandalorian", 54289, "art", "Latn", type = "appendix-constructed", } m["art-mun"] = { "Mundolinco", 851355, "art", "Latn", type = "appendix-constructed", } m["art-nav"] = { "Naʼvi", 316939, "art", "Latn", type = "appendix-constructed", } m["art-vlh"] = { "High Valyrian", 64483808, "art", "Latn", type = "appendix-constructed", } m["ath-nic"] = { "Nicola", 20609, "ath-nor", "Latn", } m["ath-pro"] = { "Proto-Athabaskan", 104841722, "ath", "Latn", type = "reconstructed", } m["auf-pro"] = { "Proto-Arawa", 116773706, "auf", "Latn", type = "reconstructed", } m["aus-alu"] = { "Alungul", 16827670, "aus-pmn", "Latn", } m["aus-and"] = { "Andjingith", 4754509, "aus-pmn", "Latn", } m["aus-ang"] = { "Angkula", 16828520, "aus-pmn", "Latn", } m["aus-arn-pro"] = { "Proto-Arnhem", 116773720, "aus-arn", "Latn", type = "reconstructed", } m["aus-bra"] = { "Barranbinya", 4863220, "aus-pmn", "Latn", } m["aus-brm"] = { "Barunggam", 4865914, "aus-pmn", "Latn", } m["aus-cww-pro"] = { "Proto-Central New South Wales", 116773199, "aus-cww", "Latn", type = "reconstructed", } m["aus-dal-pro"] = { "Proto-Daly", 116773743, "aus-dal", "Latn", type = "reconstructed", } m["aus-guw"] = { "Guwar", 6652138, "aus-pam", "Latn", } m["aus-lsw"] = { "Little Swanport", 6652138, "qfa-unc", "Latn", } m["aus-mbi"] = { "Mbiywom", 6799701, "aus-pmn", "Latn", } m["aus-ngk"] = { "Ngkoth", 7022405, "aus-pmn", "Latn", } m["aus-nyu-pro"] = { "Proto-Nyulnyulan", 116773797, "aus-nyu", "Latn", type = "reconstructed", } m["aus-pam-pro"] = { "Proto-Pama-Nyungan", 33942, "aus-pam", "Latn", type = "reconstructed", } m["aus-tul"] = { "Tulua", 16938541, "aus-pam", "Latn", } m["aus-uwi"] = { "Uwinymil", 7903995, "aus-arn", "Latn", } m["aus-wdj-pro"] = { "Proto-Iwaidjan", 116773767, "aus-wdj", "Latn", type = "reconstructed", } m["aus-won"] = { "Wong-gie", nil, "aus-pam", "Latn", } m["aus-wul"] = { "Wulguru", 8039196, "aus-dyb", "Latn", } m["aus-ynk"] = { -- contrast nny "Yangkaal", 3913770, "aus-tnk", "Latn", } m["awd-amc-pro"] = { "Proto-Amuesha-Chamicuro", nil, "awd", "Latn", type = "reconstructed", } m["awd-kmp-pro"] = { "Proto-Kampa", nil, "awd", "Latn", type = "reconstructed", } m["awd-prw-pro"] = { "Proto-Paresi-Waura", nil, "awd", "Latn", type = "reconstructed", } m["awd-ama"] = { "Amarizana", 16827787, "awd", "Latn", } m["awd-ana"] = { "Anauyá", 16828252, "awd", "Latn", } m["awd-apo"] = { "Apolista", 16916645, "awd", "Latn", } m["awd-cab"] = { "Cabre", 16850160, "awd", "Latn", } m["awd-gnu"] = { "Guinau", 3504087, "awd", "Latn", } m["awd-kar"] = { "Cariay", 16920253, "awd", "Latn", } m["awd-kaw"] = { "Kawishana", 6379993, "awd-nwk", "Latn", } m["awd-kus"] = { "Kustenau", 5196293, "awd", "Latn", } m["awd-man"] = { "Manao", 6746920, "awd", "Latn", } m["awd-mar"] = { "Marawan", 6755108, "awd", "Latn", } m["awd-mpr"] = { "Maipure", 6736872, "awd", "Latn", } m["awd-mrt"] = { "Mariaté", 16910017, "awd-nwk", "Latn", } m["awd-nwk-pro"] = { "Proto-Nawiki", 116773234, "awd-nwk", "Latn", type = "reconstructed", } m["awd-pai"] = { "Paikoneka", 128807835, "awd", "Latn", } m["awd-pas"] = { "Pasé", 7143168, "awd-nwk", "Latn", } m["awd-pro"] = { "Proto-Arawak", 97573478, "awd", "Latn", type = "reconstructed", } m["awd-she"] = { "Shebayo", 7492248, "awd", "Latn", } m["awd-taa-pro"] = { "Proto-Ta-Arawak", 116773282, "awd-taa", "Latn", type = "reconstructed", } m["awd-wai"] = { "Wainumá", 16910017, "awd-nwk", "Latn", } m["awd-yum"] = { "Yumana", 8061062, "awd-nwk", "Latn", } m["azc-caz"] = { "Cazcan", 5055514, "azc", "Latn", } m["azc-cup-pro"] = { "Proto-Cupan", 116773738, "azc-cup", "Latn", type = "reconstructed", } m["azc-ktn"] = { "Kitanemuk", 3197558, "azc-tak", "Latn", } m["azc-nah-pro"] = { "Proto-Nahuan", 7251860, "azc-nah", "Latn", type = "reconstructed", } m["azc-num-pro"] = { "Proto-Numic", 116773247, "azc-num", "Latn", type = "reconstructed", } m["azc-pro"] = { "Proto-Uto-Aztecan", 96400333, "azc", "Latn", type = "reconstructed", } m["azc-tak-pro"] = { "Proto-Takic", 116773283, "azc-tak", "Latn", type = "reconstructed", } m["azc-tat"] = { "Tataviam", 743736, "azc", "Latn", } m["ber-pro"] = { "Proto-Berber", 2855698, "ber", "Latn", type = "reconstructed", } m["ber-fog"] = { "Fogaha", 107610173, "ber", "Latn", } m["ber-zuw"] = { "Zuwara", 4117169, "ber", "Latn", } m["bnt-bal"] = { "Balong", 93935237, "bnt-bbo", "Latn", } m["bnt-bon"] = { "Boma Nkuu", nil, "bnt", "Latn", } m["bnt-boy"] = { "Boma Yumu", nil, "bnt", "Latn", } m["bnt-bwa"] = { "Bwala", 128810345, "bnt-tek", "Latn", } m["bnt-cmw"] = { "Chimwiini", 4958328, "bnt-swh", "Latn", } m["bnt-ind"] = { "Indanga", 51412803, "bnt", "Latn", } m["bnt-lal"] = { "Lala (South Africa)", 6480154, "bnt-ngu", "Latn", } m["bnt-mpi"] = { "Mpiin", 93937013, "bnt-bdz", "Latn", } m["bnt-mpu"] = { "Mpuono", -- not to be confused with Mbuun zmp 36056, "bnt", "Latn", } m["bnt-ngu-pro"] = { "Proto-Nguni", 961559, "bnt-ngu", "Latn", type = "reconstructed", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.caron}, } m["bnt-phu"] = { "Phuthi", 33796, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute}, } m["bnt-pro"] = { "Proto-Bantu", 3408025, "bnt", "Latn", type = "reconstructed", sort_key = "bnt-pro-sortkey", } m["bnt-sab-pro"] = { "Proto-Sabaki", nil, -- Q2209395 is the code for the Sabaki family "bnt-sab", "Latn", type = "reconstructed", } m["bnt-sbo"] = { "South Boma", nil, "bnt", "Latn", } m["bnt-sts-pro"] = { "Proto-Sotho-Tswana", 116773278, "bnt-sts", "Latn", type = "reconstructed", } m["btk-pro"] = { "Proto-Batak", 116773191, "btk", "Latn", type = "reconstructed", } m["cau-abz-pro"] = { "Proto-Abkhaz-Abaza", 7251831, "cau-abz", "Latn", type = "reconstructed", } m["cau-and-pro"] = { "Proto-Andian", nil, "cau-and", "Latn", type = "reconstructed", } m["cau-ava-pro"] = { "Proto-Avaro-Andian", 116773187, "cau-ava", "Latn", type = "reconstructed", } m["cau-cir-pro"] = { "Proto-Circassian", 7251838, "cau-cir", "Latn", type = "reconstructed", } m["cau-drg-pro"] = { "Proto-Dargwa", 116773205, "cau-drg", "Latn", type = "reconstructed", } m["cau-lzg-pro"] = { "Proto-Lezghian", 116773223, "cau-lzg", "Latn", type = "reconstructed", } m["cau-nec-pro"] = { "Proto-Northeast Caucasian", 116773244, "cau-nec", "Latn", type = "reconstructed", } m["cau-nkh-pro"] = { "Proto-Nakh", 108032840, "cau-nkh", "Latn", type = "reconstructed", } m["cau-nwc-pro"] = { "Proto-Northwest Caucasian", 7251861, "cau-nwc", "Latn", type = "reconstructed", } m["cau-tsz-pro"] = { "Proto-Tsezian", 116773287, "cau-tsz", "Latn", type = "reconstructed", } m["cba-ata"] = { "Atanques", 4812783, "cba", "Latn", } m["cba-cat"] = { "Catío Chibcha", 7083619, "cba", "Latn", } m["cba-dor"] = { "Dorasque", 5297532, "cba", "Latn", } m["cba-dui"] = { "Duit", 3041061, "cba", "Latn", } m["cba-hue"] = { "Huetar", 35514, "cba", "Latn", } m["cba-nut"] = { "Nutabe", 7070405, "cba", "Latn", } m["cba-pro"] = { "Proto-Chibchan", 116773203, "cba", "Latn", type = "reconstructed", } m["ccs-pro"] = { "Proto-Kartvelian", 2608203, "ccs", "Latn", type = "reconstructed", strip_diacritics = { from = {"q̣", "p̣", "ʓ", "ċ"}, to = {"q̇", "ṗ", "ʒ", "c̣"} }, } m["ccs-gzn-pro"] = { "Proto-Georgian-Zan", 23808119, "ccs-gzn", "Latn", type = "reconstructed", strip_diacritics = { from = {"q̣", "p̣", "ʓ", "ċ"}, to = {"q̇", "ṗ", "ʒ", "c̣"} }, } m["cdc-cbm-pro"] = { "Proto-Central Chadic", 116773197, "cdc-cbm", "Latn", type = "reconstructed", } m["cdc-mas-pro"] = { "Proto-Masa", 116773789, "cdc-mas", "Latn", type = "reconstructed", } m["cdc-pro"] = { "Proto-Chadic", 116773201, "cdc", "Latn", type = "reconstructed", } m["cdd-pro"] = { "Proto-Caddoan", 116773725, "cdd", "Latn", type = "reconstructed", } m["cel-bry-pro"] = { "Proto-Brythonic", 1248800, "cel-bry", "Latn, Polyt", sort_key = { Latn = "cel-bry-pro-sortkey", }, -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["cel-gal"] = { "Gallaecian", 3094789, "cel-his", } m["cel-gau"] = { "Gaulish", 29977, "cel", "Latn, Polyt, Ital", strip_diacritics = { Latn = {remove_diacritics = c.macron .. c.breve .. c.diaer}, }, sort_key = { Latn = "cel-bry-pro-sortkey", }, -- Ital translit in [[Module:scripts/data]] -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["cel-pro"] = { "Proto-Celtic", 653649, "cel", "Latn", type = "reconstructed", sort_key = "cel-pro-sortkey", } m["chi-pro"] = { "Proto-Chimakuan", 116773734, "chi", "Latn", type = "reconstructed", } m["chm-pro"] = { "Proto-Mari", 116773788, "chm", "Latn", type = "reconstructed", } m["cmc-pro"] = { "Proto-Chamic", 114793834, "cmc", "Latn", type = "reconstructed", } m["crp-bip"] = { "Basque-Icelandic Pidgin", 810378, "crp", "Latn", ancestors = "eu", } m["crp-gep"] = { "West Greenlandic Pidgin", 17036301, "crp", "Latn", ancestors = "kl", } m["crp-kia"] = { "Kiautschou German Pidgin", 108314615, "crp", "Latn", ancestors = "de", } m["crp-mar"] = { "Maroon Spirit Language", 1093206, "crp", "Latn", ancestors = "en", } m["crp-mpp"] = { "Macau Pidgin Portuguese", 128804537, "crp", "Hant, Latn", ancestors = "pt", sort_key = {Hant = "Hani-sortkey"}, } m["crp-rsn"] = { "Russenorsk", 505125, "crp", "Cyrl, Latn", ancestors = "nn, ru", translit = {Cyrl = "ru-translit"}, } m["crp-spp"] = { "Samoan Plantation Pidgin", 7409948, "crp", "Latn", ancestors = "en", } m["crp-slb"] = { "Solombala English", 7558525, "crp", "Cyrl, Latn", ancestors = "en, ru", translit = {Cyrl = "ru-translit"}, } m["crp-tpr"] = { "Taimyr Pidgin Russian", 16930506, "crp", "Cyrl", ancestors = "ru", translit = "ru-translit", } m["csu-bba-pro"] = { "Proto-Bongo-Bagirmi", 116773722, "csu-bba", "Latn", type = "reconstructed", } m["csu-maa-pro"] = { "Proto-Mangbetu", 116773786, "csu-maa", "Latn", type = "reconstructed", } m["csu-pro"] = { "Proto-Central Sudanic", 116773730, "csu", "Latn", type = "reconstructed", } m["csu-sar-pro"] = { "Proto-Sara", 116773809, "csu-sar", "Latn", type = "reconstructed", } m["cus-ash"] = { "Ashraaf", 4805855, "cus-som", "Latn", } m["cus-hec-pro"] = { "Proto-Highland East Cushitic", 116773761, "cus-hec", "Latn", type = "reconstructed", } m["cus-som-pro"] = { "Proto-Somaloid", nil, "cus-som", "Latn", type = "reconstructed", } m["cus-sou-pro"] = { "Proto-South Cushitic", 126081567, "cus-sou", "Latn", type = "reconstructed", } m["cus-pro"] = { "Proto-Cushitic", 116773204, "cus", "Latn", type = "reconstructed", } m["dmn-dam"] = { "Dama (Sierra Leone)", 19601574, "dmn", "Latn", } m["dra-bry"] = { "Beary", 1089116, "qfa-mix", "Mlym, Knda", ancestors = "ml, tcy", -- Knda translit in [[Module:scripts/data]] -- Mlym translit in [[Module:scripts/data]] } m["dra-cen-pro"] = { "Proto-Central Dravidian", nil, "dra-cen", "Latn", type = "reconstructed", } m["dra-mkn"] = { "Middle Kannada", 128810572, "dra-kan", "Knda", -- Knda translit in [[Module:scripts/data]] } m["dra-nor-pro"] = { "Proto-North Dravidian", 124433593, "dra-nor", "Latn", type = "reconstructed", } m["dra-okn"] = { "Old Kannada", 15723156, "dra-kan", "Knda", -- Knda translit in [[Module:scripts/data]] } m["dra-ote"] = { "Old Telugu", 126720868, "dra-tel", "Telu", translit = "te-translit", } m["dra-pro"] = { "Proto-Dravidian", 1702853, "dra", "Latn", type = "reconstructed", } m["dra-sdo-pro"] = { "Proto-South Dravidian I", 104847952, -- Wikipedia's "Proto-South Dravidian" is Proto-South Dravidian I in this scheme. "dra-sdo", "Latn", type = "reconstructed", } m["dra-sdt-pro"] = { "Proto-South Dravidian II", 128885257, "dra-sdt", "Latn", type = "reconstructed", } m["dra-sou-pro"] = { "Proto-South Dravidian", 128886121, "dra-sou", "Latn", type = "reconstructed", } m["egx-dem"] = { "Demotic Egyptian", 36765, "egx", "Latn, Egyd, Polyt", sort_key = { Latn = { remove_diacritics = "'%-%s", from = {"ꜣ", "j", "e", "ꜥ", "y", "w", "b", "p", "f", "m", "n", "r", "l", "ḥ", "ḫ", "h̭", "ẖ", "h", "š", "s", "q", "k", "g", "ṱ", "ṯ", "t", "ḏ", "%.", "⸗"}, to = {p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[12], p[13], p[15], p[16], p[16], p[17], p[14], p[19], p[18], p[20], p[21], p[22], p[23], p[24], p[23], p[25], p[26], p[26]} }, }, -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["dmn-pro"] = { "Proto-Mande", 116773785, "dmn", "Latn", type = "reconstructed", } m["dmn-mdw-pro"] = { "Proto-Western Mande", 116773822, "dmn-mdw", "Latn", type = "reconstructed", } m["dru-pro"] = { "Proto-Rukai", 116773807, "map", "Latn", type = "reconstructed", } m["ero-gsz"] = { "Geshiza", nil, "ero", "Latn", } m["ero-nya"] = { "Nyagrong Minyag", nil, "ero", "Latn", } m["ero-tau"] = { "Stau", nil, "ero", "Latn", } m["esx-esk-pro"] = { "Proto-Eskimo", 7251842, "esx-esk", "Latn", type = "reconstructed", } m["esx-ink"] = { "Inuktun", 1671647, "esx-inu", "Latn", } m["esx-inq"] = { "Inuinnaqtun", 28070, "esx-inu", "Latn", } m["esx-inu-pro"] = { "Proto-Inuit", 60785588, "esx-inu", "Latn", type = "reconstructed", } m["esx-pro"] = { "Proto-Eskimo-Aleut", 7251843, "esx", "Latn", type = "reconstructed", } m["esx-tut"] = { "Tunumiisut", 15665389, "esx-inu", "Latn", } m["euq-pro"] = { "Proto-Basque", 938011, "euq", "Latn", type = "reconstructed", } m["gba-pro"] = { "Proto-Gbaya", nil, "gba", "Latn", type = "reconstructed", } m["gem-pro"] = { "Proto-Germanic", 669623, "gem", "Latn", type = "reconstructed", sort_key = "gem-pro-sortkey", } m["gme-bur"] = { "Burgundian", 47625, "gme", "Latn", } m["gme-cgo"] = { "Crimean Gothic", 36211, "gme", "Latn", } m["gmq-gut"] = { "Gutnish", 1256646, "gmq", "Latn", ancestors = "gmq-ogt", } m["gmq-jmk"] = { "Jamtish", 35512, "gmq-eas", "Latn", } m["gmq-mno"] = { "Middle Norwegian", 3417070, "gmq-wes", "Latn", } m["gmq-oda"] = { "Old Danish", 12330003, "gmq-eas", "Latn, Runr", strip_diacritics = {remove_diacritics = c.macron}, } m["gmq-ogt"] = { "Old Gutnish", 1133488, "gmq", "Latn, Runr", ancestors = "non", } m["gmq-osw"] = { "Old Swedish", 2417210, "gmq-eas", "Latn, Runr", strip_diacritics = {remove_diacritics = c.macron}, } m["gmq-pro"] = { "Proto-Norse", 1671294, "gmq", "Runr", translit = "Runr-translit", } m["gmq-scy"] = { "Scanian", 768017, "gmq-eas", "Latn", } m["gmw-bgh"] = { "Bergish", 329030, "gmw-frk", "Latn", } m["gmw-cfr"] = { "Central Franconian", 572197, "gmw-hgm", "Latn", ancestors = "gmh", wikimedia_codes = "ksh", } m["gmw-ecg"] = { "East Central German", 499344, -- subsumes Q699284, Q152965 "gmw-hgm", "Latn", ancestors = "gmh", } m["gmw-fin"] = { "Fingallian", 3072588, "gmw-ian", "Latn", } m["gmw-gts"] = { "Gottscheerish", 533109, "gmw-hgm", "Latn", ancestors = "bar", } m["gmw-jdt"] = { "Jersey Dutch", 1687911, "gmw-frk", "Latn", ancestors = "nl", } m["gmw-msc"] = { "Middle Scots", 3327000, "gmw-ang", "Latn", ancestors = "enm-esc", } m["gmw-pro"] = { "Proto-West Germanic", 78079021, "gmw", "Latn, Runr", -- type = "reconstructed", -- largely but not entirely reconstructed (like Proto-Norse); see April '24 BP, set back to reconstructed (?) if 'anti-asterisk' is added sort_key = "gmw-pro-sortkey", } m["gmw-rfr"] = { "Rhine Franconian", 707007, "gmw-hgm", "Latn", ancestors = "gmh", } m["gmw-stm"] = { "Sathmar Swabian", 2223059, "gmw-hgm", "Latn", ancestors = "swg", } m["gmw-tsx"] = { "Transylvanian Saxon", 260942, "gmw-hgm", "Latn", ancestors = "gmw-cfr", } m["gmw-vog"] = { "Volga German", 312574, "gmw-hgm", "Latn", ancestors = "gmw-rfr", } m["gmw-zps"] = { "Zipser German", 205548, "gmw-hgm", "Latn", ancestors = "gmh", } m["gn-cls"] = { "Classical Guarani", 17478065, "gn", "Latn", } m["grk-cal"] = { "Calabrian Greek", 1146398, "grk", "Latn, Grek", ancestors = "grk-ita", translit = { Grek = "el-translit", }, -- Grek display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["grk-ita"] = { "Italiot Greek", 19720507, "grk", "Latn, Grek", ancestors = "gkm", translit = { Grek = "el-translit", }, -- Grek display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["grk-mar"] = { "Mariupol Greek", 4400023, "grk", "Cyrl, Latn, Grek", ancestors = "gkm", translit = { Cyrl = "grk-mar-translit", Grek = "grk-mar-translit", }, override_translit = true, strip_diacritics = { Cyrl = {remove_diacritics = c.acute}, }, -- Grek display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["grk-pro"] = { "Proto-Hellenic", 1231805, "grk", "Latn, Polyt", type = "reconstructed", sort_key = {Latn = { from = {"ʰ", "ʷ"}, to = {"h", "w"}, remove_diacritics = c.grave .. c.acute .. c.macron .. c.breve .. c.caron }}, -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] -- NOTE: formerly no translit specified for Polyt; presumably an accidental omission; if not, set Polyt = false in -- the translit section } m["hmn-pro"] = { "Proto-Hmong", 116773210, "hmn", "Latn", type = "reconstructed", } m["hmx-mie-pro"] = { "Proto-Mien", 116773229, "hmx-mie", "Latn", type = "reconstructed", } m["hmx-pro"] = { "Proto-Hmong-Mien", 7251846, "hmx", "Latn", type = "reconstructed", } m["hyx-pro"] = { "Proto-Armenian", 3848498, "hyx", "Latn", type = "reconstructed", } m["iir-nur-pro"] = { "Proto-Nuristani", 116773248, "iir-nur", "Latn", type = "reconstructed", } m["iir-pro"] = { "Proto-Indo-Iranian", 966439, "iir", "Latn", type = "reconstructed", } m["ijo-pro"] = { "Proto-Ijoid", 116773766, "ijo", "Latn", type = "reconstructed", } m["inc-apa"] = { "Apabhramsa", 616419, "inc-mid", "Deva, Shrd, Sidd", ancestors = "pra", translit = { Deva = "sa-translit", -- Shrd translit in [[Module:scripts/data]] -- Sidd translit in [[Module:scripts/data]] }, } m["inc-ash"] = { "Ashokan Prakrit", 104854379, "inc-mid", "Brah, Khar", ancestors = "sa", translit = { -- Brah translit in [[Module:scripts/data]] Khar = "Khar-translit", }, } m["inc-dng-pro"] = { "Proto-Dangari", nil, "inc-dng", "Latn", type = "reconstructed", } m["inc-kam"] = { "Kamarupi Prakrit", 6356097, "inc-bas", "Brah, Sidd", -- Brah, Sidd translit in [[Module:scripts/data]] } m["inc-kho"] = { "Kholosi", 24952008, "inc-snd", "Latn", } m["inc-krd-pro"] = { "Proto-Kamta", 128816843, "inc-bas", "Latn", ancestors = "inc-kam", type = "reconstructed", } m["inc-mas"] = { "Middle Assamese", 128806836, "inc-bas", "as-Beng", ancestors = "inc-oas", translit = "inc-mas-translit", } m["inc-mbn"] = { "Gitnang Benggali", --TLCHANGE 113559927, "inc-bas", "Beng", ancestors = "inc-obn", translit = "inc-mbn-translit", english_name = "Middle Bengali", --TLCHANGE } m["inc-mgu"] = { "Middle Gujarati", 24907429, "inc-wes", "Deva", ancestors = "inc-ogu", } m["inc-mor"] = { "Middle Odia", 128810882, "inc-eas", "Orya", ancestors = "inc-oor", } m["inc-oas"] = { "Early Assamese", 85758237, "inc-bas", "as-Beng", ancestors = "inc-kam", translit = "inc-oas-translit", } m["inc-oaw"] = { "Old Awadhi", nil, "inc-hie", "Deva, Kthi, ur-Arab", strip_diacritics = { from = {"هٔ", "ۂ"}, -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه" to = {"ہ", "ہ"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef }, translit = { Deva = "sa-translit", Kthi = "sa-Kthi-translit", ["ur-Arab"] = "inc-ohi-translit", }, } m["inc-obn"] = { "Lumang Benggali", --TLCHANGE 113559926, "inc-bas", "Beng", english_name = "Old Bengali", --TLCHANGE } m["inc-ogu"] = { "Old Gujarati", 24907427, "inc-wes", "Deva", translit = "sa-translit", } m["inc-ohi"] = { "Lumang Hindi", --TLCHANGE 48767781, "inc-hiw", "Deva, ur-Arab", strip_diacritics = { from = {"هٔ", "ۂ"}, -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه" to = {"ہ", "ہ"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef }, translit = { Deva = "sa-translit", ["ur-Arab"] = "inc-ohi-translit", }, english_name = "Old Hindi", --TLCHANGE } m["inc-oor"] = { "Old Odia", 128807801, "inc-eas", "Orya", } m["inc-opa"] = { "Old Punjabi", 115270971, "inc-pan", "Guru, pa-Arab", translit = { Guru = "inc-opa-Guru-translit", ["pa-Arab"] = "pa-Arab-translit", }, strip_diacritics = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun}, } m["inc-pro"] = { "Proto-Indo-Aryan", 23808344, "inc", "Latn", type = "reconstructed", } m["ine-ana-pro"] = { "Proto-Anatolian", 7251833, "ine-ana", "Latn", type = "reconstructed", } m["ine-bsl-pro"] = { "Proto-Balto-Slavic", 1703347, "ine-bsl", "Latn", type = "reconstructed", sort_key = { from = {"[áā]", "[éēḗ]", "[íī]", "[óōṓ]", "[úū]", c.acute, c.macron, "ˀ"}, to = {"a", "e", "i", "o", "u"} }, } m["ine-kal"] = { "Kalašma", 122770439, "ine-ana", "Xsux", } m["ine-pae"] = { "Paeonian", 2705672, "ine", "Polyt", -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ine-pro"] = { "Proto-Indo-Europeo", --TLCHANGE 37178, "ine", "Latn", type = "reconstructed", sort_key = { from = {"[áā]", "[éēḗ]", "[íī]", "[óōṓ]", "[úū]", "ĺ", "ḿ", "ń", "ŕ", "ǵ", "ḱ", "ʰ", "ʷ", "₁", "₂", "₃", c.ringbelow, c.acute, c.macron}, to = {"a", "e", "i", "o", "u", "l", "m", "n", "r", "g'", "k'", "¯h", "¯w", "1", "2", "3"} }, english_name = "Proto-Indo-European", --TLCHANGE spanish_name = "Protoindoeuropeo", --TLCHANGE } m["ine-toc-pro"] = { "Proto-Tocharian", 104841462, "ine-toc", "Latn", type = "reconstructed", } m["xme-old"] = { "Old Median", 36461, "xme", "Polyt, Latn", -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["xme-mid"] = { "Middle Median", 12836150, "xme", "Latn", } m["xme-ker"] = { "Kermanic", 129850, "xme", "fa-Arab, Latn, Hebr", ancestors = "xme-mid", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["xme-taf"] = { "Tafreshi", nil, "xme", "fa-Arab, Latn", ancestors = "xme-mid", } m["xme-ttc-pro"] = { "Proto-Tatic", 122973870, "xme-ttc", "Latn", ancestors = "xme-mid", } m["xme-kls"] = { "Kalasuri", nil, "xme-ttc", ancestors = "xme-ttc-nor", } m["xme-klt"] = { "Kilit", 3612452, "xme-ttc", "Cyrl", -- and fa-Arab? } m["xme-ott"] = { "Old Tati", 434697, "xme-ttc", "fa-Arab, Latn", } m["ira-kms-pro"] = { "Proto-Komisenian", 116773777, "ira-kms", "Latn", type = "reconstructed", } m["ira-mpr-pro"] = { "Proto-Medo-Parthian", 116773227, "ira-mpr", "Latn", type = "reconstructed", } m["ira-pat-pro"] = { "Proto-Pathan", 116773255, "ira-pat", "Latn", type = "reconstructed", } m["ira-pro"] = { "Proto-Iranian", 4167865, "ira", "Latn", type = "reconstructed", } m["ira-zgr-pro"] = { "Proto-Zaza-Gorani", 116775031, "ira-zgr", "Latn", type = "reconstructed", } m["xsc-pro"] = { "Proto-Scythian", 116773273, "xsc", "Latn", type = "reconstructed", } m["xsc-sar-pro"] = { "Proto-Sarmatian", 116773249, "xsc-sar", "Latn", type = "reconstructed", } m["xsc-skw-pro"] = { "Proto-Saka-Wakhi", 116773267, "xsc-skw", "Latn", type = "reconstructed", } m["xsc-sak-pro"] = { "Proto-Saka", 116773264, "xsc-sak", "Latn", type = "reconstructed", } m["ira-sym-pro"] = { "Proto-Shughni-Yazghulami-Munji", 116773813, "ira-sym", "Latn", type = "reconstructed", } m["ira-sgi-pro"] = { "Proto-Sanglechi-Ishkashimi", 116773808, "ira-sgi", "Latn", type = "reconstructed", } m["ira-mny-pro"] = { "Proto-Munji-Yidgha", 116773792, "ira-mny", "Latn", type = "reconstructed", } m["ira-shy-pro"] = { "Proto-Shughni-Yazghulami", 116773812, "ira-shy", "Latn", type = "reconstructed", } m["ira-shr-pro"] = { "Proto-Shughni-Roshani", 116773811, "ira-shr", "Latn", type = "reconstructed", } m["ira-sgc-pro"] = { "Proto-Sogdic", 116773276, "ira-sgc", "Latn", type = "reconstructed", } m["ira-wnj"] = { "Vanji", 3398419, "ira-shy", "Latn", } m["iro-ere"] = { "Erie", 5388365, "iro-nor", "Latn", } m["iro-min"] = { "Mingo", 128531, "iro-nor", "Latn", ietf_subtag = "i-mingo", -- grandfathered IETF tag } m["iro-nor-pro"] = { "Proto-North Iroquoian", 116773242, "iro-nor", "Latn", type = "reconstructed", } m["iro-pro"] = { "Proto-Iroquoian", 7251852, "iro", "Latn", type = "reconstructed", } m["itc-pro"] = { "Proto-Italic", 17102720, "itc", "Latn", type = "reconstructed", } m["itc-psa"] = { "Pre-Samnite", 7239186, "itc-sbl", "Ital, Polyt, Latn", -- Ital translit in [[Module:scripts/data]] (NOTE: formerly not present, probably an accidental omission) -- Polyt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["jpx-hcj"] = { "Hachijō", 5637049, "jpx", "Jpan", ancestors = "ojp-eas", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["jpx-pro"] = { "Proto-Japonic", 3924309, "jpx", "Latn", type = "reconstructed", } m["jpx-ryu-pro"] = { "Proto-Ryukyuan", 56349069, "jpx-ryu", "Latn", type = "reconstructed", } m["kar-pro"] = { "Proto-Karen", 85794783, "kar", "Latn", type = "reconstructed", } m["kca-eas"] = { "Eastern Khanty", 30304622, "kca", "Cyrl", translit = "kca-translit", override_translit = true, -- TODO temporary until MediaWiki supports Unicode 16 (probably requires a PHP update from their side) sort_key = { Cyrl = { from = {"ᲊ"}, to = {"Ᲊ"} } }, } m["kca-nor"] = { "Northern Khanty", 30304527, "kca", "Cyrl", translit = "kca-translit", override_translit = true, -- TODO temporary until MediaWiki supports Unicode 16 (probably requires a PHP update from their side) sort_key = { Cyrl = { from = {"ᲊ"}, to = {"Ᲊ"} } }, } m["kca-pro"] = { "Proto-Khanty", 127505171, "kca", "Latn", type = "reconstructed", } m["kca-sou"] = { "Southern Khanty", 30304618, "kca", "Cyrl", translit = "kca-translit", override_translit = true, } m["khi-kho-pro"] = { "Proto-Khoe", 116773218, "khi-kho", "Latn", type = "reconstructed", } m["khi-kun"] = { "ǃKung", 32904, "khi-kxa", "Latn", } m["ko-ear"] = { "Early Modern Korean", 756014, "qfa-kor", "Kore", ancestors = "okm", translit = "okm-translit", -- Kore strip_diacritics in [[Module:scripts/data]] } m["kro-pro"] = { "Proto-Kru", 116773778, "kro", "Latn", type = "reconstructed", } m["ku-pro"] = { "Proto-Kurdish", 116773221, "ku", "Latn", type = "reconstructed", } m["map-ata-pro"] = { "Proto-Atayalic", 116773151, "map-ata", "Latn", type = "reconstructed", } m["map-bms"] = { "Banyumasan", 33219, "map", "Latn, Java", } m["map-pro"] = { "Proto-Austronesian", 49230, "map", "Latn", type = "reconstructed", } m["mis-hkl"] = { "Kelantan Peranakan Hokkien", 108794818, "qfa-mix", ancestors = "nan-hbl, sou, mfa", } m["mis-idn"] = { "Idiom Neutral", 35847, "art", "Latn", type = "appendix-constructed", } m["mis-isa"] = { "Isaurian", 16956868, nil, -- "Xsux, Hluw, Latn", } m["mis-jie"] = { "Jie", 124424186, nil, "Hani", sort_key = "Hani-sortkey", } m["mis-jzh"] = { "Jizhao", 45242758, "qfa-bej", "Latn", } m["mis-kas"] = { "Kassite", 35612, nil, "Xsux", } m["mis-mmd"] = { "Mimi of Decorse", 6862206, nil, "Latn", } m["mis-mmn"] = { "Mimi of Nachtigal", 6862207, nil, "Latn", } m["mis-phi"] = { "Philistine", 2230924, nil, "Phnx", -- Phnx translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } m["mis-rou"] = { "Rouran", 48816637, "qfa-xgx", "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, } m["mis-tdl"] = { "Turdulian", 133176492, } m["mis-tdt"] = { "Turdetanian", 133176461, } m["mis-tnw"] = { "Tangwang", 7683179, "qfa-mix", "Latn", ancestors = "cmn, sce", } m["mis-tuh"] = { "Tuyuhun", 48816625, "qfa-xgx", "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, } m["mis-tuo"] = { "Tuoba", 48816629, "qfa-xgx", "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, } m["mis-wuh"] = { "Wuhuan", 118976867, "qfa-xgx", "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, } m["mis-xbi"] = { "Xianbei", 4448647, "qfa-xgx", "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, } m["mis-xnu"] = { "Xiongnu", 10901674, nil, "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, } m["mjg-mgl"] = { "Mongghul", 53765528, "mjg", "Latn", -- also Mong, Cyrl ? } m["mjg-mgr"] = { "Mangghuer", 56285392, "mjg", "Latn", -- also Mong, Cyrl ? } m["mkh-asl-pro"] = { "Proto-Aslian", 55630680, "mkh-asl", "Latn", type = "reconstructed", } m["mkh-ban-pro"] = { "Proto-Bahnaric", 116773189, "mkh-ban", "Latn", type = "reconstructed", } m["mkh-kat-pro"] = { "Proto-Katuic", 116773772, "mkh-kat", "Latn", type = "reconstructed", } m["mkh-khm-pro"] = { "Proto-Khmuic", 116773774, "mkh-khm", "Latn", type = "reconstructed", } m["mkh-kmr-pro"] = { "Proto-Khmeric", 55630684, "mkh-kmr", "Latn", type = "reconstructed", } m["mkh-mmn"] = { "Middle Mon", 121337926, "mkh-mnc", "Latn, Mymr", --and also Pallava ancestors = "omx", } m["mkh-mnc-pro"] = { "Proto-Monic", 116773231, "mkh-mnc", "Latn", type = "reconstructed", } m["mkh-mvi"] = { "Middle Vietnamese", 9199, "mkh-vie", "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, } m["mkh-pal-pro"] = { "Proto-Palaungic", 104847372, "mkh-pal", "Latn", type = "reconstructed", } m["mkh-pea-pro"] = { "Proto-Pearic", 116773804, "mkh-pea", "Latn", type = "reconstructed", } m["mkh-pkn-pro"] = { "Proto-Pakanic", 116773803, "mkh-pkn", "Latn", type = "reconstructed", } m["mkh-pro"] = { --This will be merged into 2015 aav-pro. "Proto-Mon-Khmer", 7251859, "mkh", "Latn", type = "reconstructed", } m["mnw-tha"] = { -- To be removed. "Thai Mon", nil, "mkh-mnc", "Mymr, Thai", ancestors = "mkh-mmn", sort_key = { from = {"[%p]", "ျ", "ြ", "ွ", "ှ", "ၞ", "ၟ", "ၠ", "ၚ", "ဿ", "[็-๎]", "([เแโใไ])([ก-ฮ])ฺ?"}, to = {"", "္ယ", "္ရ", "္ဝ", "္ဟ", "္န", "္မ", "္လ", "င", "သ္သ", "", "%2%1"} }, } m["mkh-vie-pro"] = { "Proto-Vietic", 109432616, "mkh-vie", "Latn", type = "reconstructed", } m["mns-cen"] = { "Central Mansi", 128810384, "mns", "Cyrl", translit = "mns-translit", override_translit = true, } m["mns-nor"] = { "Northern Mansi", 30304537, "mns", "Cyrl", translit = "mns-translit", override_translit = true, } m["mns-pro"] = { "Proto-Mansi", 128883093, "mns", "Latn", type = "reconstructed", } m["mns-sou"] = { "Southern Mansi", 30304629, "mns", "Cyrl", translit = "mns-translit", override_translit = true, } m["mun-pro"] = { "Proto-Munda", 105102373, "mun", "Latn", type = "reconstructed", } m["myn-chl"] = { -- the stage after ''emy'' "Ch'olti'", 873995, "myn", "Latn", } m["myn-pro"] = { "Proto-Mayan", 3321532, "myn", "Latn", type = "reconstructed", } m["nai-ala"] = { "Alazapa", 128810233, nil, "Latn", } m["nai-bay"] = { "Bayogoula", 1563704, nil, "Latn", } m["nai-cal"] = { "Calusa", 51782, nil, "Latn", } m["nai-chi"] = { "Chiquimulilla", 25339627, "nai-xin", "Latn", } m["nai-chu-pro"] = { "Proto-Chumash", 116773736, "nai-chu", "Latn", type = "reconstructed", } m["nai-cig"] = { "Ciguayo", 20741700, nil, "Latn", } m["nai-ckn-pro"] = { "Proto-Chinookan", 116773735, "nai-ckn", "Latn", type = "reconstructed", } m["nai-guz"] = { "Guazacapán", 19572028, "nai-xin", "Latn", } m["nai-hit"] = { "Hitchiti", 1542882, "nai-mus", "Latn", } m["nai-ipa"] = { "Ipai", 3027474, "nai-yuc", "Latn", } m["nai-jtp"] = { "Jutiapa", nil, "nai-xin", "Latn", } m["nai-jum"] = { "Jumaytepeque", 25339626, "nai-xin", "Latn", } m["nai-kat"] = { "Kathlamet", 6376639, "nai-ckn", "Latn", } m["nai-klp-pro"] = { "Proto-Kalapuyan", 116773771, "nai-klp", "Latn", type = "reconstructed", } m["nai-knm"] = { "Konomihu", 3198734, "nai-shs", "Latn", } m["nai-kum"] = { "Kumeyaay", 4910139, "nai-yuc", "Latn", } m["nai-mac"] = { "Macoris", 21070851, nil, "Latn", } m["nai-mdu-pro"] = { "Proto-Maidun", 116773784, "nai-mdu", "Latn", type = "reconstructed", } m["nai-miz-pro"] = { "Proto-Mixe-Zoque", 7251858, "nai-miz", "Latn", type = "reconstructed", } m["nai-mus-pro"] = { "Proto-Muskogean", 116775368, "nai-mus", "Latn", type = "reconstructed", } m["nai-nao"] = { "Naolan", 6964594, nil, "Latn", } m["nai-nrs"] = { "New River Shasta", 7011254, "nai-shs", "Latn", } m["nai-okw"] = { "Okwanuchu", 3350126, "nai-shs", "Latn", } m["nai-per"] = { "Pericú", 3375369, nil, "Latn", } m["nai-pic"] = { "Picuris", 7191257, "nai-kta", "Latn", } m["nai-plp-pro"] = { "Proto-Plateau Penutian", 116773806, "nai-plp", "Latn", type = "reconstructed", } m["nai-pom-pro"] = { "Proto-Pomo", 116773262, "nai-pom", "Latn", type = "reconstructed", } m["nai-qng"] = { "Quinigua", 36360, nil, "Latn", } m["nai-sca-pro"] = { -- NB 'sio-pro' "Proto-Siouan" which is Proto-Western Siouan "Proto-Siouan-Catawban", 116773275, "nai-sca", "Latn", type = "reconstructed", } m["nai-sin"] = { "Sinacantán", 24190249, "nai-xin", "Latn", } m["nai-sln"] = { "Salvadoran Lenca", 3229434, "nai-len", "Latn", } m["nai-spt"] = { "Sahaptin", 3833015, "nai-shp", "Latn", } m["nai-tap"] = { "Tapachultec", 7684401, "nai-miz", "Latn", } m["nai-taw"] = { "Tawasa", 7689233, nil, "Latn", } m["nai-teq"] = { "Tequistlatec", 2964454, "nai-tqn", "Latn", } m["nai-tip"] = { "Tipai", 3027471, "nai-yuc", "Latn", } m["nai-tot-pro"] = { "Proto-Totozoquean", 116773285, "nai-tot", "Latn", type = "reconstructed", } m["nai-tsi-pro"] = { "Proto-Tsimshianic", nil, "nai-tsi", "Latn", type = "reconstructed", } m["nai-utn-pro"] = { "Proto-Utian", 116773290, "nai-utn", "Latn", type = "reconstructed", } m["nai-wai"] = { "Waikuri", 3118702, nil, "Latn", } m["nai-wji"] = { "Western Jicaque", 3178610, "nai-jcq", "Latn", } m["nai-yup"] = { "Yupiltepeque", 25339628, "nai-xin", "Latn", } m["nan-dat"] = { "Datian Min", 19855572, "zhx-nan", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["nan-hbl"] = { "Hokkien", 1624231, "zhx-nan", "Hants, Latn, Bopo, Kana", wikimedia_codes = "zh-min-nan", generate_forms = "zh-generateforms", sort_key = { Hani = "Hani-sortkey", Kana = "Kana-sortkey" }, } m["nan-hlh"] = { "Hailufeng Min", 120755728, "zhx-nan", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["nan-lnx"] = { "Longyan Min", 6674568, "zhx-nan", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["nan-tws"] = { "Teochew", 36759, "zhx-nan", "Hants", generate_forms = "zh-generateforms", translit = "zh-translit", sort_key = "Hani-sortkey", } m["nan-zhe"] = { "Zhenan Min", 3846710, "zhx-nan", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["nan-zsh"] = { "Sanxiang Min", 7420769, "zhx-nan", "Hants", generate_forms = "zh-generateforms", sort_key = "Hani-sortkey", } m["nds-de"] = { "German Low German", 25433, "gmw-lgm", "Latn", ancestors = "nds", ietf_subtag = "nds-DE", -- should we make this the actual code? wikimedia_codes = "nds", } m["nds-nl"] = { "Dutch Low Saxon", 516137, "gmw-lgm", "Latn", ancestors = "nds", ietf_subtag = "nds-NL", -- should we make this the actual code? wikimedia_codes = "nds-nl", } m["ngf-bin-pro"] = { "Proto-Binanderean", 137881672, "ngf-bin", "Latn", type = "reconstructed", } m["ngf-pro"] = { "Proto-Trans-New Guinea", 85794785, "ngf", "Latn", type = "reconstructed", } m["nic-bco-pro"] = { "Proto-Benue-Congo", 116773194, "nic-bco", "Latn", type = "reconstructed", } m["nic-bod-pro"] = { "Proto-Bantoid", 116773190, "nic-bod", "Latn", type = "reconstructed", } m["nic-eov-pro"] = { "Proto-Eastern Oti-Volta", 116773753, "nic-eov", "Latn", type = "reconstructed", } m["nic-gns-pro"] = { "Proto-Gurunsi", 116773759, "nic-gns", "Latn", type = "reconstructed", } m["nic-grf-pro"] = { "Proto-Grassfields", 116773755, "nic-grf", "Latn", type = "reconstructed", } m["nic-gur-pro"] = { "Proto-Gur", 116773758, "nic-gur", "Latn", type = "reconstructed", } m["nic-jkn-pro"] = { "Proto-Jukunoid", 116773769, "nic-jkn", "Latn", type = "reconstructed", } m["nic-lcr-pro"] = { "Proto-Lower Cross River", 116773782, "nic-lcr", "Latn", type = "reconstructed", } m["nic-ogo-pro"] = { "Proto-Ogoni", 116773799, "nic-ogo", "Latn", type = "reconstructed", } m["nic-ovo-pro"] = { "Proto-Oti-Volta", 116773802, "nic-ovo", "Latn", type = "reconstructed", } m["nic-plt-pro"] = { "Proto-Plateau", 116773805, "nic-plt", "Latn", type = "reconstructed", } m["nic-pro"] = { "Proto-Niger-Congo", 108000748, "nic", "Latn", type = "reconstructed", } m["nic-ubg-pro"] = { "Proto-Ubangian", 116773818, "nic-ubg", "Latn", type = "reconstructed", } m["nic-ucr-pro"] = { "Proto-Upper Cross River", 116773819, "nic-ucr", "Latn", type = "reconstructed", } m["nic-vco-pro"] = { "Proto-Volta-Congo", 116773293, "nic-vco", "Latn", type = "reconstructed", } m["nub-har"] = { "Haraza", 19572059, "nub", "Arab, Latn", } m["nub-pro"] = { "Proto-Nubian", 116773246, "nub", "Latn", type = "reconstructed", } m["omq-cha-pro"] = { "Proto-Chatino", 116773202, "omq-cha", "Latn", type = "reconstructed", } m["omq-maz-pro"] = { "Proto-Mazatec", 116773790, "omq-maz", "Latn", type = "reconstructed", } m["omq-mix-pro"] = { "Proto-Mixtecan", 21573423, "omq-mix", "Latn", type = "reconstructed", } m["omq-mxt-pro"] = { "Proto-Mixtec", 21573424, "omq-mxt", "Latn", type = "reconstructed", } m["omq-otp-pro"] = { "Proto-Oto-Pamean", 116773251, "omq-otp", "Latn", type = "reconstructed", } m["omq-pro"] = { "Proto-Oto-Manguean", 33669, "omq", "Latn", type = "reconstructed", } m["omq-sjq"] = { "San Juan Quiahije Chatino", 17003130, "omq-cha", "Latn", } m["omq-tel"] = { "Teposcolula Mixtec", nil, "omq-mxt", "Latn", } m["omq-teo"] = { "Teojomulco Chatino", 25340451, "omq-cha", "Latn", } m["omq-tri-pro"] = { "Proto-Triqui", 116773817, "omq-tri", "Latn", type = "reconstructed", } m["omq-zap-pro"] = { "Proto-Zapotecan", 116773297, "omq-zap", "Latn", type = "reconstructed", } m["omq-zpc-pro"] = { "Proto-Zapotec", 116773296, "omq-zpc", "Latn", type = "reconstructed", } m["omv-aro-pro"] = { "Proto-Aroid", 116773721, "omv-aro", "Latn", type = "reconstructed", } m["omv-diz-pro"] = { "Proto-Dizoid", 116773750, "omv-diz", "Latn", type = "reconstructed", } m["omv-pro"] = { "Proto-Omotic", 116773800, "omv", "Latn", type = "reconstructed", } m["oto-otm-pro"] = { "Proto-Otomi", 5908710, "oto-otm", "Latn", type = "reconstructed", } m["oto-pro"] = { "Proto-Otomian", 116773252, "oto", "Latn", type = "reconstructed", } m["paa-kmn"] = { "Kómnzo", 18344310, "paa-wko", "Latn", } m["paa-kwn"] = { "Kuwani", 6449056, "qfa-unc", -- poorly attested, possibly the same as or related to Kalabra "Latn", } m["paa-lei"] = { "Leitre", 85776228, "paa-isk", } m["paa-nha-pro"] = { "Proto-North Halmahera", 116773241, "paa-nha", "Latn", type = "reconstructed" } m["paa-nun"] = { "Nungon", 128807788, "ngf-ynu", "Latn", } m["phi-din"] = { "Dinapigue Agta", 16945774, "phi", "Latn", } m["phi-kal-pro"] = { "Proto-Kalamian", 116773213, "phi-kal", "Latn", type = "reconstructed", } m["phi-nag"] = { "Nagtipunan Agta", 16966111, "phi", "Latn", } m["phi-pro"] = { "Proto-Pilipino", --TLCHANGE 18204898, "phi", "Latn", type = "reconstructed", english_name = "Proto-Philippine", --TLCHANGE } m["poz-abi"] = { "Abai", 19570729, "poz-san", "Latn", } m["poz-bal"] = { "Baliledo", 4850912, "poz", "Latn", } m["poz-btk-pro"] = { "Proto-Bungku-Tolaki", 116773724, "poz-btk", "Latn", type = "reconstructed", } m["poz-cet-pro"] = { "Proto-Central-Eastern Malayo-Polynesian", 2269883, "poz-cet", "Latn", type = "reconstructed", } m["poz-hce-pro"] = { "Proto-Halmahera-Cenderawasih", 116773209, "poz-hce", "Latn", type = "reconstructed", } m["poz-lgx-pro"] = { "Proto-Lampungic", 116773222, "poz-lgx", "Latn", type = "reconstructed", } m["poz-mcm-pro"] = { "Proto-Malayo-Chamic", 116773225, "poz-mcm", "Latn", type = "reconstructed", } m["poz-mic-pro"] = { "Proto-Micronesian", 111939079, "poz-mic", "Latn", type = "reconstructed", } m["poz-mly-pro"] = { "Proto-Malayic", 98057728, "poz-mly", "Latn", type = "reconstructed", } m["poz-msa-pro"] = { "Proto-Malayo-Sumbawan", 116773226, "poz-msa", "Latn", type = "reconstructed", } m["poz-oce-pro"] = { "Proto-Oceanic", 141741, "poz-oce", "Latn", type = "reconstructed", } m["poz-pep-pro"] = { "Proto-Eastern Polynesian", 113988745, "poz-pep", "Latn", type = "reconstructed", } m["poz-pnp-pro"] = { "Proto-Nuclear Polynesian", 113988746, "poz-pnp", "Latn", type = "reconstructed", } m["poz-pol-pro"] = { "Proto-Polynesian", 1658709, "poz-pol", "Latn", type = "reconstructed", } m["poz-pro"] = { "Proto-Malayo-Polynesian", 3832960, "poz", "Latn", type = "reconstructed", } m["poz-sml"] = { "Sarawak Malay", 4251702, "poz-mly", "Latn, ms-Arab", } m["poz-ssw-pro"] = { "Proto-South Sulawesi", 116773279, "poz-ssw", "Latn", type = "reconstructed", } m["poz-swa-pro"] = { "Proto-North Sarawak", 116773243, "poz-swa", "Latn", type = "reconstructed", } m["poz-ter"] = { "Terengganu Malay", 4207412, "poz-mly", "Latn, ms-Arab", } m["pqe-pro"] = { "Proto-Eastern Malayo-Polynesian", 2269883, "pqe", "Latn", type = "reconstructed", } m["pra-niy"] = { "Niya Prakrit", 11991601, "inc-mid", "Khar", ancestors = "inc-ash", translit = "Khar-translit", } m["qfa-adm-pro"] = { "Proto-Great Andamanese", 116773756, "qfa-adm", "Latn", type = "reconstructed", } m["qfa-bet-pro"] = { "Proto-Be-Tai", 116773193, "qfa-bet", "Latn", type = "reconstructed", } m["qfa-cka-pro"] = { "Proto-Chukotko-Kamchatkan", 7251837, "qfa-cka", "Latn", type = "reconstructed", } m["qfa-hur-pro"] = { "Proto-Hurro-Urartian", 116773211, "qfa-hur", "Latn", type = "reconstructed", } m["qfa-kad-pro"] = { "Proto-Kadu", 116773770, "qfa-kad", "Latn", type = "reconstructed", } m["qfa-kms-pro"] = { "Proto-Kam-Sui", 55630682, "qfa-kms", "Latn", type = "reconstructed", } m["qfa-kor-pro"] = { "Proto-Koreanic", 467883, "qfa-kor", "Latn", type = "reconstructed", } m["qfa-kra-pro"] = { "Proto-Kra", 7251854, "qfa-kra", "Latn", type = "reconstructed", } m["qfa-lic-pro"] = { "Proto-Hlai", 7251845, "qfa-lic", "Latn", type = "reconstructed", } m["qfa-onb-pro"] = { "Proto-Be", 116773192, "qfa-onb", "Latn", type = "reconstructed", } m["qfa-ong-pro"] = { "Proto-Ongan", 116773801, "qfa-ong", "Latn", type = "reconstructed", } m["qfa-tak-pro"] = { "Proto-Kra-Dai", 104901616, "qfa-tak", "Latn", type = "reconstructed", } m["qfa-yen-pro"] = { "Proto-Yeniseian", 27639, "qfa-yen", "Latn", type = "reconstructed", } m["qfa-yuk-pro"] = { "Proto-Yukaghir", 116773294, "qfa-yuk", "Latn", type = "reconstructed", } m["qwe-kch"] = { "Kichwa", 1740805, "qwe", "Latn", ancestors = "qu", } m["qwe-pro"] = { "Proto-Quechuan", 5575757, "qwe", "Latn", type = "reconstructed", } m["roa-ang"] = { "Angevin", 56782, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-bbn"] = { "Bourbonnais-Berrichon", 2899128, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-brg"] = { "Bourguignon", 508332, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-can"] = { "Cantabrian", 917021, "roa-asl", "Latn", } m["roa-cha"] = { "Champenois", 430018, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-fcm"] = { "Franc-Comtois", 510561, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-gal"] = { "Gallo", 37300, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-gib"] = { "Gallo-Italic of Basilicata", 3094838, "roa-git", ancestors = "pms-old", "Latn", } m["roa-gis"] = { "Gallo-Italic of Sicily", 2629019, "roa-git", "Latn", ancestors = "pms-old", } m["roa-leo"] = { "Leones", --TLCHANGE 34108, "roa-asl", "Latn", english_name = "Leonese", --TLCHANGE spanish_name = "Leonés", --TLCHANGE } m["roa-lor"] = { "Lorrain", 671198, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-oca"] = { "Lumang Katalan", --TLCHANGE 15478520, "roa-ocr", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla .. "·"}, english_name = "Old Catalan", --TLCHANGE } m["roa-ole"] = { "Lumang Leones", --TLCHANGE 125977465, "roa-asl", "Latn", english_name = "Old Leonese", --TLCHANGE } m["roa-ona"] = { "Old Navarro-Aragonese", 2736184, "roa-nar", "Latn", } m["roa-opt"] = { "Old Galician-Portuguese", 1072111, "roa-gap", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ}, } m["roa-orl"] = { "Orléanais", 28497058, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-poi"] = { "Poitevin-Saintongeais", 514123, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["roa-tar"] = { "Tarantino", 695526, "roa-itr", "Latn", wikimedia_codes = "roa-tara", } m["sai-all"] = { "Allentiac", 19570789, "sai-hrp", "Latn", } m["sai-and"] = { -- not to be confused with 'cbc' or 'ano' "Andoquero", 16828359, "sai-wit", "Latn", } m["sai-ayo"] = { "Ayomán", 16937754, "sai-jir", "Latn", } m["sai-bae"] = { "Baenan", 3401998, "qfa-unc", -- extinct, poorly attested; only known through 9 words "Latn", } m["sai-bag"] = { "Bagua", 5390321, "qfa-unc", -- extinct, poorly attested; possibly Cariban "Latn", } m["sai-bet"] = { "Betoi", 926551, "qfa-iso", "Latn", } m["sai-bor-pro"] = { "Proto-Boran", nil, "sai-bor", "Latn", } m["sai-cac"] = { "Cacán", 945482, "qfa-unc", -- extinct, poorly attested; no consensus on classification "Latn", } m["sai-caq"] = { "Caranqui", 2937753, "sai-bar", "Latn", } m["sai-car-pro"] = { "Proto-Cariban", 116773196, "sai-car", "Latn", type = "reconstructed", } m["sai-cat"] = { "Catacao", 5051136, "sai-ctc", "Latn", } m["sai-cer-pro"] = { "Proto-Cerrado", 116773200, "sai-cer", "Latn", type = "reconstructed", } m["sai-chi"] = { "Chirino", 5390321, "qfa-unc", -- extinct, only four words known; possibly related to Candoshi-Shapra (cbu) "Latn", } m["sai-chn"] = { "Chaná", 5072718, "sai-crn", "Latn", } m["sai-chp"] = { "Chapacura", 5072884, "sai-cpc", "Latn", } m["sai-chr"] = { "Charrua", 5086680, "sai-crn", "Latn", } m["sai-chu"] = { "Churuya", 5118339, "sai-guh", "Latn", } m["sai-cje-pro"] = { "Proto-Central Jê", 116773198, "sai-cje", "Latn", type = "reconstructed", } m["sai-cmg"] = { "Comechingon", 6644203, "qfa-unc", -- extinct, poorly attested; no consensus on classification "Latn", } m["sai-cno"] = { "Chono", 5104704, "qfa-unc", -- extinct, poorly attested; no consensus on classification, possibly spurious "Latn", } m["sai-cnr"] = { "Cañari", 5055572, "qfa-unc", -- extinct, poorly attested; possibly Chimuan or Barbacoan "Latn", } m["sai-coe"] = { "Coeruna", 6425639, "sai-wit", "Latn", } m["sai-col"] = { "Colán", 5141893, "sai-ctc", "Latn", } m["sai-cop"] = { "Copallén", 5390321, "qfa-unc", -- extinct, only four words attested; possibly Cholonan "Latn", } m["sai-crd"] = { "Coroado Puri", 24191321, "sai-mje", "Latn", } m["sai-ctq"] = { "Catuquinaru", 16858455, "qfa-unc", -- extinct, poorly attested; vocabulary does not resemble other languages "Latn", } m["sai-cul"] = { "Culli", 2879660, "qfa-unc", -- extinct, poorly attested; often considered an isolate "Latn", } m["sai-cva"] = { "Cueva", 5192644, "qfa-unc", -- extinct, poorly attested; possibly Chocoan "Latn", } m["sai-esm"] = { "Esmeralda", 3058083, "qfa-unc", -- extinct, poorly attested; possibly related to Yaruro "Latn", } m["sai-ewa"] = { "Ewarhuyana", 16898104, nil, "Latn", } m["sai-gam"] = { "Gamela", 5403661, "qfa-unc", -- extinct, poorly attested; possibly an isolate "Latn", } m["sai-gay"] = { "Gayón", 5528902, "sai-jir", "Latn", } m["sai-gmo"] = { "Guamo", 5613495, "qfa-unc", -- extinct; "Kaufman (1990) finds a connection with the Chapacuran languages convincing." [Wikipedia] Considered an isolate by Campbell (2024). "Latn", } m["sai-gua"] = { "Guachí", 5613172, "sai-guc", "Latn", } m["sai-gue"] = { "Güenoa", 5626799, "sai-crn", "Latn", } m["sai-hau"] = { "Haush", 3128376, "sai-cho", "Latn", } m["sai-jee-pro"] = { "Proto-Jê", 116773212, "sai-jee", "Latn", type = "reconstructed", } m["sai-jko"] = { "Jeikó", 6176527, "sai-mje", "Latn", } m["sai-jrj"] = { "Jirajara", 6202966, "sai-jir", "Latn", } m["sai-kat"] = { -- contrast xoo, kzw, sai-xoc "Katembri", 6375925, "qfa-unc", -- extinct, poorly attested; "Kaufman (1990) has linked it with the nearly extinct Taruma, although this has not been accepted by other scholars." [Wikipedia] "Latn", } m["sai-mal"] = { "Malalí", 6741212, "sai-mje", -- considered the most divergent Maxakalían language (a subdivision of Macro-Jê), for which we have no entry "Latn", } m["sai-mar"] = { "Maratino", 6755055, "qfa-unc", -- extinct, poorly attested; possibly Uto-Aztecan "Latn", } m["sai-mat"] = { "Matanawi", 6786047, "qfa-unc", -- extinct; either an isolate or distantly related to the Muran languages; Campbell (2024) lists it as an isolate, Glottolog gives it as unclassified "Latn", } m["sai-mcn"] = { "Mocana", 3402048, "qfa-unc", -- extinct, poorly attested; given as part of the Malibu languages (geographic grouping; not a clade) "Latn", } m["sai-men"] = { "Menien", 16890110, "sai-mje", "Latn", } m["sai-mil"] = { "Millcayac", 19573012, "sai-hrp", "Latn", } m["sai-mlb"] = { "Malibu", 3402048, "qfa-unc", -- extinct, poorly attested; given as part of the Malibu languages (geographic grouping; not a clade) "Latn", } m["sai-msk"] = { "Masakará", 6782426, "sai-mje", "Latn", } m["sai-muc"] = { "Mucuchí", 6931290, nil, -- generally considered Timotean, for which we have no entry "Latn", } m["sai-mue"] = { "Muellama", 16886936, "sai-bar", "Latn", } m["sai-muz"] = { "Muzo", 6644203, "qfa-unc", -- extinct language of Colombia, poorly attested; may be Pijao (Cariban) "Latn", } m["sai-mys"] = { "Maynas", 16919393, "sai-cah", -- per Campbell (2024); formerly considered unclassified "Latn", } m["sai-nat"] = { "Natú", 9006749, "qfa-unc", -- extinct, poorly attested; "only Greenberg dares to classify [it]".[Wikipedia, quoting Moseley, Christopher; Asher, R. E.; Tait, Mary (1994), Atlas of the world's languages] "Latn", } m["sai-nje-pro"] = { "Proto-Northern Jê", 116773245, "sai-nje", "Latn", type = "reconstructed", } m["sai-opo"] = { "Opón", 7099152, "sai-car", "Latn", } m["sai-oto"] = { "Otomaco", 16879234, "sai-otm", "Latn", } m["sai-pal"] = { "Palta", 3042978, "qfa-unc", -- extinct, unclassified; possibly Chicham "Latn", } m["sai-pam"] = { "Pamigua", 5908689, "sai-otm", "Latn", } m["sai-par"] = { "Paratió", 16890038, "qfa-unc", -- extinct, poorly attested; possibly Xukuruan "Latn", } m["sai-peb"] = { "Peba", 3373890, "sai-pey", "Latn", } m["sai-pnz"] = { "Panzaleo", 3123275, "qfa-unc", -- extinct, unclassified; possibly Paezan "Latn", } m["sai-prh"] = { "Puruhá", 3410994, "qfa-unc", -- extinct, poorly attested; possibly in a famil with Cañari "Latn", } m["sai-ptg"] = { "Patagón", 128807870, "sai-tar", -- extinct, only known from 4 words, which suggest Cariban lineage (Campbell 2024) "Latn", } m["sai-pur"] = { "Purukotó", 7261622, "sai-pem", "Latn", } m["sai-pyg"] = { "Payaguá", 7156643, "sai-guc", "Latn", } m["sai-pyk"] = { "Pykobjê", 98113977, "sai-nje", "Latn", } m["sai-qmb"] = { "Quimbaya", 7272043, "qfa-unc", -- extinct, might not exist; few known words "Latn", } m["sai-qtm"] = { "Quitemo", 7272651, "sai-cpc", "Latn", } m["sai-rab"] = { "Rabona", 6644203, "qfa-unc", -- extinct, poorly attested, mostly plant names; possibly Candoshi-Shapra "Latn", } m["sai-ram"] = { "Ramanos", 16902824, "qfa-unc", -- extinct, poorly attested, possibly an isolate; per Glottolog: "the minuscule wordlist ... shows no convincing resemblances to surrounding languages" "Latn", } m["sai-sac"] = { "Sácata", 5390321, "qfa-unc", -- extinct, only 3 words known; possibly Candoshí or Arawakan "Latn", } m["sai-san"] = { "Sanaviron", 16895999, "qfa-unc", -- extinct, unclassified; no consensus on classification "Latn", } m["sai-sap"] = { "Sapará", 7420922, "sai-car", "Latn", } m["sai-sec"] = { "Sechura", 7442912, "qfa-unc", -- extinct, poorly attested; possibly Catacaoan "Latn", } m["sai-sin"] = { "Sinúfana", 7525275, "qfa-unc", -- moribund, poorly attested; possibly Chocoan "Latn", } m["sai-sje-pro"] = { "Proto-Southern Jê", 116773814, "sai-sje", "Latn", type = "reconstructed", } m["sai-tab"] = { "Tabancale", 5390321, "qfa-unc", -- extinct, only 5 words known; no obvious connections, might be an isolate "Latn", } m["sai-tal"] = { "Tallán", 16910468, "qfa-unc", -- extinct, poorly attested; might be Catacaoan "Latn", } m["sai-tap"] = { "Tapayuna", 30719984, "sai-nje", "Latn", } m["sai-tar-pro"] = { "Proto-Taranoan", 116773816, "sai-tar", "Latn", type = "reconstructed", } m["sai-teu"] = { "Teushen", 3519243, "qfa-unc", -- probably extinct by the 1950's; possibly Chonan "Latn", } m["sai-tim"] = { "Timote", 7806995, nil, -- possibly in a small Timotean family "Latn", } m["sai-tpr"] = { "Taparita", 7684460, "sai-otm", "Latn", } m["sai-trr"] = { "Tarairiú", 7685313, "qfa-unc", -- extinct, too poorly attested to classify "Latn", } m["sai-wai"] = { "Waitaká", 16918610, "qfa-unc", -- extinct, possibly Purian "Latn", } m["sai-way"] = { "Wayumara", 7960726, "sai-car", "Latn", } m["sai-wit-pro"] = { "Proto-Witotoan", 116773823, "sai-wit", "Latn", type = "reconstructed", } m["sai-wnm"] = { "Wanham", 16879440, "sai-cpc", "Latn", } m["sai-xoc"] = { -- contrast xoo, kzw, sai-kat "Xocó", 12953620, "qfa-unc", -- extinct and poorly attested; not clear if one or three languages "Latn", } m["sai-yao"] = { "Yao (South America)", 16979655, "sai-ven", "Latn", } m["sai-yar"] = { -- not the same family as 'suy' "Yarumá", 3505859, "sai-pek", "Latn", } m["sai-yri"] = { "Yuri", 2669157, "sai-tyu", "Latn", } m["sai-yup"] = { "Yupua", 8061430, "sai-tuc", "Latn", } m["sai-yur"] = { "Yurumanguí", 1281291, "qfa-unc", -- extinct, too poorly attested to classify "Latn", } m["sal-pro"] = { "Proto-Salish", 116773269, "sal", "Latn", type = "reconstructed", } m["sdv-daj-pro"] = { "Proto-Daju", 116773739, "sdv-daj", "Latn", type = "reconstructed", } m["sdv-eje-pro"] = { "Proto-Eastern Jebel", 116773751, "sdv-eje", "Latn", type = "reconstructed", } m["sdv-nil-pro"] = { "Proto-Nilotic", 116773794, "sdv-nil", "Latn", type = "reconstructed", } m["sdv-nyi-pro"] = { "Proto-Nyima", 116773796, "sdv-nyi", "Latn", type = "reconstructed", } m["sdv-tmn-pro"] = { "Proto-Taman", 116773815, "sdv-tmn", "Latn", type = "reconstructed", } m["sel-nor"] = { "Northern Selkup", 30304565, "sel", "Cyrl", translit = "sel-nor-translit", } m["sel-pro"] = { "Proto-Selkup", 128884235, "sel", "Latn", type = "reconstructed", } m["sel-sou"] = { "Southern Selkup", 30304639, "sel", "Cyrl", translit = "sel-sou-translit", } m["sem-amm"] = { "Ammonite", 279181, "sem-can", "Phnx", -- Phnx translit in [[Module:scripts/data]] } m["sem-amo"] = { "Amorite", 35941, "sem-nwe", "Xsux, Latn", } m["sem-cha"] = { "Chaha", 35543, "sem-eth", "Ethi", translit = "Ethi-translit", } m["sem-dad"] = { "Dadanitic", 21838040, "sem-cen", "Narb", -- Narb translit in [[Module:scripts/data]] } m["sem-dum"] = { "Dumaitic", 128810397, "sem-cen", "Narb", -- Narb translit in [[Module:scripts/data]] } m["sem-has"] = { "Hasaitic", 3541433, "sem-cen", "Narb", -- Narb translit in [[Module:scripts/data]] } m["sem-his"] = { "Hismaic", 22948260, "sem-cen", "Narb", -- Narb translit in [[Module:scripts/data]] } m["sem-mhr"] = { "Muher", 33743, "sem-eth", "Latn", } m["sem-pro"] = { "Proto-Semitic", 1658554, "sem", "Latn", type = "reconstructed", } m["sem-saf"] = { "Safaitic", 472586, "sem-cen", "Narb", -- Narb translit in [[Module:scripts/data]] } m["sem-sam"] = { "Samalian", 85847147, "sem-nwe", "Phnx", -- Phnx translit in [[Module:scripts/data]] } m["sem-srb"] = { "Old South Arabian", 35025, "sem-osa", "Sarb", -- Sarb translit in [[Module:scripts/data]] } m["sem-tay"] = { "Taymanitic", 24912301, "sem-cen", "Narb", -- Narb translit in [[Module:scripts/data]] } m["sem-tha"] = { "Thamudic", 843030, "sem-cen", "Narb", -- Narb translit in [[Module:scripts/data]] } m["sem-wes-pro"] = { "Proto-West Semitic", 98021726, "sem-wes", "Latn", type = "reconstructed", } m["sio-pro"] = { -- NB this is not Proto-Siouan-Catawban 'nai-sca-pro' "Proto-Siouan", 34181, "sio", "Latn", type = "reconstructed", } m["sit-aao-pro"] = { "Proto-Central Naga", nil, "sit-aao", "Latn", type = "reconstructed", } m["sit-bai-pro"] = { "Proto-Bai", nil, "sit-bai", "Latn", type = "reconstructed", } m["sit-ban"] = { "Bangru", 56071779, "sit-hrs", "Latn", } m["sit-bdi-pro"] = { "Proto-Bodish", nil, "sit-bdi", "Latn", type = "reconstructed", } m["sit-bok"] = { "Bokar", 4938727, "sit-tan", "Latn, Tibt", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["sit-cai"] = { "Caijia", 5017528, "sit-cln", "Latn" } m["sit-cha"] = { "Chairel", 5068066, "sit-luu", "Latn", } m["sit-ers-pro"] = { "Proto-Ersuic", nil, "sit-ers", "Latn", type = "reconstructed", } m["sit-hrs-pro"] = { "Proto-Hrusish", 116773762, "sit-hrs", "Latn", type = "reconstructed", } m["sit-jap"] = { "Japhug", 3162245, "sit-egy", "Latn", } m["sit-kha-pro"] = { "Proto-Kham", 116773773, "sit-kha", "Latn", type = "reconstructed", } m["sit-khb-pro"] = { "Proto-Kho-Bwa", nil, "sit-khb", "Latn", type = "reconstructed", } m["sit-khp-pro"] = { "Proto-Puroik", nil, "sit-khb", "Latn", type = "reconstructed", } m["sit-khw-pro"] = { "Proto-Western Kho-Bwa", nil, "sit-khw", "Latn", type = "reconstructed", } m["sit-kon-pro"] = { "Proto-Northern Naga", nil, "sit-kon", "Latn", type = "reconstructed", } m["sit-liz"] = { "Lizu", 6660653, "sit-ers", "Latn", -- and Ersu Shaba } m["sit-lnj"] = { "Longjia", 17096251, "sit-cln", "Latn" } m["sit-lrn"] = { "Luren", 16946370, "sit-cln", "Latn" } m["sit-luu-pro"] = { "Proto-Luish", 116773783, "sit-luu", "Latn", type = "reconstructed", } m["sit-nas-pro"] = { "Proto-Naish", nil, "sit-nas", "Latn", type = "reconstructed", } m["sit-prn"] = { "Puiron", 7259048, "sit-zem", } m["sit-pro"] = { "Proto-Sino-Tibetan", 24839178, "sit", "Latn", type = "reconstructed", } m["sit-sit"] = { "Situ", 19840830, "sit-egy", "Latn", } m["sit-tam-pro"] = { "Proto-Tamangic", 117469295, "sit-tam", "Latn", type = "reconstructed", } m["sit-tan-pro"] = { "Proto-Tani", 116773284, "sit-tan", "Latn", -- needs verification type = "reconstructed", } m["sit-tgm"] = { "Tangam", 17041370, "sit-tan", "Latn", } m["sit-tng-pro"] = { "Proto-Tangkhulic", nil, "sit-tng", "Latn", type = "reconstructed" } m["sit-tos"] = { "Tosu", 7827899, "sit-ers", "Latn", -- also Ersu Shaba } m["sit-tsh"] = { "Tshobdun", 19840950, "sit-egy", "Latn", } m["sit-zbu"] = { "Zbu", 19841106, "sit-egy", "Latn", } m["sla-pro"] = { "Proto-Slavic", 747537, "sla", "Latn", type = "reconstructed", strip_diacritics = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {'ś'}, }, sort_key = { from = {"č", "ď", "ě", "ę", "ь", "ľ", "ň", "ǫ", "ř", "š", "ś", "ť", "ъ", "ž"}, to = {"c²", "d²", "e²", "e³", "i²", "l²", "nj", "o²", "r²", "s²", "s³", "t²", "u²", "z²"}, } } m["smi-pro"] = { "Proto-Samic", 7251862, "smi", "Latn", type = "reconstructed", sort_key = { from = {"ā", "č", "δ", "[ëē]", "ŋ", "ń", "ō", "š", "θ", "%([^()]+%)"}, to = {"a", "c²", "d", "e", "n²", "n³", "o", "s²", "t²"} }, } m["son-pro"] = { "Proto-Songhay", 116773277, "son", "Latn", type = "reconstructed", } m["sqj-pro"] = { "Proto-Albanian", 18210846, "sqj", "Latn", type = "reconstructed", } m["ssa-klk-pro"] = { "Proto-Kuliak", 116773779, "ssa-klk", "Latn", type = "reconstructed", } m["ssa-kom-pro"] = { "Proto-Koman", 116773775, "ssa-kom", "Latn", type = "reconstructed", } m["ssa-pro"] = { "Proto-Nilo-Saharan", 116773236, "ssa", "Latn", type = "reconstructed", } m["syd-pro"] = { "Proto-Samoyedic", 7251863, "syd", "Latn", type = "reconstructed", } m["tai-pro"] = { "Proto-Tai", 6583709, "tai", "Latn", type = "reconstructed", } m["tai-swe-pro"] = { "Proto-Southwestern Tai", 116773280, "tai-swe", "Latn", type = "reconstructed", } m["tbq-bdg-pro"] = { "Proto-Bodo-Garo", 116773195, "tbq-bdg", "Latn", type = "reconstructed", } m["tbq-blg"] = { "Bailang", 2879843, "tbq-lob", "Hani", sort_key = "Hani-sortkey", } m["tbq-brm-pro"] = { "Proto-Burmish", nil, "tbq-brm", "Latn", type = "reconstructed", } m["tbq-gkh"] = { "Gokhy", 5578069, "tbq-sil", "Latn", } m["tbq-kuk-pro"] = { "Proto-Kuki-Chin", 116773220, "tbq-kuk", "Latn", type = "reconstructed", } m["tbq-lal-pro"] = { "Proto-Lalo", 116773781, "tbq-lal", "Latn", type = "reconstructed", } m["tbq-laz"] = { "Laze", 17007626, "sit-nas", "Latn", } m["tbq-lob-pro"] = { "Proto-Lolo-Burmese", 116773224, "tbq-lob", "Latn", type = "reconstructed", } m["tbq-lol-pro"] = { "Proto-Loloish", 7251855, "tbq-lol", "Latn", type = "reconstructed", } m["tbq-mil"] = { "Milang", 6850761, "sit-gsi", "Deva, Latn", } m["tbq-mor"] = { "Moran", 6909216, "tbq-bdg", "Latn", } m["tbq-ngo"] = { "Ngochang", 56582, "tbq-brm", "Latn", } -- tbq-pro is now etymology-only m["trk-dkh"] = { "Dukhan", 12809273, "trk-ssb", "Latn, Cyrl, Mong", -- Mong translit, display_text and strip_diacritics in [[Module:scripts/data]] } -- As described in Mahmud al-Kashgari's 11th century ''Dīwān Lughāt al-Turk''. m["trk-eog"] = { "Early Old Oghuz", nil, "trk-ogz", "ota-Arab", strip_diacritics = {["ota-Arab"] = "ar-stripdiacritics"}, } m["trk-oat"] = { "Old Anatolian Turkish", 7083390, "trk-ogz", "ota-Arab", strip_diacritics = {["ota-Arab"] = "ar-stripdiacritics"}, ancestors = "trk-eog", } m["trk-pro"] = { "Proto-Turkic", 3657773, "trk", "Latn", type = "reconstructed", standard_chars = { Latn = " ()-abdegiklmnoprstuxyzïöüāčēīĺŋōŕšūǖȫẹ" .. c.macron, } } m["tup-gua-pro"] = { "Proto-Tupi-Guarani", 116773288, "tup-gua", "Latn", type = "reconstructed", } m["tup-kab"] = { "Kabishiana", 15302988, "tup", "Latn", } m["tup-pro"] = { "Proto-Tupian", 10354700, "tup", "Latn", type = "reconstructed", } m["tuw-alk"] = { "Altsuka", --TLCHANGE basing from https://en.wiktionary.org/wiki/%E9%98%BF%E5%8B%92%E6%A5%9A%E5%96%80 and https://en.wiktionary.org/wiki/%E1%A0%A0%E1%A0%AF%E1%A0%B4%E1%A1%A0%E1%A1%B4%E1%A0%A0#Manchu 113553616, "tuw-jrc", "Latn, Hans", sort_key = {Hans = "Hani-sortkey"}, english_name = "Alchuka", --TLCHANGE } m["tuw-bal"] = { "Bala", 86730632, "tuw-jrc", "Latn, Hans", sort_key = {Hans = "Hani-sortkey"}, } m["tuw-kkl"] = { "Kyakala", 118875708, "tuw-jrc", "Latn, Hans", sort_key = {Hans = "Hani-sortkey"}, } m["tuw-kli"] = { "Kili", 6406892, "tuw-ewe", "Cyrl", } m["tuw-pro"] = { "Proto-Tungusic", 85872335, "tuw", "Latn", type = "reconstructed", } m["tuw-sol"] = { "Solon", 30004, "tuw-ewe", } m["urj-fin-pro"] = { "Proto-Finnic", 11883720, "urj-fin", "Latn", type = "reconstructed", } m["urj-koo"] = { "Old Komi", 86679962, "kv", "Perm, Cyrs", translit = "urj-koo-translit", -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]]; previously, Cyrs strip_diacritics not present } m["urj-kuk"] = { "Kukkuzi", 107410460, "urj-fin", "Latn", ancestors = "vot", } m["urj-kya"] = { "Komi-Yazva", 2365210, "kv", "Cyrl", translit = "kv-translit", override_translit = true, strip_diacritics = {remove_diacritics = c.acute}, } m["urj-mdv-pro"] = { "Proto-Mordvinic", 116773232, "urj-mdv", "Latn", type = "reconstructed", } m["urj-prm-pro"] = { "Proto-Permic", 116773257, "urj-prm", "Latn", type = "reconstructed", } m["urj-pro"] = { "Proto-Uralic", 288765, "urj", "Latn", type = "reconstructed", } m["urj-ugr-pro"] = { "Proto-Ugric", 156631, "urj-ugr", "Latn", type = "reconstructed", } m["xnd-pro"] = { "Proto-Na-Dene", 116773233, "xnd", "Latn", type = "reconstructed", } m["xgn-pro"] = { "Proto-Mongolic", 2493677, "xgn", "Latn", type = "reconstructed", sort_key = { from = {"č", "i", "ï", "ǰ", "ŋ", "ö", "š", "ü"}, to = {"c", "i" .. p[1], "i", "j", "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1]}, }, } m["yok-bvy"] = { "Buena Vista Yokuts", 4985474, "yok", "Latn", } m["yok-dly"] = { "Delta Yokuts", 70923266, "yok", "Latn", } m["yok-gsy"] = { "Gashowu Yokuts", 3098708, "yok", "Latn", } m["yok-kry"] = { "Kings River Yokuts", 6413014, "yok", "Latn", } m["yok-nvy"] = { "Northern Valley Yokuts", 85789777, "yok", "Latn", } m["yok-ply"] = { "Palewyami Yokuts", 2387391, "yok", "Latn", } m["yok-svy"] = { "Southern Valley Yokuts", 12642473, "yok", "Latn", } m["yok-tky"] = { "Tule-Kaweah Yokuts", 7851988, "yok", "Latn", } m["ypk-pro"] = { "Proto-Yupik", 116773295, "ypk", "Latn", type = "reconstructed", } m["yrk-for"] = { "Forest Nenets", 1295107, "yrk", "Cyrl", translit = "yrk-for-translit", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.macron .. c.breve .. c.dotabove}, } m["yrk-tun"] = { "Tundra Nenets", 36452, "yrk", "Cyrl", strip_diacritics = { from = {"ӑ", "а̄", "э̇", "ӣ", "ы̄", "ӯ", "ю̄", "я̆", "я̄"}, to = {"а", "а", "э", "и", "ы", "у", "ю", "я", "я"}, }, translit = "yrk-tun-translit", } m["zhx-min-pro"] = { "Proto-Min", 19646347, "zhx-min", "Latn", type = "reconstructed", } m["zhx-sht"] = { "Shaozhou Tuhua", 1920769, "zhx", "Nshu, Hants", generate_forms = "zh-generateforms", sort_key = {Hani = "Hani-sortkey"}, } m["zhx-sic"] = { "Sitsuwanes", --TLCHANGE 2278732, "zhx-man", "Hants", generate_forms = "zh-generateforms", translit = "zh-translit", sort_key = "Hani-sortkey", english_name = "Sichuanese", --TLCHANGE spanish_name = "Sichuanés", --TLCHANGE } m["zhx-tai"] = { "Toisanes", --TLCHANGE 2208940, "zhx-yue", "Hants", generate_forms = "zh-generateforms", translit = "zh-translit", sort_key = "Hani-sortkey", english_name = "Taishanese", --TLCHANGE spanish_name = "Toisanés", --TLCHANGE } m["zle-ono"] = { "Old Novgorodian", 162013, "zle", "Cyrs, Glag", translit = {Cyrs = "Cyrs-translit", Glag = "Glag-translit"}, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]] } m["zle-ort"] = { "Old Ruthenian", 13211, "zle", "Arab, Cyrs, Latn", ancestors = "orv", translit = { Cyrs = "zle-ort-translit", Arab = "zle-ort-Arab-translit", }, strip_diacritics = { Cyrs = { remove_diacritics = m_langdata.chars_substitutions["Cyrs_remove_diacritics"], remove_exceptions = {"Ї", "ї"}, }, Arab = "ar-stripdiacritics", }, -- Cyrs sort_key in [[Module:scripts/data]] } m["zls-chs"] = { "Church Slavonic", 33251, "zls", "Cyrs, Glag, Latn", ancestors = "cu", translit = { Cyrs = "Cyrs-translit", Glag = "Glag-translit" }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]] } m["zlw-ocs"] = { "Lumang Tseko", --TLCHANGE 593096, "zlw", "Latn", english_name = "Old Czech", --TLCHANGE spanish_name = "Checo antiguo", --TLCHANGE } m["zlw-opl"] = { "Lumang Polako", --TLCHANGE 149838, "zlw-lch", "Latn", strip_diacritics = {remove_diacritics = c.ringabove}, english_name = "Old Polish", --TLCHANGE spanish_name = "Polaco antiguo", --TLCHANGE } m["zlw-osk"] = { "Lumang Eslovako", --TLCHANGE 12776676, "zlw", "Latn", english_name = "Old Slovak", --TLCHANGE spanish_name = "Eslovaco antiguo", --TLCHANGE } m["zlw-slv"] = { "Slovincian", 36822, "zlw-pom", "Latn", strip_diacritics = {remove_diacritics = c.macron .. c.breve}, } return require("Module:languages").finalizeData(m, "language") 2rdwz6m1oulxraiuh8okyo6hxjhecz0 Module:languages/data/3/r 828 33127 177372 175594 2026-08-25T06:35:29Z Yivan000 4078 177372 Scribunto text/plain local m_langdata = require("Module:languages/data") -- 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 local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["raa"] = { "Dungmali", 56871, "sit-kic", } m["rab"] = { "Chamling", 3436664, "sit-kic", "Deva", } m["rac"] = { "Rasawa", 56443, "paa-rsa", "Latn", } m["rad"] = { "Rade", 3429088, "cmc", "Latn", } m["raf"] = { "Western Meohang", 17442461, "sit-kie", } m["rag"] = { "Logooli", 6667767, "bnt-lok", "Latn", } m["rah"] = { "Rabha", 7278686, "tbq-bdg", "Beng, Latn", } m["rai"] = { "Ramoaaina", 3418509, "poz-ocw", "Latn", } m["rak"] = { "Tulu-Bohuai", 2908807, "poz-aay", "Latn", } m["ral"] = { "Ralte", 7288392, "tbq-kuk", "Latn", } m["ram"] = { "Canela", 2936334, "sai-nje", "Latn", } m["ran"] = { "Riantana", 7322169, "paa-kol", "Latn", } m["rao"] = { "Rao", 11732596, "paa-ram", "Latn", } m["rap"] = { "Rapa Nui", 36746, "poz-pep", "Latn", } m["raq"] = { "Saam", 7395644, "sit-kic", } m["rar"] = { "Rarotongan", 36745, "poz-pep", "Latn", } m["ras"] = { "Tegali", 36522, "nic-ras", "Latn", } m["rat"] = { "Razajerdi", 7299461, "xme-ttc", ancestors = "xme-ttc-eas", } m["rau"] = { "Raute", 7296262, "sit-gma", "Deva, Latn", } m["rav"] = { "Sampang", 3449115, "sit-kic", } m["raw"] = { "Rawang", 542564, "sit-nng", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.macron}, } m["rax"] = { "Rang", 3913345, "alv-mum", } m["ray"] = { "Rapa", 36417, "poz-pep", "Latn", } m["raz"] = { "Rahambuu", 3417555, "poz-btk", } m["rbb"] = { "Rumai Palaung", 12953797, "mkh-pal", "Mymr", } m["rbk"] = { "Sinadanga", --TLCHANGE 63311016, "phi", "Latn", is_official_kwf_name = "https://kwfwikaatkultura.ph/sinadanga-2/", --TLCHANGE english_name = "Northern Bontoc", --TLCHANGE } m["rbl"] = { "Bikol Miraya", --"Miraya Bikol", 18664557, "phi", "Latn", is_official_kwf_name = "https://kwfwikaatkultura.ph/bikol/", --TLCHANGE english_name = "Miraya Bikol", --TLCHANGE } m["rcf"] = { "Réunion Creole French", 13198, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["rdb"] = { "Rudbari", 12953072, "xme", ancestors = "xme-mid", } m["rea"] = { "Rerau", 7314883, "ngf-rai", -- placed in Nuru subfamily by Pawley-Hammarström "Latn", } m["reb"] = { "Rembong", 7311570, "poz-cet", "Latn", } m["ree"] = { "Rejang Kayan", 3423957, "poz", "Latn", } m["reg"] = { "Kara (Tanzania)", 6367567, "bnt-haj", } m["rei"] = { "Reli", 7310982, } m["rej"] = { "Rejang", 3056339, "poz", "Rjng, Latn", } m["rel"] = { "Rendille", 3447297, "cus-som", "Latn", } m["rem"] = { "Remo", 3501825, "sai-pan", "Latn", } m["ren"] = { "Rengao", 6583692, "mkh", } m["rer"] = { "Rer Bare", 12953857, "qfa-unc", -- extinct, might not exist } m["res"] = { "Reshe", 36258, "nic-knj", } m["ret"] = { "Retta", 7317113, "paa-alp", "Latn", } m["rey"] = { "Reyesano", 3111857, "sai-tac", "Latn", } m["rga"] = { "Roria", 7366825, "poz-vnn", "Latn", } m["rge"] = { "Romano-Greek", 3915435, "qfa-mix", "Latn", -- and/or Grek? ancestors = "rom, el", } m["rgk"] = { "Rangkas", 7292645, "sit-alm", } m["rgn"] = { "Romagnol", 1641543, "roa-emr", ancestors = "rgn-old", "Latn", wikimedia_codes = "eml", } m["rgr"] = { "Resígaro", 3450504, "awd", "Latn", } m["rgs"] = { "Southern Roglai", 12953069, "cmc", "Latn", } m["rgu"] = { "Ringgou", 7334886, "poz-tim", } m["rhg"] = { "Rohingya", 3241177, "inc-bas", "Rohg, Arab, Mymr, Latn, Beng", ancestors = "inc-obn", translit = { Rohg = "Rohg-translit", }, } m["rhp"] = { "Yahang", 8046792, "paa-hya", "Latn", } m["ria"] = { "Reang", 12953063, "tbq-bdg", } m["rif"] = { "Tarifit", 34174, "ber", "Latn, Tfng, Arab", translit = { Tfng = "Tfng-translit" }, standard_chars = { Latn = "AaBbCcDdḌḍEeƐɛFfGgƔɣĞğHhḤḥIiJjKkLlMmNnPpQqRrŘřSsṢṣTtṬṭUuWwXxYyZzẒẓʷ", Tfng = "ⴰⴳⴷⴹⴼⵖⵉⴽⵍⵎⵏⵓⵔⵙⵛⵜⵡⵢⵣⵥⴱⵀⵅⵊⴳⵯⵕⵚⵟⵇⵃⵄⴻⴽⵯ", c.punc }, } m["ril"] = { "Riang", 2741615, "mkh-pal", } m["rim"] = { "Nyaturu", 7193418, "bnt-tkm", "Latn", } m["rin"] = { "Nungu", 3913350, "nic-nin", "Latn", } m["rir"] = { "Ribun", 7322443, "day", "Latn", } m["rit"] = { "Ritarungo", 7336730, "aus-yol", "Latn", } m["riu"] = { "Riung", 7336938, "poz-cet", "Latn", } m["rjg"] = { "Rajong", 7286370, "poz-cet", "Latn", } m["rji"] = { "Raji", 7286138, "sit-gma", } m["rjs"] = { "Rajbanshi", 12640969, "inc-krd", "Deva", } m["rka"] = { "Kraol", 3199593, "mkh-ban", "Khmr", -- also Latn? } m["rkb"] = { "Rikbaktsa", 2585357, "sai-mje", "Latn", } m["rkh"] = { "Rakahanga-Manihiki", 3119695, "poz-pep", "Latn", } m["rki"] = { "Rakhine", 3450749, "tbq-brm", "Mymr", ancestors = "obr", } m["rkm"] = { "Marka", 36030, "dmn-wmn", "Latn", } m["rkt"] = { "Kamta", 3241618, "inc-krd", "as-Beng, Latn", translit = "as-translit", } m["rkw"] = { "Arakwal", 34295800, "aus-pam", "Latn", } m["rma"] = { "Rama", 3444486, "cba", } m["rmb"] = { "Rembarunga", 7311553, "aus-gun", "Latn", } m["rmc"] = { "Carpathian Romani", 5045611, "inc-rom", "Latn", } m["rmd"] = { "Traveller Danish", 12640779, "qfa-mix", "Latn", ancestors = "rom, da", } m["rme"] = { "Angloromani", 541279, "qfa-mix", "Latn", ancestors = "rom, en", } m["rmf"] = { "Kalo Finnish Romani", 2093214, "inc-rom", "Latn", } m["rmg"] = { "Traveller Norwegian", 3177352, "qfa-mix", "Latn", ancestors = "rom, no", } m["rmh"] = { "Murkim", 4308074, "paa-lmu", "Latn", } m["rmi"] = { "Lomavren", 2495696, "qfa-mix", "Latn, Armn", ancestors = "pra-sau, hy", -- Armn translit in [[Module:scripts/data]] override_translit = true, } m["rmk"] = { "Romkun", 7363236, "paa-tam", "Latn", } m["rml"] = { "Baltic Romani", 513736, "inc-rom", "Latn", } m["rmm"] = { "Roma", 4414831, } m["rmn"] = { "Balkan Romani", 1256701, "inc-rom", "Latn", } m["rmo"] = { "Sinte Romani", 1793299, "inc-rom", "Latn", } m["rmp"] = { "Rempi", 7312214, "ngf-han", "Latn", } m["rmq"] = { "Caló", 35466, "qfa-mix", "Latn", ancestors = "rom, osp, roa-opt", } m["rms"] = { "Romanian Sign Language", 7362575, "sgn", } m["rmt"] = { "Domari", 35394, "inc-cen", "Latn, Arab, Hebr", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["rmu"] = { "Tavringer Romani", 27808413, "qfa-mix", "Latn", ancestors = "rom, sv", } m["rmv"] = { "Romanova", 1298715, "art", type = "appendix-constructed", } m["rmw"] = { "Welsh Romani", 2097387, "inc-rom", "Latn", } m["rmx"] = { "Romam", 22694600, "mkh", } m["rmy"] = { "Vlax Romani", 2669199, "inc-rom", "Latn", } m["rmz"] = { "Marma", 21403256, "tbq-brm", "Mymr", ancestors = "obr", } m["rnd"] = { "Ruwund", 7383564, "bnt-lun", } m["rng"] = { "Ronga", 2520717, "bnt-tsr", "Latn", } m["rnl"] = { "Ranglong", 7292878, } m["rnn"] = { "Roon", 7366335, "poz-hce", "Latn", } m["rnp"] = { "Rongpo", 7365672, "sit-whm", } m["rnw"] = { "Rungwa", 7379873, "bnt-mwi", "Latn", } m["rob"] = { "Tae'", 12473476, "poz-ssw", "Latn", } m["roc"] = { "Cacgia Roglai", 2932485, "cmc", "Latn", } m["rod"] = { "Rogo", 3914894, "nic-kmk", } m["roe"] = { "Ronji", 3441763, "poz-ocw", } m["rof"] = { "Rombo", 33330, "bnt-chg", "Latn", } m["rog"] = { "Northern Roglai", 3439680, "cmc", "Latn", } m["rol"] = { "Ini", --"Romblomanon", 13202, "phi", "Latn", is_official_kwf_name = "https://kwfwikaatkultura.ph/ini/", --TLCHANGE english_name = "Romblomanon", --TLCHANGE } m["rom"] = { "Romani", 13201, "inc-rom", "Latn, Cyrl", } m["roo"] = { "Rotokas", 13203, "paa-nbo", "Latn", } m["rop"] = { "Australian Kriol", 35671, "crp", "Latn", ancestors = "en", } m["ror"] = { "Rongga", 12473464, } m["rou"] = { "Runga", 56793, } m["row"] = { "Dela-Oenale", 5253046, "poz-tim", } m["rpn"] = { "Repanbitip", 7313900, "poz-vnc", "Latn", } m["rpt"] = { "Rapting", 7294362, "ngf-han", "Latn", } m["rri"] = { "Ririo", 2404190, "poz-ocw", } m["rrm"] = { "Moriori", 2741879, "poz-pep", "Latn", } m["rro"] = { "Roro", 34197, "poz-ocw", "Latn", } m["rrt"] = { "Arritinngithigh", 4796002, nil, "Latn", } m["rsb"] = { "Romano-Serbian", 1268244, "qfa-mix", "Latn", -- and Cyrl? ancestors = "rom, sh", } m["rsl"] = { "Russian Sign Language", 13210, "sgn", } m["rsk"] = { "Pannonian Rusyn", 35660, "zlw", "Cyrl", ancestors = "zlw-osk", translit = "rsk-translit", sort_key = { Cyrl = { from = {"ґ", "є", "ї", "ь"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "я" .. p[1]} } }, standard_chars = "АаБбВвГ㥴ДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe. } m["rsm"] = { "Miriwoong Sign Language", 24090240, "sgn", } m["rsn"] = { "Rwandan Sign Language", 25041935, "sgn", } m["rtc"] = { "Rungtu", 7379867, "tbq-kuk", } m["rth"] = { "Ratahan", 3420026, "phi", "Latn", } m["rtm"] = { "Rotuman", 36754, "poz-pcc", "Latn", } m["rtw"] = { "Rathawi", 12953854, "inc-bhi", } m["rub"] = { "Gungu", 11165235, "bnt-glb", "Latn", } m["ruc"] = { "Ruuli", 7383562, "bnt-nyg", } m["rue"] = { "Carpathian Rusyn", 26245, "zle", "Cyrl", ancestors = "zle-ort", translit = "rue-translit", strip_diacritics = {remove_diacritics = c.grave .. c.acute}, sort_key = "rue-sortkey", } m["ruf"] = { "Luguru", 3437661, "bnt-ruv", "Latn", } m["rug"] = { "Roviana", 3445546, "poz-ocw", "Latn", } m["ruh"] = { "Ruga", 7378127, } m["rui"] = { "Rufiji", 7377946, "bnt-mbi", } m["ruk"] = { "Che", 3915445, "nic-nin", "Latn", } m["ruo"] = { "Istro-Romanian", 33622, "roa-eas", "Latn", } m["rup"] = { "Arumano", --TLCHANGE 29316, "roa-eas", "Latn, Polyt", translit = { -- FIXME: formerly no translit specified for Polyt; unclear if the default [[Module:grc-translit]] is -- acceptable, so we disable it for now Polyt = false, }, sort_key = { Latn = { from = {"ã"}, to = {"a"..p[1]} }, }, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] wikimedia_codes = "roa-rup", english_name = "Aromanian", --TLCHANGE spanish_name = "Arrumano", --TLCHANGE } m["ruq"] = { "Megleno-Romanian", 13358, "roa-eas", "Latn", } m["rut"] = { "Rutul", 36757, "cau-wsm", "Cyrl, Latn", translit = "rut-translit", override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, } m["ruu"] = { "Lanas Lobu", 12953676, } m["ruy"] = { "Mala (Nigeria)", 3913381, "nic-kau", } m["ruz"] = { "Ruma", 3913326, "nic-kau", } m["rwa"] = { "Rawo", 3504269, "paa-shi", "Latn", } m["rwk"] = { "Rwa", 7985624, "bnt-chg", } m["rwm"] = { "Amba", 788423, "bnt-kbi", "Latn", } m["rwo"] = { "Rawa", 11732598, "ngf-gmo", "Latn", } m["rxd"] = { "Ngardi", 7022063, } m["rxw"] = { "Karuwali", 6881575, } m["ryn"] = { "Northern Amami Ōshima", 2840988, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["rys"] = { "Yaeyama", 34203, "jpx-sry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["ryu"] = { "Okinawense", --TLCHANGE 34233, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], english_name = "Okinawan", --TLCHANGE spanish_name = "Okinawense", --TLCHANGE } m["rzh"] = { "Razihi", 16911222, "sem-osa", "Arab", ancestors = "sem-srb", } return require("Module:languages").finalizeData(m, "language") 4jlsezbwipypp919o7ibf8o2bbmuag4 Module:translations/styles.css 828 33908 177380 165090 2026-08-25T07:16:20Z Yivan000 4078 enwikt parity 177380 sanitized-css text/css .translations { width: 100%; margin: 0; } .translations-cell { background-color: var(--wikt-palette-lightyellow, #FFFFe0); vertical-align: top; text-align: left; } 1mxnmdylu4jjj658zjlpeihbd9dnfc0 Module:inc-headword 828 35005 177351 176050 2026-08-25T02:55:15Z Hiyuune 5522 177351 Scribunto text/plain -- Support for Hindi, Punjabi, Urdu, Palula, Kohistani Shina headword templates; eventually will support other Indic languages, such as -- Marathi, Gujarati, Bengali, Assamese, etc. local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:utilities/require when needed") local m_links = require("Module:links") local m_table = require("Module:table") local list_to_set = m_table.listToSet local rsplit = mw.text.split local uupper = mw.ustring.upper local ulower = mw.ustring.lower local unpack = unpack or table.unpack -- Lua 5.2 compatibility local en_utilities_module = "Module:en-utilities" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local languages_module = "Module:languages" local parse_interface_module = "Module:parse interface" local scripts_module = "Module:scripts" local ur_hi_convert_module = "Module:ur-hi-convert" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local gender_param = {type = "genders"} local gender_param_with_default = {type = "genders", default = "?"} local insert = table.insert local concat = table.concat local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local unpack = unpack or table.unpack -- Lua 5.2 compatibility local misc_pos_with_gender = list_to_set { "numerals", "suffixes", "adjective forms", "noun forms", "proper noun forms", "pronoun forms", "determiner forms", "verb forms", "postposition forms", } local function generate_hindis_from_urdu_heads(headobjs) local hindis = {} for _, headobj in ipairs(headobjs) do local hindiobj = m_table.shallowCopy(headobj) hindiobj.term = require(ur_hi_convert_module).tr(m_links.remove_links(headobj.term)) hindiobj.tr = nil insert(hindis, hindiobj) end return hindis end local function generate_gur_from_shah_heads(headobjs) local gurus = {} for _, headobj in ipairs(headobjs) do local guruobj = m_table.shallowCopy(headobj) guruobj.term = require(pa-Arab-Guru_module).tr(m_links.remove_links(headobj.term)) guruobj.tr = nil insert(gurus, guruobj) end return gurus end local langs_supported = { ["hi"] = { other_langs_scripts = { {"ur", "ur", "ur-Arab", "Urdu"}, }, }, ["pa"] = { other_langs_scripts = { {"gur", "pa", "Guru", "Gurmukhi"}, {"sha", "pa", "pa-Arab", "Shahmukhi"}, }, sccat = true, }, ["ur"] = { other_langs_scripts = { {"hi", "hi", "Deva", "Hindi", generate_hindis_from_urdu_heads}, }, enable_auto_translit = true, }, ["phl"] = { other_langs_scripts = { {"pa", "phl", "Arab", "Perso-Arabic"}, {"lat", "phl", "Latn", "Latin"}, }, sccat = true, }, ["plk"] = { other_langs_scripts = { {"pa", "plk", "Arab", "Perso-Arabic"}, {"lat", "plk", "Latn", "Latin"}, }, sccat = true, } } ----------------------------------------------- Utilities -------------------------------------------- local function split_on_comma(val) if val:find(",") then return require(parse_interface_module).split_on_comma(val) else return {val} end end local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug").track("hi-pa-headword/" .. page) return true end local function validate_genders(data, genders) data.genders = genders if not genders then return end for _, gspec in ipairs(genders) do local g = gspec.spec if g == "m" or g == "f" or g == "m-p" or g == "f-p" or g == "mf" or g == "mf-p" or g == "mfbysense" or g == "mfbysense-p" or g == "mfequiv" or g == "mfequiv-p" or g == "?" then else error("Invalid gender: " .. g) end end end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head, no_include_tr, is_single_param) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end if is_single_param then local retval if args[argfield] then retval = m_headword_utilities.parse_term_with_modifiers { val = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end return retval or {} else return m_headword_utilities.parse_term_list_with_modifiers { forms = args[argfield], paramname = field, splitchar = ",", is_head = is_head, include_mods = not no_include_tr and {"tr"} or nil, } end end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the -- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the -- accelerator form, or nil. `enable_auto_translit` is set if requested by the language. local function parse_and_insert_inflection(data, args, field, label, accel_form) local terms = parse_inflection(data, args, field) local accel_obj if accel_form then local lemmas = {} local lemma_translits = {} for i, headobj in ipairs(data.heads) do lemmas[i] = headobj.term lemma_translits[i] = headobj.tr end accel_obj = { lemma = lemmas, lemma_translit = lemma_translits, form = accel_form, } end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel_obj, enable_auto_translit = data.langprops.enable_auto_translit, } end --[==[ Main entry point. Takes two params: ; {{para|lang|req=1}} : The language code of the language of the headword template. ; {{para|1}} : The part of speech, pluralized; omit for {{tl|hi-head}}, {{tl|pa-head}} and {{tl|ur-head}}. ]==] function export.show(frame) local iparams = { [1] = true, ["lang"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local langcode = iargs.lang if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local lang = require(languages_module).getByCode(langcode, true) local langname = lang:getCanonicalName() local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "Padron:" .. langcode .. "-head" and "interjection" or error("Part of speech must be specified in 1=") --TLCHANGE: "Template" poscat = require(headword_module).canonicalize_pos(poscat) end local indexing_poscat = pos_in_1 and (misc_pos_with_gender[poscat] and "head_with_gender" or "head") or poscat local langprops = langs_supported[langcode] local params = { ["head"] = true, ["head2"] = {replaced_by = false, instead = "use comma-separated |head="}, ["tr"] = true, ["tr2"] = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"}, ["id"] = true, ["sort"] = true, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["splithyphen"] = boolean_param, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, _, _, _ = unpack(other_lang_script) params[param] = true params[param .. "1"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} params[param .. "2"] = {replaced_by = false, instead = "use comma-separated items (with no space after the comma) in |" .. param .. "="} end if pos_functions[indexing_poscat] then for key, val in pairs(pos_functions[indexing_poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, langname = langname, langprops = langprops, pos_category = poscat, categories = {}, genders = {}, inflections = {}, pagename = pagename, id = args.id, sort_key = args.sort, force_cat_output = force_cat, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, sccat = langprops.sccat, } local trs = args.tr and split_on_comma(args.tr) or {} local num_trs = #trs local heads = args.head and parse_inflection(data, args, "head", "is_head", nil, "is_single_param") or {} local user_specified_heads = heads local num_heads = #heads if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or no manual translit"):format( num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or "")) end -- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads -- to see if the user provided any heads. if num_heads == 0 and num_trs > 0 then heads = {} for i = 1, num_trs do heads[i] = {term = "+"} end end if not heads[1] then heads = {{term = "+"}} end for i, headobj in ipairs(heads) do if headobj.term == "+" then headobj.term = args.nolink and pagename or m_headword_utilities.add_links_to_multiword_term(pagename, {split_hyphen_when_space = args.splithyphen}) end if headobj.tr and trs[i] then if headobj.tr ~= trs[i] then error(("Saw two different translits '%s' and '%s' for head #%s '%s'"):format( headobj.tr, trs[i], i, headobj.term)) end else headobj.tr = headobj.tr or trs[i] end if headobj.tr == "+" then headobj.tr = nil end end data.heads = heads data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "suffixes" and poscat ~= "suffix forms" ) then data.is_suffix = true data.pos_category = "suffixes" local singular_poscat = m_en_utilities.singularize(poscat) insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[indexing_poscat] then pos_functions[indexing_poscat].func(args, data) end for _, other_lang_script in ipairs(langprops.other_langs_scripts) do local param, other_langcode, other_sccode, lang_script_label, generate_from_heads = unpack(other_lang_script) local terms = parse_inflection(data, args, param, nil, "no_include_tr", "is_single_param") or {} if not terms[1] and generate_from_heads then terms = generate_from_heads(user_specified_heads) end if terms[1] then local other_lang = require(languages_module).getByCode(other_langcode, true) local other_sc = require(scripts_module).getByCode(other_sccode, true) for _, termobj in ipairs(terms) do termobj.lang = other_lang termobj.sc = other_sc end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = lang_script_label .. " spelling", -- Don't set `enable_auto_translit` here, e.g. for Urdu. } end end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end pos_functions.adjectives = { params = { [1] = {list = "comp", disallow_holes = true}, [2] = {list = "sup", disallow_holes = true}, ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable adjectives") end parse_and_insert_inflection(data, args, {1, "comp"}, "<<comparative>>") parse_and_insert_inflection(data, args, {2, "sup"}, "<<superlative>>") parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.ordinals = { params = { ["f"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) data.pos_category = "adjectives" insert(data.categories, data.langname .. " numerals") if args["ind"] then insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable numerals") end parse_and_insert_inflection(data, args, "f", "feminine") end, } pos_functions.cardinals = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, ["sym"] = list_param, }, func = function(args, data) data.pos_category = "numerals" validate_genders(data, args[1]) parse_and_insert_inflection(data, args, "sym", "native script symbol") end, } local function nouns(plpos) return { params = { [1] = gender_param_with_default, ["g"] = {replaced_by = 1}, ["pl"] = list_param, ["f"] = list_param, ["m"] = list_param, ["ind"] = boolean_param, }, func = function(args, data) validate_genders(data, args[1]) if args["ind"] then if args["pl"][1] then error("Can't specify both ind= and pl=") end insert(data.inflections, {label = glossary_link("indeclinable")}) insert(data.categories, data.langname .. " indeclinable " .. plpos) else parse_and_insert_inflection(data, args, "pl", "formal plural", "formal|p") end parse_and_insert_inflection(data, args, "m", "male equivalent", "m") parse_and_insert_inflection(data, args, "f", "female equivalent", "f") if args["m"][1] or args["f"][1] then insert(data.categories, data.langname .. " " .. plpos .. " with other-gender equivalents") end end, } end pos_functions.nouns = nouns("nouns") pos_functions["proper nouns"] = nouns("proper nouns") pos_functions.pronouns = { params = { [1] = gender_param, ["g"] = {replaced_by = 1}, }, func = function(args, data) validate_genders(data, args[1]) end, } pos_functions.verbs = { params = { [1] = true, }, func = function(args, data) if args[1] then local label, cat if args[1] == "t" then label = "transitive" insert(data.categories, data.langname .. " transitive verbs") elseif args[1] == "i" then label = "intransitive" insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "d" then label = "ditransitive" insert(data.categories, data.langname .. " ditransitive verbs") elseif args[1] == "it" or args[1] == "ti" or args[1] == "a" then label = "ambitransitive" insert(data.categories, data.langname .. " ambitransitive verbs") insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " intransitive verbs") elseif args[1] == "tp" then -- only in Palula label = "transitive" insert(data.categories, data.langname .. " transitive verbs") insert(data.categories, data.langname .. " passive verbs") insert(data.inflections, {label = glossary_link("passive")}) else error("Unrecognized param 1=" .. args[1] .. ": Should be 'i' = intransitive, 't' = transitive, 'd' = ditransitive or 'it'/'ti'/'a' = ambitransitive") end insert(data.inflections, {label = glossary_link(label)}) end if data.pagename:find(" ") then local base_verb = m_links.remove_links(data.pagename):gsub("^.* ", "") insert(data.categories, data.langname .. " compound verbs formed with " .. base_verb) end end, } pos_functions.head_with_gender = { params = { [2] = gender_param, }, func = function(args, data) validate_genders(data, args[2]) end, } local pos_prelude = { ["head"] = "This template should be used to generate the headword line for LANG terms whose part of speech does not have an associated specialized template. The current specialized templates are " .. "{{tl|CODE-noun}}, {{tl|CODE-proper noun}}, {{tl|CODE-pron}} (pronouns), {{tl|CODE-verb}}, {{tl|CODE-adj}} (adjectives), {{tl|CODE-adv}} (adverbs), {{tl|CODE-num-card}} (cardinal numbers/numerals) and ".. "{{tl|CODE-num-ord}} (ordinal numbers/numerals). All others should use {{tl|CODE-head}}.", } local noun_addl_params = [=[ ;{{para|pl}} : Formal or irregular plural(s). Intended particularly for Arabic and Persian-origin plurals. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|f}} : Female equivalent(s), for a noun referring to a male person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|m}} : Male equivalent(s), for a noun referring to a female person or animal. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the noun is indeclinable. ]=] local pos_addl_params = { ["nouns"] = noun_addl_params, ["proper nouns"] = noun_addl_params, ["verbs"] = [=[ ;{{para|1}} : Verb type. One of {{cd|t}} (transitive), {{cd|i}} (intransitive), {{cd|d}} (ditransitive) or {{cd|it}}/{{cd|ti}}/{{cd|a}} (ambitransitive). ]=], ["adjectives"] = [=[ ;{{para|1}} : Comparative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|2}} : Superlative form(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|ind|1}} : Specify that the adjective is indeclinable. ;{{para|f}} : Feminine form(s) of an adjective with irregular feminine forms. ]=], ["cardinals"] = [=[ ;{{para|sym}} : Native script symbol(s) for this numeral. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], ["ordinals"] = [=[ ;{{para|ind|1}} : Specify that the ordinal is indeclinable. ;{{para|f}} : Feminine form(s) of an ordinal adjective with irregular feminine forms. ]=], ["head"] = [=[ ;{{para|1|req=1}} : Part of speech. Can be singular or plural and can be abbreviated (e.g. {{cd|n}} for noun; {{cd|nounf}} or {{cd|nf}} for noun form; {{cd|interj}} or {{cd|intj}} for interjection; {{cd|pcl}} for particle; {{cd|phr}} for phrase; etc.). The recognized abbreviations are listed in [[Template:head#Part of speech]] and are the same abbreviations that can be specified in the part-of-speech parameter to {{tl|head}}. ;{{para|2}} : Gender(s). Specifying a gender is always optional and is only allowed for certain parts of speech where it makes sense to specify a gender (currently this includes numerals, suffixes, adjective forms, noun forms, proper noun forms, pronoun forms, determiner forms, verb forms and postposition forms). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=], } local pos_has_gender = { ["nouns"] = true, ["proper nouns"] = true, ["pronouns"] = true, ["cardinals"] = true, } --[==[ Documentation generation function, used to populate the documentation describing all parameters of all headword-line templates. Supports the following parameters: ; {{para|lang|req=1}} : The language code of the language of the headword template being documented. ; {{para|pos|req=1}} : The plural part of speech of the headword template being documented. Use {{cd|head}} for {{tl|hi-head}}/{{tl|pa-head}}/{{tl|ur-head}}/etc. ]==] function export.doctext(frame) local iparams = { ["lang"] = {required = true, type = "language"}, ["pos"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local langcode = iargs.lang:getCode() if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("This module currently only works for lang=" .. concat(langcodes_supported, "/")) end local other_lang_script_equivs = langcode == "hi" and [=[ ;{{para|ur}} : Urdu equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "ur" and [=[ ;{{para|hi}} : Hindi equivalent(s). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or langcode == "pa" and [=[ ;{{para|gur}} : Gurmukhi equivalent(s) of a Shahmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|sha}} : Shahmukhi equivalent(s) of a Gurmukhi term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or (langcode == "phl" or langcode == "plk") and [=[ ;{{para|pa}} : Perso-Arabic spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ;{{para|lat}} : Latin spelling(s) of the term. Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] or "" local prelude = (pos_prelude[iargs.pos] or "This template should be used to generate the headword line for LANG POS.") :gsub("LANG", iargs.lang:getCanonicalName()) :gsub("CODE", iargs.lang:getCode()) :gsub("POS", iargs.pos) local g_text = [=[ ;{{para|1}} : Gender(s). Possible values are {{cd|m}}, {{cd|f}}, {{cd|m-p}}, {{cd|f-p}}, {{cd|mf}} (can be either masculine or feminine), {{cd|mf-p}} (plural-only, can be either masculine or feminine), {{cd|mfbysense}} (can be either masculine or feminine, depending on the natural gender of the person or animal being referred to), {{cd|mfbysense-p}} (plural-only, can be either masculine or feminine, depending on the natural gender of the person or animal being referred to). Separate multiple items with a comma (not followed by a space). Per-item inline modifiers are supported. ]=] local includeg = pos_has_gender[iargs.pos] local addl_params = pos_addl_params[iargs.pos] or "" local text = prelude .. [=[ ==Parameters== The following parameters are supported: ]=] .. (includeg and g_text or "") .. addl_params .. [=[ ;{{para|head}} : Explicitly specified headword(s), for ]=] .. (langcode == "pa" and "adding vowel diacritics to Shahmukhi terms or " or langcode == "ur" and "adding vowel diacritics or " or "") .. "introducing links in multiword expressions. Separate multiple items with a comma (not followed by a space). " .. "Per-item inline modifiers are supported. Use {{cd|+}} to request the default linking algorithm (equivalent to omitting the value if there's only one value). " .. "Note that by default each word of a multiword lemma is linked" .. (langcode == "ur" and "." or ", so you only need to use this " .. (langcode == "pa" and "for Gurmukhi terms " or "") .. "when the default links don't suffice (e.g. the multiword expression consists of non-lemma forms, which need to be linked to their lemmas).") .. "\n" .. [=[ ;{{para|tr}} : Manual transliteration(s), in case the automatic transliteration is incorrect. Separate multiple items with a comma (not followed by a space), ]=] .. [=[and use {{cd|+}} to stand for the default automatic translation (equivalent to omitting the value if there's only one value). ]=] .. [=[If {{para|head}} is used, there should be the same number of transliterations as head values, or an error will occur. ]=] .. other_lang_script_equivs .. [=[ ;{{para|nolink|1}}, {{para|nolinkhead|1}} : Don't link the individual words in a multiword expression. ;{{para|suffix|1}} : Specify that the term is a suffix. Not needed if the term begins with a hyphen. ;{{para|nosuffix|1}} : Specify that a term beginning with a hyphen is not a suffix. ;{{para|id}} : Sense ID, for linking to this particular headword when there is more than one. See {{tl|senseid}} for more information. ; {{para|splithyph|1}} : Indicate that automatic splitting and linking of words should split on hyphens in multiword expressions with spaces in them. Normally splitting on hyphens only occurs in terms without spaces. ; {{para|pagename}} : Override the page name used to compute default values of various sorts. Useful when testing, for documentation pages, etc. ; {{para|sort}} : Sort key. Rarely needs to be specified, as it is normally automatically generated. ; {{para|json|1}} : Output the headword data in JSON form instead of the normal output. For use by bots. ]=] local after_params_text =[=[ ==Inline modifiers== All params above that allow for multiple comma-separated values (except for {{para|tr}}) support ''inline modifiers'', e.g. {{para|pl|रायज़,फ़राइज़<l:rare>}} to attach a label ''rare'' to the second plural. The following modifiers are recognized: * {{cd|tr}}: manual translit; cannot be specified for genders as it doesn't make sense to do so * {{cd|q}}: qualifier, e.g. {{cd|<q:in the plural>}} or {{cd|<q:when referring to a card game>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|qq}}: qualifier, e.g. {{cd|<qq:in the plural>}} or {{cd|<qq:when referring to a card game>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|l}}: comma-separated list of labels, e.g. {{cd|<l:rare>}} or {{cd|<l:dated,or,literary>}}; this appears *BEFORE* the term, parenthesized and italicized * {{cd|ll}}: comma-separated list of labels, e.g. {{cd|<ll:rare>}} or {{cd|<ll:dated,or,literary>}}; this appears *AFTER* the term, parenthesized and italicized * {{cd|ref}}: one or more references, in the format documented in [[Module:references]] and {{tl|IPA}} * {{cd|id}}: sense ID; see {{temp|senseid}}; cannot be specified for headwords or genders as it doesn't make sense to do so ==Suffix handling== If the term begins with a hyphen ({{cd|-}}), it is assumed to be a suffix rather than a base form, and is categorized into [[:Category:LANG suffixes]] and [[:Category:LANG POS-forming suffixes]] rather than [[:Category:LANG POSs]] (e.g. [[:Category:LANG noun-forming suffixes]] rather than [[:Category:LANG nouns]]). This can be overridden using {{para|nosuffix|1}}. ]=] after_params_text = after_params_text:gsub("LANG", iargs.lang:getCanonicalName()) text = text .. after_params_text -- Remove final newline so template code can add a newline after invocation text = text:gsub("\n$", "") return mw.getCurrentFrame():preprocess(text) end return export osc5597x18j2udicqzgts0rj7t8ak7y 0 38391 177367 177289 2026-08-25T06:17:53Z Yivan000 4078 177367 wikitext text/x-wiki {{also|囗|㔿|ロ|ㅁ}} {{character info}} {{character info|⼝}} =={{=mul=}}== {{stroke order|strokes=3}} {{stroke order|type=animate}} ===Karakter na Han=== {{Han char|rn=30|rad=口|as=00|sn=3|four=60000|canj=R|ids=⿱冂一}} # {{mul-kangxi radical-def}} ====Tala ng paggamit==== Ang karakter na ito ({{lang|mul|口}}) ay ginagamit sa loob ng mga karakter. Kapag isang parisukat ay ginamit para paligiran ang isang karakter, ang karakterong {{l|mul|囗}} (<code>U+56D7</code>) ang ginagamit sa halip. Ang radikal na ito ay minsang idinaragdag sa mga karakter para ipahiwatig na isang karakter ay [[onomatopeya]], hal. {{l|zh|咚}} at {{l|zh|啪|tr=pā}}, o ay ginagamit lamang para sa tunog, hal. {{l|zh|咖啡}} at {{l|zh|喇嘛}}. Ang radikal na ito ay idinaragdag din sa mga yunit ng pagsukat para ipahiwatig ang mga [[yunit na imperyal]] sa halip na tradisyunal na yunitong Tsino, hal. {{l|zh|呎|t=talampakan}} vs {{l|zh|尺|t=talampakang Tsino}}. ====Nagmulang karakter==== * [[Appendix:Chinese radical/口]] <!-- Pamantayang Yunikod kasama ang Extension A (di-mahahanap sa [[Apendise:Radikal na Tsino/口]]) --> * {{lang|mul|sc=Hani|[[㐰]], [[加]], [[如]], [[扣]], [[知]], [[釦]] ([[𬬪]]), [[卟]], [[鳴]] ([[鸣]]), [[兄]], [[肙]], [[足]], [[邑]], [[黾]], [[虽]]}} * {{lang|mul|sc=Hani|[[占]], [[夻]], [[舌]], [[杏]], [[言]], [[谷]], [[軎]], [[害]], [[嘼]], [[獸]] ([[兽]]), [[噕]], [[轡]] ([[辔]]), [[石]], [[倉]], [[戓]], [[耉]]}} * {{lang|mul|sc=Hani|[[冋]], [[問]] ([[问]]), [[冏]], [[局]], [[尚]], [[回]], [[中]]}} <!-- Di-pamantayang Yunikod kasunod ng Extension A (mayroong pwedeng di-masuportahan ng karaniwang font --> {{col-top|1|Karagdagang nagmulang karakter}} * <big>{{lang|mul|[[𫭙]], [[𪪺]], [[𬇖]], [[𨑕]], [[𪱳]], [[𣬣]], [[𤘘]], [[𬖏]], [[𫃜]], [[𦒵]], [[𦔻]], [[𧥣]] ([[𬣚]]), [[𧺚]]}}</big> * <big>{{lang|mul|[[𨙫]], [[𢗀]], [[𣬦]], [[𭯶]], [[𤆗]], [[𭺲]], [[𤿌]], [[𡶸]], [[𧘗]], [[𨈗]]}}</big> * <big>{{lang|mul|[[𡥄]], [[𢀛]], [[𦬅]], [[𣅊]], [[𣬧]], [[𬉸]], [[𭶻]], [[𬽅]], [[𧮫]], [[𠔌]], [[𣄮]], [[𬔭]], [[𠭀]], [[𨈖]], [[𡰪]], [[𢇞]], [[𫊝]], [[𫸧]]}}</big> {{col-bottom}} ===Sangguinan=== {{Han ref|kx=0171.010|dkj=03227|dj=0379.170|hdz=10566.140|uh=53E3}} [[Category:Radikal na CJKV| ]] =={{=ja=}}== ===Kanji=== {{ja-kanji|rs=口00}} ===Pagbasa=== {{ja-readings |goon=く<く |kanon=こう<こう |kun=くち-, くつ-, ふり- |nanori=あき, くち, ひろ }} ====Mga tambalan==== {{col-top|3|com}}{{ja-r/multi|data= * {{ja-r/args|口%吟|く%ぎん}} * {{ja-r/args|口%受|く%じゅ}} * {{ja-r/args|口%授|く%じゅ}} * {{ja-r/args|口%説|く%ぜち|rom=-}}, {{ja-r/args|口%舌|く%ぜち}} * {{ja-r/args|口%説|く%ぜつ|rom=-}}, {{ja-r/args|口%舌|く%ぜつ}} * {{ja-r/args|口%宣|く%ぜん}} * {{ja-r/args|口%調|く%ちょう}} * {{ja-r/args|口%伝|く%でん}} * {{ja-r/args|口%炎|こう%えん}} * {{ja-r/args|口%演|こう%えん}} * {{ja-r/args|口%外|こう%がい}} * {{ja-r/args|口%蓋|こう%がい}} * {{ja-r/args|口%角|こう%かく}} * {{ja-r/args|口%気|こう%き}} * {{ja-r/args|口%供|こう%きょう}} * {{ja-r/args|口%琴|こう%きん}} * {{ja-r/args|口%吟|こう%ぎん}} * {{ja-r/args|口%腔|こう%くう}} * {{ja-r/args|口%径|こう%けい}} * {{ja-r/args|口%語|こう%ご}} * {{ja-r/args|口%腔|こう%こう}} * {{ja-r/args|口%座|こう%ざ}} * {{ja-r/args|口%才|こう%さい}} * {{ja-r/args|口%才|こう%ざい}} * {{ja-r/args|口%耳|こう%じ}} * {{ja-r/args|口%実|こう%じつ}} * {{ja-r/args|口%受|こう%じゅ}} * {{ja-r/args|口%授|こう%じゅ}} * {{ja-r/args|口%臭|こう%しゅう}} * {{ja-r/args|口%述|こう%じゅつ}} * {{ja-r/args|口%承|こう%しょう}} * {{ja-r/args|口%誦|こう%しょう}} * {{ja-r/args|口%上|こう%じょう}} * {{ja-r/args|口%唇|こう%しん}} * {{ja-r/args|口%銭|こう%せん}} * {{ja-r/args|口%装|こう%そう}} * {{ja-r/args|口%中|こう%ちゅう}} * {{ja-r/args|口%答|こう%とう}} * {{ja-r/args|口%頭|こう%とう}} * {{ja-r/args|口%内|こう%ない}} * {{ja-r/args|口%碑|こう%ひ}} * {{ja-r/args|口%腹|こう%ふく}} * {{ja-r/args|口%吻|こう%ふん}} * {{ja-r/args|口%辺|こう%へん}} * {{ja-r/args|口%弁|こう%べん}} * {{ja-r/args|口%味|こう%み}} * {{ja-r/args|口%約|こう%やく}} * {{ja-r/args|口%糧|こう%りょう}} * {{ja-r/args|口%論|こう%ろん}} }}{{col-bottom}} ===Pinagmulan 1=== {{etymid|ja|kuchi}} {{ja-kanjitab|yomi=k|くち}} {{ja-see|くち}} ===Pinagmulan 2=== {{etymid|ja|kutsu}} {{ja-kanjitab|yomi=k|くつ}} {{ja-see|くつ}} ===Pinagmulan 3=== {{etymid|ja|ku}} {{ja-kanjitab|yomi=goon|く}} Mula {{der|ja|ltc|-}} {{ltc-l|口}}. Ito ang pagbasang {{m|ja|呉音|tr=goon}}, kaya maaari na ito ang panimulang paghiram. ====Pagbigkas==== {{ja-pron|く|acc=1|acc_ref=DJR4}} ====Pangngalan==== {{ja-noun|く}} # {{lb|ja|sort=く|Buddhism}} ang [[bibig]] # {{lb|ja|sort=く|Buddhism}} {{q|sa pagpapalawig}} [[pananlita]] o mga [[salita]] ng isang tao # ang [[hihipan]] ng [[plauta]] ====Pangbilang==== {{ja-pos|counter|く}} # {{ng|ginagamit para bilangin ang tao}} # {{ng|ginagamit para bilangin ang kada-taong kapiraso}} # {{ng|ginagamit para bilangin ang mga lalagyang may pagbubukas}} # {{ng|ginagamit para bilangin ang sandata o kagamitan na may talim}} ===Pinagmulan 4=== {{etymid|ja|kō}} {{ja-kanjitab|yomi=kanon|こう}} Mulasa {{der|ja|ltc|-}} {{ltc-l|口}}. Ito ang pagbasang {{m|ja|漢音|tr=kan'on}}, kaya maaari na ito ay isang sumunod na paghiram. ====Pagbigkas==== {{ja-pron|こう}} ====Pangbilang==== {{ja-pos|counter|こう}} # {{ng|ginagamit para bilangin ang tao}} # {{ng|ginagamit para bilangin ang sandata o kagamitan na may talim}} ===Sangguinan=== <references/> * {{R:Kanjipedia Kotoba|0002118400}} =={{=ko=}}== ===Pinagmulan=== {{ety|ko|:der|ltc:口}} Mula sa {{der|ko|ltc|-}} {{ltc-l|口}}. {{box| * {{hanja-dongguk|쿠ᇢ〯|khwǔw}} * {{hanja-hunmong|구〯|kwǔ|身體#상26A}} |Mga lumang pagbasa }} ===Pagbigkas=== * {{sense|sa {{l|ko|口文}}, {{l|ko|口錢}}, at {{l|ko|口硬}}}} {{ko-hanja-pron|구}} * {{sense|bibig; pasukan; butas; atbp.}} {{ko-hanja-pron|구|l=y}} ===Hanja=== {{ko-hanja-search}} {{ko-hanja|입|구}} # {{hanja form of|구|[[bibig]]}} # {{hanja form of|구|[[pasukan]]; [[pagbubukas]]}} # {{hanja form of|구|[[butas]]}} ====Mga tambalan==== {{col-top|3|com}}{{ko-l/multi|data= * {{ko-l/args|인구|人口}} * {{ko-l/args|가구|家口}} * {{ko-l/args|구결|口訣}} * {{ko-l/args|구호|口號}} * {{ko-l/args|창구|窓口}} * {{ko-l/args|함구|緘口}} * {{ko-l/args|구실|口實}} * {{ko-l/args|구미|口味}} * {{ko-l/args|항구|港口}} * {{ko-l/args|입구|入口}} * {{ko-l/args|구술|口述}} * {{ko-l/args|금구|噤口}} * {{ko-l/args|구두|口頭}} * {{ko-l/args|출구|出口}} * {{ko-l/args|하구|河口}} * {{ko-l/args|대구|大口}} * {{ko-l/args|구화|口話}} * {{ko-l/args|식구|食口}} * {{ko-l/args|구전|口錢}} * {{ko-l/args|구문|口文}} * {{ko-l/args|구어|口語}} * {{ko-l/args|구전|口傳}} * {{ko-l/args|화구|火口}} * {{ko-l/args|포구|浦口}} * {{ko-l/args|강구|江口}} * {{ko-l/args|도구|渡口}} * {{ko-l/args|구순|口脣}} * {{ko-l/args|구령|口令}} * {{ko-l/args|구수|口數}} * {{ko-l/args|갱구|坑口}} * {{ko-l/args|구강|口腔}} * {{ko-l/args|구설|口舌}} * {{ko-l/args|호구|戶口}} * {{ko-l/args|경구|經口}} * {{ko-l/args|구각|口角}} * {{ko-l/args|구답|口答}} }}{{col-bottom}} ===Sangguinan=== * {{R:hanjadoc|1061}} ==Kunigami== ===Kanji=== {{xug-kanji}} ====Pagbasa==== {{xug-readings |kun=くちー- }} ===Pagbigkas=== * {{IPA|xug|/kʰut͡ɕiː/}} ===Pangngalan=== {{xug-head|noun|くちー}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] {{c|xug|Anatomy|Linguistics|Talking}} =={{=mvi=}}== ===Kanji=== {{mvi-kanji}} ====Pagbasa==== {{mvi-readings |kun=ふつ- }} ===Pagbigkas=== * {{IPA|mvi|[ɸɨtˢɨ]|[ɸs̩.tˢɨ]|a=Tarama}} * {{IPA|mvi|[ɸkɨ]|[ɸks̩ ~ ɸkɯ]|a=Ōgami}} * {{IPA|mvi|[ɸu̥tˢɨ]|a=Ikema}} * {{IPA|mvi|[ɸu̥tˢz̩]|a=Uruka}} * {{IPA|mvi|[ɸutˢʉ]|a=Minna}} ===Pangngalan=== {{mvi-head|noun|ふつ}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] ===Sangguinan=== * {{R:JLect|ふィちィ【口】|99|fïchï}} {{C|mvi|Anatomy|Linguistics|Talking}} =={{=ryu=}}== ===Kanji=== {{ryu-kanji}} ====Pagbasa==== {{ryu-readings |kun=くち }} ===Pagbigkas=== * {{IPA|ryu|/kut͡ɕi/}} ===Pangngalan=== {{ryu-head|noun|くち}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] ====Mga tambalan==== {{col-top|3|der}} {{ryu-r/multi|data= * {{ryu-r/args|沖%縄%口|うち%なー%ぐち|Okinawan language}} * {{ryu-r/args|ウランダ口|ウランダぐち|European language, Western language}} * {{ryu-r/args|書ち口|かちぐち|written language}} * {{ryu-r/args|口しば|くちしば|lips}} * {{ryu-r/args|島%口|しま%ぐち|island language, local language}} * {{ryu-r/args|唐%口|とー%ぐち|Chinese language}} * {{ryu-r/args|那%覇%口|なー%ふぁ%ぐち|Naha dialect}} * {{ryu-r/args|目%口|みー%くち|facial expression}} * {{ryu-r/args|大和%口|やまとぅ%ぐち|standard Japanese language}} }}{{col-bottom}} ===Sangguinan=== * {{R:JLect|ぐち【口】|1174|guchi}} {{C|ryu|Anatomy|Linguistics|Talking}} =={{=zh=}}== {{zh-forms|alt=𠙵,𠮚,囗}} {{wp|zh:,yue:}} ===Pinagmulan ng glipo=== {{Han etym}} {{liushu|p}} – kamukha ng isang bukas na bibig. Sa sulat ng butong orakulo, ang radikal na {{lang|zh|口}} ay ginagamit para sa karakter na may abstraktong kahulugan. Ang ganitong karakter ay maaaring magkaroon ng matalinghagang kahulugan mula sa bahaging pangtunog, hal. {{och-l|右|gloss=kanan}} = {{och-l|又|gloss=kanang kamay}} + {{lang|zh|口}} at {{och-l|𪪺|gloss=malakas; makapangyarihan}} = {{och-l|弓|gloss=[[busog]]}} + {{lang|zh|口}}, o maaaring maging isang di-kaugnay na paghiram hal. {{och-l|否|gloss=hindi}} = {{och-l|不|gloss=[[takupis]]}} + {{lang|zh|口}}. ===Pinagmulan 1=== {{ety|zh|:inh|sit-pro:*ku(w)<t:mouth>}} Mula sa {{inh|zh|sit-pro|*ku(w)||bibig}}. Kognado sa {{cog|grt|ku·sik||bibig}}, {{cog|txg|𗋈||bibig}}. ====Pagbigkas==== {{zh-pron |m=kǒu |m-s=kou3 |m-x=kòu |m-nj=kǒu |dg=ку2 |c=hau2 |c-dg=haau2 |c-t=heu2 |g=kieu3 |h=pfs=khiéu/héu;hrs=h:kieuˊ/h:heuˊ;gd=kêu3/hêu3 |h_note=Sixian: khiéu - literary; héu - vernacular Hailu: kieuˊ - literary; heuˊ - vernacular Meixian: kêu3 - literary; hêu3 - vernacular |j=kou2 |mb=kě |md=kāu/kēu |md_note=kāu - vernacular; kēu - literary |mn=ml,jj,tw:kháu/káu/xm,zz:khó͘/qz,jj,tw:khió |mn_note=kháu - vernacular; káu - vernacular (limited, e.g. {{lang|zh|啞口}}); khó͘/khió - literary |mn-t=kao2 |mn-l=kao2 |px=pt,jk,nr,dh,xy,yy,ft:kao3/pt,nr,dh,xy,yy,ft:kieo3/jk:kiao3 |px_note=kao3 - vernacular; kieo3/kiao3 - literary |sp=hau2 |w=sh:5kheu;sj,cm,sz,hz,sx,nb:3kheu;jd:3khoe;cz,hz,zs:3khei;jx:3khe |w_note=<sup>3</sup>kheu (Hangzhounese) - older speakers only |w-j=3khieu |x=kou3 |x-l=keu3 |x-h=kou3 |mc=y |oc=y |ma=y |cat=n,cls,v,pn }} ====Kahulugan==== {{head|zh|hanzi}} # {{lb|zh|anatomy}} [[bibig]], lalo na ang [[labi]] at [[lukab]] ng bibig {{zh-mw|c:把}} #: {{zh-also|嘴|口腔}} #: {{zh-x|漱 漱 你 的 口。|Banlawan mo ang iyong '''bibig'''.}} #: {{zh-x|這 話 出自 你 的 口,聽來 令人 奇怪。|Kakaiba ang tunog nito sa iyong '''bibig'''.}} # [[pasukan]]; [[pagbubukas]]; [[bibig]] (ng isang bagay) #: {{zh-co|入口|pasukan}} #: {{zh-co|出口|labasan}} #: {{zh-co|門口|pintuan}} # [[daanan]], lalo na sa kabundukan #: {{zh-co|^張家口|Zhangjiakou}} #: {{zh-co|^口北|ang lugar sa lampas ng [[Mahabang Muog ng Tsina]]}} #: {{zh-co|口蘑|kabute ni St. George (''Calocybe gambosa'')}} # [[butas]]; [[hiwa]] #: {{zh-co|口子{zi}|butas}} #: {{zh-co|傷口|sugat}} # [[talim]]; talim ng isang [[kutsilyo]] #: {{zh-x|刀口|talim ng isang kutsilyo}} # [[port]] #: {{zh-co|電腦 端口|port ng computer}} #: {{zh-co|C{sēi}口|port ng USB-C}} # [[perimetro]] #: {{zh-co|人口|populasyon}} #: {{zh-co|戶口|[[hukou]]}} # [[sangay]] ng [[pamahalaan]]; [[departamento]] #: {{zh-co|宣傳口}} # {{zh-classifier|mga [[miyembro ng pamilya]], mga [[populasyon]], at mga [[pang-sakahang]] [[hayop]]|cat=y}} #: {{zh-co|三 口 之 家|pamilyang may tatlong miyembro}} # {{zh-classifier|mga [[kagat]] o [[subo]]}} #: {{zh-x|我 可以 吃 一 口 嗎?|Pwede po bang '''kumagat'''? ('lit.' Maaari ba akong kumain ng isang '''kagat'''?)}} # {{zh-classifier|bagay na may [[pagbubukas]]: mga [[balon]], [[palayok]], [[garapon]], [[baril]], atbp}} # {{zh-classifier|bagay na may [[talim]]: mga [[kutsilyo]], [[sandata]], atbp}} # {{lb|zh|neologism|slang}} [[isubo]] ang [[ari]] ng lalaki #* {{zh-x|為什麼 女朋友 給 我 口 我 沒什麼 感覺?|Bakit wala akong naramdaman noong '''chinupa''' ako ng nobya ko?|ref='''2019''' Agosto 28, Walang pangalan, [https://pkuhelper.pku.edu.cn/hole/#829617 Treehole: #829617]|tr=Wèishénme nǚpéngyǒu gěi wǒ '''kǒu''' wǒ méishénme gǎnjué?}} # {{surname|zh}} ====Mga kasingkahulugan==== {{zh-dial|嘴}} {{zh-dial|口}} {{zh-dial|口-2}} {{zh-dial|口-3}} ====Mga tambalan==== {{col3|zh|一口|丁口|下口|上口|上口字|三河口|三緘其口|丹江口|乳口|二口蟲|五口|五口通商|井口邊草//井口边草|交口|京口|人口|人多口雜//人多口杂|住口|佞口|伶口俐舌|佛口蛇心|侈口|信口|借口|倒口|偏口魚|傷口|入口|兩口|兩河口|冷口冷心|出口|刀口|切口|分房減口|分身減口|利口|刺口|剛口|剪票口|創口|劈口|動口|勒口|北口|南口|叉口|反口|口不應心|口不擇言|口中雌黃|口乖心歪|口乾舌燥|口仇|口令|口伐|口佔|口供|口信|口傳|口兒|口具|口出不遜|口出穢言|口分|口勁|口北|口占|口口聲聲|口吃|口吐珠璣|口吻|口味|口哨|口嘴|口器|口噤|口型|口外|口如懸河|口子|口宣|口密腹劍|口實|口尚乳臭|口屈|口岸|口弦|口強|口形|口彩|口徑|口德|口快|口惠|口感|口愬|口才|口技|口拙|口授|口敕|口是心非|口服|口枯眼澀|口條|口棧|口業|口氣|口水|口沉|口沒遮攔|口沫|口涎|口湖|口渴|口滑|口澤|口炎|口無擇言|口無遮攔|口燥唇乾|口燥脣乾|口琴|口甜如蜜|口瘡|口白|口皮|口眼歪斜|口硬|口碑|口磣|口福|口稱|口笛|口答|口算|口籍|口糜|口糧|口紅|口給|口緊|口罩|口義|口耳之學|口耳相傳|口能|口脂|口腔|口腹|口腳類|口臭|口舌|口若懸河|口蓋|口蘑|口號|口蜜腹劍|口血未乾|口袋|口裡|口角|口訣|口許|口訥|口詞|口詔|口試|口誅筆伐|口語|口誤|口誦|口說無憑|口談|口諭|口講指畫|口譯|口賦|口蹄疫|口輕|口輪肌|口辯|口述|口過|口重|口鈍|口錢|口隔心慌|口靜|口音|口順|口頭|口題|口願|口風|口食|口饞|口香糖|口馬|口體之養|口髭|口齒|可口|古城口|合口|吐口|吃口|吃開口飯|告口|周口店|咀吸口|啣口墊背|啞口無言|售票口|單口相聲|喜峰口|𠺘口|噴口|噤口|圈口|城口|城垛口|堂口|基隆廟口|壺口瀑布|外口|多口|大口|大沽口|失口|女口|好口|子口|守口如瓶|官渡口|害口|家口|寸口|封口|對口|小倆口|小口|小河口|小溪口|尺口|山口|岔口|峽口|峰口|巷口|帶口|幫口|度口|弄口|張口|張家口|張家口堡|張舌騙口|得勝口|心伏口伏|心口|心拙口夯|心拙口笨|忌口|怯口|惹口面|應口|懸口|戒口|戶口|打牙訕口|把口|拑口|拗口|拙口笨腮|拙口鈍腮|拙口鈍辭|挂口|接口|捷口|掩口|掉嘴口|插口|提口拔舌|揜口葫蘆|提心在口|搬口|撮口呼|擋口|攙口|收口|改口|放口|啟口|新堤口|新江口|新河口|新港口|斷口|書口|有口無心|有口無行|有口皆碑|有口難分|有口難言|有口難辨|朱口皓齒|杜口|林口|枉口拔舌|極口|樊口|檔口|檀口|歷口|歹口|殺口甜|水口|水峽口|江口|決口|沒口|沙口|沙河口|泉口|河口|活口|流口轍|海口|浦口|混一口飯|清河口|湖北口|湖北口回族鄉|渡口|湖口|渠口|湘口|港口|渦口|湋源口|滅口|溪口坪|滿口|漢口|漱口|漁峽口|澗口|潘口|灌口二郎|炮口|無口|焰口|營口|爭口|爽口|片口張舌|版口|牙口|牙白口清|牲口|獅子口|瓶口|甚口|生口|生意口|田駢天口|界口|異口同聲|異口同辭|異口同音|當口|病從口入|病由口入|瘡口|登場口|白口|百口|目呆口咂|目定口呆|目睜口呆|目瞠口哆|目瞪口僵|目瞪口呆|目瞪口歪|眾口一詞|眾口交攻|眾口交薦|眾口交譽|眾口同聲|眾口如一|眾口熏天|眾口稱善|眾口紛紜|眾口鑠金|眾口難調|矢口|破口|礄口|礙口|禁口|禍從口出|空口|窗口|笑口常開|笨口拙舌|箝口|糊口|糖舌蜜口|紅口白舌|素口罵人|絕口|結口|統口|緘口|緘舌閉口|縮衣節口|繡口錦心|缺口|羅口|羞口羞腳|群口鑠金|翻口|老河口|聲口|肆口|胃口|胸口|脫口|舊口|船口|苦口|菜市口|藉口|虎口|虎狼之口|蛇口蜂針|蛇心佛口|蠻口|血口噴人|行口|街口|衝口而出|衝口而發|袖口|裂口|褪口|要口|親口|角口|討口|訊口|訥口|誇口|說口|論口|談天口|講口|讒口|谷口|豁口截舌|費口|賣口|賞口飯吃|赤口毒舌|赤口白舌|走口|趁口|路口|軟口湯|輕口薄舌|轉口|轉渠口|辯口利舌|辯口利辭|通口|通海口|進口|逸口|過口|適口|釋口|金口|金舌弊口|鉗口|錦心繡口|鍼口|鎗口|鐵口|長埫口|門口|閉口奪氣|閉口無言|閉口藏舌|閉口韻|開口|閘口|關口|防寫口|陪口|隘口|隨口|雞口牛後|面方口闊|面闊口方|順口|頓口無言|領口|頭口|風口|食不充口|餬口|饕口饞舌|香口|馬口|馬口鐵|騙口張舌|驅口|髯口|鬆口|鬥口|鬼擘口|魚口|鹽醬口|麥口期|麻豪口|黃口|黃家口|黃歇口|黃顙口|黑口|齊口|龍口|布倫口|衝口|周口|惡口|一口咬死|信口雌黃|口碑載道|免稅口岸|吃口令|幽靈人口|一身一口|口沫橫飛|一口飯|交叉口|信口開河|人口密度|口述歷史|心口合一|交口稱贊|人多口雜|剌口子|口頭禪|弄口鳴舌|勞務出口|信口開喝|心服口服|予人口實|一口兩匙|不對胃口|人口轉型|合口元音|丁口冊|人口政策|出口入耳|兩口兒|失業人口|口快心直|心不應口|吹口哨|人口爆炸|兩口子|口齒伶俐|不統口|口傳心授|不絕口|張口結舌|仇口兒|三岔路口|心口不一|口風琴|口腔期|喊口令|口語傳播|小兩口兒|口舌之便|合胃口|口頭交|人口過剩|人口結構|不能出口|吊胃口|口授心傳|口頭文學|不釋口|一口價兒|北口馬|交口接耳|信口捏膿|心直口快|口頭信|急口令|交岔路口|念不絕口|三叉口|口舌呆鈍|人口分布|心口如一|心口兩樣|井口邊草|口服疫苗|人口老化|出水口|一口咬定|彆口氣|口腔黏膜|口頭語|夫妻兩口|口頭之交|不住口|交口稱譽|合口味|出口成章|對胃口|對口相聲|對口瘡|信口胡說|口快如刀|巧言利口|報戶口|一口中|口腹之欲|口水歌|口齒便給|婆子口舌|出口傷人|出口貿易|如出一口|對口詞|好剛口|倒胃口|一番口舌|合口呼|信口開合|口頭誹謗|十字路口|人口問題|人口普查|噤口痢|人口販子|喇叭口兒|吸收口|一口鐘|出口導向|口角炎|口舌之快|口才辨給|口分田|口傳家書|大飽口福|三口兩口|一口氣|不倒口|口角春風|利口捷給|口腔癌|出口貨|口吻生花|口能舌便|戶口調查|櫻桃小口|百口莫辯|空口說|授人口實|河口港|放口風|戶口校正|矢口否認|滿口胡說|沿海口子|滿口答應|搬弄口舌|杜口絕言|搬口弄舌|空口無憑|突破口|甖子口|拉家帶口|杜口絕舌|海口浪言|林口臺地|礙口飾羞|探虎口|破口大罵|白口鐵|拐帶人口|放焰口|沒口子|百口難分|朗朗上口|發脫口齒|登山口|杜口無言|甘冒虎口|瓤口兒|白口咀咒|琅琅上口|戶口普查|戶口名簿|沒胃口|搿著口兒|爭口氣|探口風|火山口|杜口結舌|漱口水|掩口盧胡|流口水|滿口胡柴|方頤大口|活口米|查戶口|毒藥苦口|流動人口|拗口風|杜口吞聲|滿口應承|拗口令|敞口兒|掩口胡盧|殺人滅口|探口氣|滿口應允|杜口裹足|販賣人口|轉口貿易|露口風|脫口而出|良藥苦口|這口氣|這個擋口|美味可口|緘口如瓶|買賣人口|行口商|落人口實|誇海口|貽人口實|羊入虎口|虎口拔牙|進口配額|順口兒|開口笑|脫口秀|進口稅|馬口錢|黃口小兒|綻口兒|絕口不提|進口貿易|鉗口吞舌|緘口無言|結舌杜口|緘口不言|誇下海口|脫口成章|虎口逃生|黃口孺子|虎口餘生|羊落虎口|鬧口舌|鬥口齒|鬆一口氣|血盆大口|養家活口|飯來開口|話口兒|老年人口|順口食|順口開河|順口談天|順口溜|讚不絕口|金人緘口|金口木舌|鵝口瘡|進口貨|開口閉口|開口跳|開口呼|開口元音|轉口稅|鐵口直斷|鏨口兒|緘口結舌|鉗口撟舌|金口玉言|開口子|食不餬口|進口家電|鉗口結舌|通商口岸|貼現窗口|費口舌|谷口耕岩|討口牙|箝口結舌|血口子|進出口|苦口婆心|說海口|膾炙人口|膨脹缺口|繞口令|絕口不道|一口一聲|一口價|一口同聲|一口同音|一口胡柴|一口長齋|一虎口|一門口子|丁口錢|七口八嘴|三江口|不容口|世口|井陘口|亡口|交口同聲|京口酒|人口稅|人口粥|仇口|以口問心|佳口|信口開呵|倒口子|假口|免開尊口|兩肩荷口|八口|公田口井|冗口|凡口|出口稅|分口|到口|削口|前口兒|剪口|劇口|勺口|十口相傳|十字口|十字街口|卡口|口不二價|口中虱|口中蚤蝨|口乾舌焦|口事|口井|口伎|口似懸河|口內|口兵|口冊|口利|口剌|口受|口口|口口相傳|口叭叭|口吃詩|口吞三世|口吟舌言|口吧吧|口含天憲|口含錢|口吶|口呆目瞪|口呆目鈍|口呿眸眙|口哦|口唾|口啍|口啜|口噦|口回|口報|口堿|口墜天花|口壅若川|口多|口大|口奏|口孽|口寫|口對|口小|口川|口巴巴|口引|口强|口愿|口慧|口戲|口承|口抹|口教|口敞|口數|口數粥|口斂|口是心苗|口服心服|口札|口材|口柔|口案|口機|口歹|口水話|口沸目赤|口淡|口溜子|口澳|口爽|口率|口珠|口甜|口生|口畫|口疢|口疳|口病|口直|口直心快|口碎|口穩|口筭|口米|口累|口羞|口耳相承|口聲|口胃|口腕|口茄目瞠|口薦|口藏|口蠟|口袋戰術|口袋陣|口角生風|口角風情|口觜|口言|口話|口誦心惟|口誦心維|口調|口談指畫|口論|口諛|口諧辭給|口講手畫|口譚|口讒|口象|口貨|口費|口輔|口輕舌薄|口辨|口辭|口達|口邏肚攢|口采|口鉗|口鉗舌卷|口銜天憲|口銳|口陳|口面|口頭話|口頰|口頰壞疽|口食米|口體|口鬆|口齗|古北口|右口|合口椒|名口|向口|吝口|吟口|否口|吳口|吶口|呀口|呐口|味口|和口|咍口|哆口|哨口|唇三口四|唇焦口燥|唱口|啞口|啞口無聲|單口|單口快板|嗑口|嗽口|嘖口|嘵音瘏口|噙口錢|噤口捲舌|嚼口|回口|土口|垂餌虎口|垛口|埡口|堞口|塞口|壑口|壘口|天口|奄口|奶口|妄口|妄口巴舌|妄口拔舌|妒口|子口稅|孔口|守口|守瓶緘口|官口|害口磣|寄口|射口|對口快板|對口疽|小兩口|尚口|岔路口|岔道口|崖口|川口|市口|弇口|弓口|引口醪|弭口|弱口|張口掉舌|張口貨|強口|彪口|從理入口|心口相應|忍口|快口|急口|性急口快|怯憐口|悅口|悔口|惟口起羞|惠口|惹口舌|愛口|愛口識羞|慎口|慣口|戍口|戶口冊|戶口簿|手口之澤|扎口辣舌|折口|折口福|探口而出|推口|掩口失聲|掩口而笑|措口|揀口兒|揜口|搐口兒|摩口膏舌|撐口|撑口|撒口|撮口|改口沓舌|敏口|敞口|敞口船|斂口|斗口|料口|料綽口|易口以食|是非口舌|曲不離口|有口|有口舌|有口難辯|木口雕刻|朱口|村口|杓口|板城渚口|枉口|枉口嚼舌|枉口誑舌|柑口|椒口|業口|極口項斯|槽口|橫口|檐口|檐口天溝|歲口|歸口|死口|毒口|民口|氣口|汙口橫衊|汛口|沒牙沒口|河目海口|河門海口|油口|沿口|泄口|注口|洛口倉|流口常談|流膾人口|游口|湊口饅頭|湓口|湓浦口|溜口|溢口|溺口|滑串流口|滕口|滯口|漫口|潑口|濡口|灌口|火口湖|無口匏|無口詩令|焰口經|熟口|熱心苦口|爭一口氣|牛口|牛口之下|狡口|獸口|率口|甘口|甜口兒|男口|畏口慎事|略綽口|異口|異口同韻|痛口|瘏口|瘏口嘵音|發口|百口橋|盛口|目怔口呆|目瞪口張|目瞪口結|直口無言|相與一口|省口|眷口|眾口|眾口一辭|眾口交傳|眾口交詈|眾口交贊|眾口嘵嘵|眾口囂囂|眾口相傳|眾口籍籍|眾口銷金|瞪目哆口|矢口猖言|破口大駡|硬口|碼口|磚口|磬口|磬口梅|神口|禁口痢|窨口|窮口|窯口|笑口|筆伐口誅|算口|箝口側目|節口|簧口|簧口利舌|簷口|籋口|籍口|籠口戲|籥口|精唇潑口|紅口白牙|結舌鉗口|給口|維口食|緣口|縱口|縱理入口|繞口|繡口|纏口湯|缺口鑷子|羞口|群口|老兩口|老口|老口兒|聚口|聱牙戟口|聲聲口口|脈口|脣焦口燥|脱口|腔口|腰包戶口|膠口|舉口|花口|若口引|苦口師|苦口惡石|茬口|莊口|萬口一詞|萬口一辭|蕩口|薦口|虎口扳鬚|虎口拔鬚|虛口|蛇口結|蜚狐口|蜜口劍腹|螫口|蠡口|血口|衆口一詞|衆口難調|褲口|西口|見口|觃口|計口|討口子|訕口|託口|設口|設焰口|話口|話口袋子|誇大口|誘口|說不出口|說口嘴|說大口|課口|調口|諂口|談不容口|諉口|諴口|謗口|謹口|謾天口|譟口|讒口鑠|讒口鑠金|讓口|谷口子真|谷口真|谷口耕|谷口耕夫|谷口躬耕|谷口隱|豁口|象口|負口|貪口|貪口腹|貫口|費口唇|賞口|賣口吃|賽口|贊不絕口|贊不絶口|贊口不絕|赤口|赤口日|赤口燒城|走西口|越口|趕口|路在口邊|踧口|身口|身衣口食|軀口|車口|軋口|軒亭口|較口|輕口|輕口輕舌|輕言肆口|輞口|輿口|轍口|辟口|辨口|辯口|迭口|逆口|造口孽|造口業|連口|進口詞|運口|道口|道口錫|遼口|還口|還口願|邊口|鄭口|金口御言|金口玉牙|金口玉音|金口角|鈍口拙腮|鈐口鞋兒|銜口墊背|鋪頭口|鋼口|錦胸繡口|錯口|鍼口結舌|鎖口|鑠口|長星赤口|閉口|閉口捕舌|閉口結舌|開亮口|開口椒|開口見心|開口見膽|開口貨|開口銷|閒口|闔門百口|闕口|防口|降口|隧口|雞口|雨水口|露口信|青口白舌|面朋口友|鞋口|項發口縱|順口話|風口浪尖|風門水口|食口|食饌一口|飯來張口|飾口|養口|養家糊口|馬勒口|馬口柴|馬口魚|騙口|騰口|驛口|高下在口|鬻口|鬼劈口|鯨口|鴻口|鵝口|鵝口白瘡|鶴口|麗口|黃口兒|黔口|默口|鼓口|口桀|口胡|口古月|口耐|口年|口塞|大口環|口嗨}} ====Mga nagmula==== {{CJKV|口|く|j2=こう|구|khẩu}} ===Pinagmulan 2=== {{zh-see|名|a}} ===Tingnan din=== * {{l|zh|□}} ===Sangguinan=== * {{R:yue:Hanzi}} {{cat|cmn|Pasimulang Mandarin}} =={{=vi=}}== ===Karakter na Han=== {{vi-readings|rs=口00 |hanviet=khẩu-tdcntd;gdhn |phienthiet= |nom=khẩu-tdcntd;gdhn }} # {{vi-Han form of|khẩu|[[bibig]]; [[pagbubukas]]}} ====Mga tambalan==== {{col3|vi |{{vi-l|口味|khẩu vị}} |{{vi-l|口語|khẩu ngữ}} |{{vi-l|口號|khẩu hiệu}} |{{vi-l|口裝|khẩu trang}} |{{vi-l|人口|nhân khẩu}} |{{vi-l|戶口|hộ khẩu}} |{{vi-l|入口|nhập khẩu}} |{{vi-l|出口|xuất khẩu}} |{{vi-l|密口|mật khẩu}} }} ===Sangguinan=== <references/> =={{=rys=}}== ===Kanji=== {{rys-kanji}} ====Pagbasa==== {{rys-readings |kun=ふつぃ- }} ===Pagbigkas=== * {{IPA|rys|/fu̻t͡sɨ/}} ===Pangngalan=== {{rys-head|noun|ふつぃ}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] {{C|rys|Anatomy|Linguistics|Talking}} =={{=yoi=}}== ===Kanji=== {{yoi-kanji}} ====Pagbasa==== {{yoi-readings |kun=ってぃ- }} ===Pagbigkas=== * {{IPA|yoi|/tˀi/}} ===Pangngalan=== {{yoi-head|noun|ってぃ}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] {{C|yoi|Anatomy|Linguistics|Talking}} gw1ifkfckx6k795txr0s4oz4nksrehb 177368 177367 2026-08-25T06:20:42Z Yivan000 4078 177368 wikitext text/x-wiki {{also|囗|㔿|ロ|ㅁ}} {{character info}} {{character info|⼝}} =={{=mul=}}== {{stroke order|strokes=3}} {{stroke order|type=animate}} ===Karakter na Han=== {{Han char|rn=30|rad=口|as=00|sn=3|four=60000|canj=R|ids=⿱冂一}} # {{mul-kangxi radical-def}} ====Tala ng paggamit==== Ang karakter na ito ({{lang|mul|口}}) ay ginagamit sa loob ng mga karakter. Kapag isang parisukat ay ginamit para paligiran ang isang karakter, ang karakterong {{l|mul|囗}} (<code>U+56D7</code>) ang ginagamit sa halip. Ang radikal na ito ay minsang idinaragdag sa mga karakter para ipahiwatig na isang karakter ay [[onomatopeya]], hal. {{l|zh|咚}} at {{l|zh|啪|tr=pā}}, o ay ginagamit lamang para sa tunog, hal. {{l|zh|咖啡}} at {{l|zh|喇嘛}}. Ang radikal na ito ay idinaragdag din sa mga yunit ng pagsukat para ipahiwatig ang mga [[yunit na imperyal]] sa halip na tradisyunal na yunitong Tsino, hal. {{l|zh|呎|t=talampakan}} vs {{l|zh|尺|t=talampakang Tsino}}. ====Nagmulang karakter==== * [[Appendix:Chinese radical/口]] <!-- Pamantayang Yunikod kasama ang Extension A (di-mahahanap sa [[Apendise:Radikal na Tsino/口]]) --> * {{lang|mul|sc=Hani|[[㐰]], [[加]], [[如]], [[扣]], [[知]], [[釦]] ([[𬬪]]), [[卟]], [[鳴]] ([[鸣]]), [[兄]], [[肙]], [[足]], [[邑]], [[黾]], [[虽]]}} * {{lang|mul|sc=Hani|[[占]], [[夻]], [[舌]], [[杏]], [[言]], [[谷]], [[軎]], [[害]], [[嘼]], [[獸]] ([[兽]]), [[噕]], [[轡]] ([[辔]]), [[石]], [[倉]], [[戓]], [[耉]]}} * {{lang|mul|sc=Hani|[[冋]], [[問]] ([[问]]), [[冏]], [[局]], [[尚]], [[回]], [[中]]}} <!-- Di-pamantayang Yunikod kasunod ng Extension A (mayroong pwedeng di-masuportahan ng karaniwang font --> {{col-top|1|Karagdagang nagmulang karakter}} * <big>{{lang|mul|[[𫭙]], [[𪪺]], [[𬇖]], [[𨑕]], [[𪱳]], [[𣬣]], [[𤘘]], [[𬖏]], [[𫃜]], [[𦒵]], [[𦔻]], [[𧥣]] ([[𬣚]]), [[𧺚]]}}</big> * <big>{{lang|mul|[[𨙫]], [[𢗀]], [[𣬦]], [[𭯶]], [[𤆗]], [[𭺲]], [[𤿌]], [[𡶸]], [[𧘗]], [[𨈗]]}}</big> * <big>{{lang|mul|[[𡥄]], [[𢀛]], [[𦬅]], [[𣅊]], [[𣬧]], [[𬉸]], [[𭶻]], [[𬽅]], [[𧮫]], [[𠔌]], [[𣄮]], [[𬔭]], [[𠭀]], [[𨈖]], [[𡰪]], [[𢇞]], [[𫊝]], [[𫸧]]}}</big> {{col-bottom}} ===Sangguinan=== {{Han ref|kx=0171.010|dkj=03227|dj=0379.170|hdz=10566.140|uh=53E3}} [[Category:Radikal na CJKV| ]] =={{=ja=}}== ===Kanji=== {{ja-kanji|rs=口00}} ===Pagbasa=== {{ja-readings |goon=く<く |kanon=こう<こう |kun=くち-, くつ-, ふり- |nanori=あき, くち, ひろ }} ====Mga tambalan==== {{col-top|3|com}}{{ja-r/multi|data= * {{ja-r/args|口%吟|く%ぎん}} * {{ja-r/args|口%受|く%じゅ}} * {{ja-r/args|口%授|く%じゅ}} * {{ja-r/args|口%説|く%ぜち|rom=-}}, {{ja-r/args|口%舌|く%ぜち}} * {{ja-r/args|口%説|く%ぜつ|rom=-}}, {{ja-r/args|口%舌|く%ぜつ}} * {{ja-r/args|口%宣|く%ぜん}} * {{ja-r/args|口%調|く%ちょう}} * {{ja-r/args|口%伝|く%でん}} * {{ja-r/args|口%炎|こう%えん}} * {{ja-r/args|口%演|こう%えん}} * {{ja-r/args|口%外|こう%がい}} * {{ja-r/args|口%蓋|こう%がい}} * {{ja-r/args|口%角|こう%かく}} * {{ja-r/args|口%気|こう%き}} * {{ja-r/args|口%供|こう%きょう}} * {{ja-r/args|口%琴|こう%きん}} * {{ja-r/args|口%吟|こう%ぎん}} * {{ja-r/args|口%腔|こう%くう}} * {{ja-r/args|口%径|こう%けい}} * {{ja-r/args|口%語|こう%ご}} * {{ja-r/args|口%腔|こう%こう}} * {{ja-r/args|口%座|こう%ざ}} * {{ja-r/args|口%才|こう%さい}} * {{ja-r/args|口%才|こう%ざい}} * {{ja-r/args|口%耳|こう%じ}} * {{ja-r/args|口%実|こう%じつ}} * {{ja-r/args|口%受|こう%じゅ}} * {{ja-r/args|口%授|こう%じゅ}} * {{ja-r/args|口%臭|こう%しゅう}} * {{ja-r/args|口%述|こう%じゅつ}} * {{ja-r/args|口%承|こう%しょう}} * {{ja-r/args|口%誦|こう%しょう}} * {{ja-r/args|口%上|こう%じょう}} * {{ja-r/args|口%唇|こう%しん}} * {{ja-r/args|口%銭|こう%せん}} * {{ja-r/args|口%装|こう%そう}} * {{ja-r/args|口%中|こう%ちゅう}} * {{ja-r/args|口%答|こう%とう}} * {{ja-r/args|口%頭|こう%とう}} * {{ja-r/args|口%内|こう%ない}} * {{ja-r/args|口%碑|こう%ひ}} * {{ja-r/args|口%腹|こう%ふく}} * {{ja-r/args|口%吻|こう%ふん}} * {{ja-r/args|口%辺|こう%へん}} * {{ja-r/args|口%弁|こう%べん}} * {{ja-r/args|口%味|こう%み}} * {{ja-r/args|口%約|こう%やく}} * {{ja-r/args|口%糧|こう%りょう}} * {{ja-r/args|口%論|こう%ろん}} }}{{col-bottom}} ===Pinagmulan 1=== {{etymid|ja|kuchi}} {{ja-kanjitab|yomi=k|くち}} {{ja-see|くち}} ===Pinagmulan 2=== {{etymid|ja|kutsu}} {{ja-kanjitab|yomi=k|くつ}} {{ja-see|くつ}} ===Pinagmulan 3=== {{etymid|ja|ku}} {{ja-kanjitab|yomi=goon|く}} Mula {{der|ja|ltc|-}} {{ltc-l|口}}. Ito ang pagbasang {{m|ja|呉音|tr=goon}}, kaya maaari na ito ang panimulang paghiram. ====Pagbigkas==== {{ja-pron|く|acc=1|acc_ref=DJR4}} ====Pangngalan==== {{ja-noun|く}} # {{lb|ja|sort=く|Buddhism}} ang [[bibig]] # {{lb|ja|sort=く|Buddhism}} {{q|sa pagpapalawig}} [[pananlita]] o mga [[salita]] ng isang tao # ang [[hihipan]] ng [[plauta]] ====Pangbilang==== {{ja-pos|counter|く}} # {{ng|ginagamit para bilangin ang tao}} # {{ng|ginagamit para bilangin ang kada-taong kapiraso}} # {{ng|ginagamit para bilangin ang mga lalagyang may pagbubukas}} # {{ng|ginagamit para bilangin ang sandata o kagamitan na may talim}} ===Pinagmulan 4=== {{etymid|ja|kō}} {{ja-kanjitab|yomi=kanon|こう}} Mulasa {{der|ja|ltc|-}} {{ltc-l|口}}. Ito ang pagbasang {{m|ja|漢音|tr=kan'on}}, kaya maaari na ito ay isang sumunod na paghiram. ====Pagbigkas==== {{ja-pron|こう}} ====Pangbilang==== {{ja-pos|counter|こう}} # {{ng|ginagamit para bilangin ang tao}} # {{ng|ginagamit para bilangin ang sandata o kagamitan na may talim}} ===Sangguinan=== <references/> * {{R:Kanjipedia Kotoba|0002118400}} =={{=ko=}}== ===Pinagmulan=== {{ety|ko|:der|ltc:口}} Mula sa {{der|ko|ltc|-}} {{ltc-l|口}}. {{box| * {{hanja-dongguk|쿠ᇢ〯|khwǔw}} * {{hanja-hunmong|구〯|kwǔ|身體#상26A}} |Mga lumang pagbasa }} ===Pagbigkas=== * {{sense|sa {{l|ko|口文}}, {{l|ko|口錢}}, at {{l|ko|口硬}}}} {{ko-hanja-pron|구}} * {{sense|bibig; pasukan; butas; atbp.}} {{ko-hanja-pron|구|l=y}} ===Hanja=== {{ko-hanja-search}} {{ko-hanja|입|구}} # {{hanja form of|구|[[bibig]]}} # {{hanja form of|구|[[pasukan]]; [[pagbubukas]]}} # {{hanja form of|구|[[butas]]}} ====Mga tambalan==== {{col-top|3|com}}{{ko-l/multi|data= * {{ko-l/args|인구|人口}} * {{ko-l/args|가구|家口}} * {{ko-l/args|구결|口訣}} * {{ko-l/args|구호|口號}} * {{ko-l/args|창구|窓口}} * {{ko-l/args|함구|緘口}} * {{ko-l/args|구실|口實}} * {{ko-l/args|구미|口味}} * {{ko-l/args|항구|港口}} * {{ko-l/args|입구|入口}} * {{ko-l/args|구술|口述}} * {{ko-l/args|금구|噤口}} * {{ko-l/args|구두|口頭}} * {{ko-l/args|출구|出口}} * {{ko-l/args|하구|河口}} * {{ko-l/args|대구|大口}} * {{ko-l/args|구화|口話}} * {{ko-l/args|식구|食口}} * {{ko-l/args|구전|口錢}} * {{ko-l/args|구문|口文}} * {{ko-l/args|구어|口語}} * {{ko-l/args|구전|口傳}} * {{ko-l/args|화구|火口}} * {{ko-l/args|포구|浦口}} * {{ko-l/args|강구|江口}} * {{ko-l/args|도구|渡口}} * {{ko-l/args|구순|口脣}} * {{ko-l/args|구령|口令}} * {{ko-l/args|구수|口數}} * {{ko-l/args|갱구|坑口}} * {{ko-l/args|구강|口腔}} * {{ko-l/args|구설|口舌}} * {{ko-l/args|호구|戶口}} * {{ko-l/args|경구|經口}} * {{ko-l/args|구각|口角}} * {{ko-l/args|구답|口答}} }}{{col-bottom}} ===Sangguinan=== * {{R:hanjadoc|1061}} =={{=xug=}}== ===Kanji=== {{xug-kanji}} ====Pagbasa==== {{xug-readings |kun=くちー- }} ===Pagbigkas=== * {{IPA|xug|/kʰut͡ɕiː/}} ===Pangngalan=== {{xug-head|noun|くちー}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] {{c|xug|Anatomiya|Lingguwistika|Talking}} =={{=mvi=}}== ===Kanji=== {{mvi-kanji}} ====Pagbasa==== {{mvi-readings |kun=ふつ- }} ===Pagbigkas=== * {{IPA|mvi|[ɸɨtˢɨ]|[ɸs̩.tˢɨ]|a=Tarama}} * {{IPA|mvi|[ɸkɨ]|[ɸks̩ ~ ɸkɯ]|a=Ōgami}} * {{IPA|mvi|[ɸu̥tˢɨ]|a=Ikema}} * {{IPA|mvi|[ɸu̥tˢz̩]|a=Uruka}} * {{IPA|mvi|[ɸutˢʉ]|a=Minna}} ===Pangngalan=== {{mvi-head|noun|ふつ}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] ===Sangguinan=== * {{R:JLect|ふィちィ【口】|99|fïchï}} {{C|mvi|Anatomiya|Linguistics|Talking}} =={{=ryu=}}== ===Kanji=== {{ryu-kanji}} ====Pagbasa==== {{ryu-readings |kun=くち }} ===Pagbigkas=== * {{IPA|ryu|/kut͡ɕi/}} ===Pangngalan=== {{ryu-head|noun|くち}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] ====Mga tambalan==== {{col-top|3|der}} {{ryu-r/multi|data= * {{ryu-r/args|沖%縄%口|うち%なー%ぐち|Okinawan language}} * {{ryu-r/args|ウランダ口|ウランダぐち|European language, Western language}} * {{ryu-r/args|書ち口|かちぐち|written language}} * {{ryu-r/args|口しば|くちしば|lips}} * {{ryu-r/args|島%口|しま%ぐち|island language, local language}} * {{ryu-r/args|唐%口|とー%ぐち|Chinese language}} * {{ryu-r/args|那%覇%口|なー%ふぁ%ぐち|Naha dialect}} * {{ryu-r/args|目%口|みー%くち|facial expression}} * {{ryu-r/args|大和%口|やまとぅ%ぐち|standard Japanese language}} }}{{col-bottom}} ===Sangguinan=== * {{R:JLect|ぐち【口】|1174|guchi}} {{C|ryu|Anatomiya|Lingguwistika|Talking}} =={{=zh=}}== {{zh-forms|alt=𠙵,𠮚,囗}} {{wp|zh:,yue:}} ===Pinagmulan ng glipo=== {{Han etym}} {{liushu|p}} – kamukha ng isang bukas na bibig. Sa sulat ng butong orakulo, ang radikal na {{lang|zh|口}} ay ginagamit para sa karakter na may abstraktong kahulugan. Ang ganitong karakter ay maaaring magkaroon ng matalinghagang kahulugan mula sa bahaging pangtunog, hal. {{och-l|右|gloss=kanan}} = {{och-l|又|gloss=kanang kamay}} + {{lang|zh|口}} at {{och-l|𪪺|gloss=malakas; makapangyarihan}} = {{och-l|弓|gloss=[[busog]]}} + {{lang|zh|口}}, o maaaring maging isang di-kaugnay na paghiram hal. {{och-l|否|gloss=hindi}} = {{och-l|不|gloss=[[takupis]]}} + {{lang|zh|口}}. ===Pinagmulan 1=== {{ety|zh|:inh|sit-pro:*ku(w)<t:mouth>}} Mula sa {{inh|zh|sit-pro|*ku(w)||bibig}}. Kognado sa {{cog|grt|ku·sik||bibig}}, {{cog|txg|𗋈||bibig}}. ====Pagbigkas==== {{zh-pron |m=kǒu |m-s=kou3 |m-x=kòu |m-nj=kǒu |dg=ку2 |c=hau2 |c-dg=haau2 |c-t=heu2 |g=kieu3 |h=pfs=khiéu/héu;hrs=h:kieuˊ/h:heuˊ;gd=kêu3/hêu3 |h_note=Sixian: khiéu - literary; héu - vernacular Hailu: kieuˊ - literary; heuˊ - vernacular Meixian: kêu3 - literary; hêu3 - vernacular |j=kou2 |mb=kě |md=kāu/kēu |md_note=kāu - vernacular; kēu - literary |mn=ml,jj,tw:kháu/káu/xm,zz:khó͘/qz,jj,tw:khió |mn_note=kháu - vernacular; káu - vernacular (limited, e.g. {{lang|zh|啞口}}); khó͘/khió - literary |mn-t=kao2 |mn-l=kao2 |px=pt,jk,nr,dh,xy,yy,ft:kao3/pt,nr,dh,xy,yy,ft:kieo3/jk:kiao3 |px_note=kao3 - vernacular; kieo3/kiao3 - literary |sp=hau2 |w=sh:5kheu;sj,cm,sz,hz,sx,nb:3kheu;jd:3khoe;cz,hz,zs:3khei;jx:3khe |w_note=<sup>3</sup>kheu (Hangzhounese) - older speakers only |w-j=3khieu |x=kou3 |x-l=keu3 |x-h=kou3 |mc=y |oc=y |ma=y |cat=n,cls,v,pn }} ====Kahulugan==== {{head|zh|hanzi}} # {{lb|zh|anatomy}} [[bibig]], lalo na ang [[labi]] at [[lukab]] ng bibig {{zh-mw|c:把}} #: {{zh-also|嘴|口腔}} #: {{zh-x|漱 漱 你 的 口。|Banlawan mo ang iyong '''bibig'''.}} #: {{zh-x|這 話 出自 你 的 口,聽來 令人 奇怪。|Kakaiba ang tunog nito sa iyong '''bibig'''.}} # [[pasukan]]; [[pagbubukas]]; [[bibig]] (ng isang bagay) #: {{zh-co|入口|pasukan}} #: {{zh-co|出口|labasan}} #: {{zh-co|門口|pintuan}} # [[daanan]], lalo na sa kabundukan #: {{zh-co|^張家口|Zhangjiakou}} #: {{zh-co|^口北|ang lugar sa lampas ng [[Mahabang Muog ng Tsina]]}} #: {{zh-co|口蘑|kabute ni St. George (''Calocybe gambosa'')}} # [[butas]]; [[hiwa]] #: {{zh-co|口子{zi}|butas}} #: {{zh-co|傷口|sugat}} # [[talim]]; talim ng isang [[kutsilyo]] #: {{zh-x|刀口|talim ng isang kutsilyo}} # [[port]] #: {{zh-co|電腦 端口|port ng computer}} #: {{zh-co|C{sēi}口|port ng USB-C}} # [[perimetro]] #: {{zh-co|人口|populasyon}} #: {{zh-co|戶口|[[hukou]]}} # [[sangay]] ng [[pamahalaan]]; [[departamento]] #: {{zh-co|宣傳口}} # {{zh-classifier|mga [[miyembro ng pamilya]], mga [[populasyon]], at mga [[pang-sakahang]] [[hayop]]|cat=y}} #: {{zh-co|三 口 之 家|pamilyang may tatlong miyembro}} # {{zh-classifier|mga [[kagat]] o [[subo]]}} #: {{zh-x|我 可以 吃 一 口 嗎?|Pwede po bang '''kumagat'''? ('lit.' Maaari ba akong kumain ng isang '''kagat'''?)}} # {{zh-classifier|bagay na may [[pagbubukas]]: mga [[balon]], [[palayok]], [[garapon]], [[baril]], atbp}} # {{zh-classifier|bagay na may [[talim]]: mga [[kutsilyo]], [[sandata]], atbp}} # {{lb|zh|neologism|slang}} [[isubo]] ang [[ari]] ng lalaki #* {{zh-x|為什麼 女朋友 給 我 口 我 沒什麼 感覺?|Bakit wala akong naramdaman noong '''chinupa''' ako ng nobya ko?|ref='''2019''' Agosto 28, Walang pangalan, [https://pkuhelper.pku.edu.cn/hole/#829617 Treehole: #829617]|tr=Wèishénme nǚpéngyǒu gěi wǒ '''kǒu''' wǒ méishénme gǎnjué?}} # {{surname|zh}} ====Mga kasingkahulugan==== {{zh-dial|嘴}} {{zh-dial|口}} {{zh-dial|口-2}} {{zh-dial|口-3}} ====Mga tambalan==== {{col3|zh|一口|丁口|下口|上口|上口字|三河口|三緘其口|丹江口|乳口|二口蟲|五口|五口通商|井口邊草//井口边草|交口|京口|人口|人多口雜//人多口杂|住口|佞口|伶口俐舌|佛口蛇心|侈口|信口|借口|倒口|偏口魚|傷口|入口|兩口|兩河口|冷口冷心|出口|刀口|切口|分房減口|分身減口|利口|刺口|剛口|剪票口|創口|劈口|動口|勒口|北口|南口|叉口|反口|口不應心|口不擇言|口中雌黃|口乖心歪|口乾舌燥|口仇|口令|口伐|口佔|口供|口信|口傳|口兒|口具|口出不遜|口出穢言|口分|口勁|口北|口占|口口聲聲|口吃|口吐珠璣|口吻|口味|口哨|口嘴|口器|口噤|口型|口外|口如懸河|口子|口宣|口密腹劍|口實|口尚乳臭|口屈|口岸|口弦|口強|口形|口彩|口徑|口德|口快|口惠|口感|口愬|口才|口技|口拙|口授|口敕|口是心非|口服|口枯眼澀|口條|口棧|口業|口氣|口水|口沉|口沒遮攔|口沫|口涎|口湖|口渴|口滑|口澤|口炎|口無擇言|口無遮攔|口燥唇乾|口燥脣乾|口琴|口甜如蜜|口瘡|口白|口皮|口眼歪斜|口硬|口碑|口磣|口福|口稱|口笛|口答|口算|口籍|口糜|口糧|口紅|口給|口緊|口罩|口義|口耳之學|口耳相傳|口能|口脂|口腔|口腹|口腳類|口臭|口舌|口若懸河|口蓋|口蘑|口號|口蜜腹劍|口血未乾|口袋|口裡|口角|口訣|口許|口訥|口詞|口詔|口試|口誅筆伐|口語|口誤|口誦|口說無憑|口談|口諭|口講指畫|口譯|口賦|口蹄疫|口輕|口輪肌|口辯|口述|口過|口重|口鈍|口錢|口隔心慌|口靜|口音|口順|口頭|口題|口願|口風|口食|口饞|口香糖|口馬|口體之養|口髭|口齒|可口|古城口|合口|吐口|吃口|吃開口飯|告口|周口店|咀吸口|啣口墊背|啞口無言|售票口|單口相聲|喜峰口|𠺘口|噴口|噤口|圈口|城口|城垛口|堂口|基隆廟口|壺口瀑布|外口|多口|大口|大沽口|失口|女口|好口|子口|守口如瓶|官渡口|害口|家口|寸口|封口|對口|小倆口|小口|小河口|小溪口|尺口|山口|岔口|峽口|峰口|巷口|帶口|幫口|度口|弄口|張口|張家口|張家口堡|張舌騙口|得勝口|心伏口伏|心口|心拙口夯|心拙口笨|忌口|怯口|惹口面|應口|懸口|戒口|戶口|打牙訕口|把口|拑口|拗口|拙口笨腮|拙口鈍腮|拙口鈍辭|挂口|接口|捷口|掩口|掉嘴口|插口|提口拔舌|揜口葫蘆|提心在口|搬口|撮口呼|擋口|攙口|收口|改口|放口|啟口|新堤口|新江口|新河口|新港口|斷口|書口|有口無心|有口無行|有口皆碑|有口難分|有口難言|有口難辨|朱口皓齒|杜口|林口|枉口拔舌|極口|樊口|檔口|檀口|歷口|歹口|殺口甜|水口|水峽口|江口|決口|沒口|沙口|沙河口|泉口|河口|活口|流口轍|海口|浦口|混一口飯|清河口|湖北口|湖北口回族鄉|渡口|湖口|渠口|湘口|港口|渦口|湋源口|滅口|溪口坪|滿口|漢口|漱口|漁峽口|澗口|潘口|灌口二郎|炮口|無口|焰口|營口|爭口|爽口|片口張舌|版口|牙口|牙白口清|牲口|獅子口|瓶口|甚口|生口|生意口|田駢天口|界口|異口同聲|異口同辭|異口同音|當口|病從口入|病由口入|瘡口|登場口|白口|百口|目呆口咂|目定口呆|目睜口呆|目瞠口哆|目瞪口僵|目瞪口呆|目瞪口歪|眾口一詞|眾口交攻|眾口交薦|眾口交譽|眾口同聲|眾口如一|眾口熏天|眾口稱善|眾口紛紜|眾口鑠金|眾口難調|矢口|破口|礄口|礙口|禁口|禍從口出|空口|窗口|笑口常開|笨口拙舌|箝口|糊口|糖舌蜜口|紅口白舌|素口罵人|絕口|結口|統口|緘口|緘舌閉口|縮衣節口|繡口錦心|缺口|羅口|羞口羞腳|群口鑠金|翻口|老河口|聲口|肆口|胃口|胸口|脫口|舊口|船口|苦口|菜市口|藉口|虎口|虎狼之口|蛇口蜂針|蛇心佛口|蠻口|血口噴人|行口|街口|衝口而出|衝口而發|袖口|裂口|褪口|要口|親口|角口|討口|訊口|訥口|誇口|說口|論口|談天口|講口|讒口|谷口|豁口截舌|費口|賣口|賞口飯吃|赤口毒舌|赤口白舌|走口|趁口|路口|軟口湯|輕口薄舌|轉口|轉渠口|辯口利舌|辯口利辭|通口|通海口|進口|逸口|過口|適口|釋口|金口|金舌弊口|鉗口|錦心繡口|鍼口|鎗口|鐵口|長埫口|門口|閉口奪氣|閉口無言|閉口藏舌|閉口韻|開口|閘口|關口|防寫口|陪口|隘口|隨口|雞口牛後|面方口闊|面闊口方|順口|頓口無言|領口|頭口|風口|食不充口|餬口|饕口饞舌|香口|馬口|馬口鐵|騙口張舌|驅口|髯口|鬆口|鬥口|鬼擘口|魚口|鹽醬口|麥口期|麻豪口|黃口|黃家口|黃歇口|黃顙口|黑口|齊口|龍口|布倫口|衝口|周口|惡口|一口咬死|信口雌黃|口碑載道|免稅口岸|吃口令|幽靈人口|一身一口|口沫橫飛|一口飯|交叉口|信口開河|人口密度|口述歷史|心口合一|交口稱贊|人多口雜|剌口子|口頭禪|弄口鳴舌|勞務出口|信口開喝|心服口服|予人口實|一口兩匙|不對胃口|人口轉型|合口元音|丁口冊|人口政策|出口入耳|兩口兒|失業人口|口快心直|心不應口|吹口哨|人口爆炸|兩口子|口齒伶俐|不統口|口傳心授|不絕口|張口結舌|仇口兒|三岔路口|心口不一|口風琴|口腔期|喊口令|口語傳播|小兩口兒|口舌之便|合胃口|口頭交|人口過剩|人口結構|不能出口|吊胃口|口授心傳|口頭文學|不釋口|一口價兒|北口馬|交口接耳|信口捏膿|心直口快|口頭信|急口令|交岔路口|念不絕口|三叉口|口舌呆鈍|人口分布|心口如一|心口兩樣|井口邊草|口服疫苗|人口老化|出水口|一口咬定|彆口氣|口腔黏膜|口頭語|夫妻兩口|口頭之交|不住口|交口稱譽|合口味|出口成章|對胃口|對口相聲|對口瘡|信口胡說|口快如刀|巧言利口|報戶口|一口中|口腹之欲|口水歌|口齒便給|婆子口舌|出口傷人|出口貿易|如出一口|對口詞|好剛口|倒胃口|一番口舌|合口呼|信口開合|口頭誹謗|十字路口|人口問題|人口普查|噤口痢|人口販子|喇叭口兒|吸收口|一口鐘|出口導向|口角炎|口舌之快|口才辨給|口分田|口傳家書|大飽口福|三口兩口|一口氣|不倒口|口角春風|利口捷給|口腔癌|出口貨|口吻生花|口能舌便|戶口調查|櫻桃小口|百口莫辯|空口說|授人口實|河口港|放口風|戶口校正|矢口否認|滿口胡說|沿海口子|滿口答應|搬弄口舌|杜口絕言|搬口弄舌|空口無憑|突破口|甖子口|拉家帶口|杜口絕舌|海口浪言|林口臺地|礙口飾羞|探虎口|破口大罵|白口鐵|拐帶人口|放焰口|沒口子|百口難分|朗朗上口|發脫口齒|登山口|杜口無言|甘冒虎口|瓤口兒|白口咀咒|琅琅上口|戶口普查|戶口名簿|沒胃口|搿著口兒|爭口氣|探口風|火山口|杜口結舌|漱口水|掩口盧胡|流口水|滿口胡柴|方頤大口|活口米|查戶口|毒藥苦口|流動人口|拗口風|杜口吞聲|滿口應承|拗口令|敞口兒|掩口胡盧|殺人滅口|探口氣|滿口應允|杜口裹足|販賣人口|轉口貿易|露口風|脫口而出|良藥苦口|這口氣|這個擋口|美味可口|緘口如瓶|買賣人口|行口商|落人口實|誇海口|貽人口實|羊入虎口|虎口拔牙|進口配額|順口兒|開口笑|脫口秀|進口稅|馬口錢|黃口小兒|綻口兒|絕口不提|進口貿易|鉗口吞舌|緘口無言|結舌杜口|緘口不言|誇下海口|脫口成章|虎口逃生|黃口孺子|虎口餘生|羊落虎口|鬧口舌|鬥口齒|鬆一口氣|血盆大口|養家活口|飯來開口|話口兒|老年人口|順口食|順口開河|順口談天|順口溜|讚不絕口|金人緘口|金口木舌|鵝口瘡|進口貨|開口閉口|開口跳|開口呼|開口元音|轉口稅|鐵口直斷|鏨口兒|緘口結舌|鉗口撟舌|金口玉言|開口子|食不餬口|進口家電|鉗口結舌|通商口岸|貼現窗口|費口舌|谷口耕岩|討口牙|箝口結舌|血口子|進出口|苦口婆心|說海口|膾炙人口|膨脹缺口|繞口令|絕口不道|一口一聲|一口價|一口同聲|一口同音|一口胡柴|一口長齋|一虎口|一門口子|丁口錢|七口八嘴|三江口|不容口|世口|井陘口|亡口|交口同聲|京口酒|人口稅|人口粥|仇口|以口問心|佳口|信口開呵|倒口子|假口|免開尊口|兩肩荷口|八口|公田口井|冗口|凡口|出口稅|分口|到口|削口|前口兒|剪口|劇口|勺口|十口相傳|十字口|十字街口|卡口|口不二價|口中虱|口中蚤蝨|口乾舌焦|口事|口井|口伎|口似懸河|口內|口兵|口冊|口利|口剌|口受|口口|口口相傳|口叭叭|口吃詩|口吞三世|口吟舌言|口吧吧|口含天憲|口含錢|口吶|口呆目瞪|口呆目鈍|口呿眸眙|口哦|口唾|口啍|口啜|口噦|口回|口報|口堿|口墜天花|口壅若川|口多|口大|口奏|口孽|口寫|口對|口小|口川|口巴巴|口引|口强|口愿|口慧|口戲|口承|口抹|口教|口敞|口數|口數粥|口斂|口是心苗|口服心服|口札|口材|口柔|口案|口機|口歹|口水話|口沸目赤|口淡|口溜子|口澳|口爽|口率|口珠|口甜|口生|口畫|口疢|口疳|口病|口直|口直心快|口碎|口穩|口筭|口米|口累|口羞|口耳相承|口聲|口胃|口腕|口茄目瞠|口薦|口藏|口蠟|口袋戰術|口袋陣|口角生風|口角風情|口觜|口言|口話|口誦心惟|口誦心維|口調|口談指畫|口論|口諛|口諧辭給|口講手畫|口譚|口讒|口象|口貨|口費|口輔|口輕舌薄|口辨|口辭|口達|口邏肚攢|口采|口鉗|口鉗舌卷|口銜天憲|口銳|口陳|口面|口頭話|口頰|口頰壞疽|口食米|口體|口鬆|口齗|古北口|右口|合口椒|名口|向口|吝口|吟口|否口|吳口|吶口|呀口|呐口|味口|和口|咍口|哆口|哨口|唇三口四|唇焦口燥|唱口|啞口|啞口無聲|單口|單口快板|嗑口|嗽口|嘖口|嘵音瘏口|噙口錢|噤口捲舌|嚼口|回口|土口|垂餌虎口|垛口|埡口|堞口|塞口|壑口|壘口|天口|奄口|奶口|妄口|妄口巴舌|妄口拔舌|妒口|子口稅|孔口|守口|守瓶緘口|官口|害口磣|寄口|射口|對口快板|對口疽|小兩口|尚口|岔路口|岔道口|崖口|川口|市口|弇口|弓口|引口醪|弭口|弱口|張口掉舌|張口貨|強口|彪口|從理入口|心口相應|忍口|快口|急口|性急口快|怯憐口|悅口|悔口|惟口起羞|惠口|惹口舌|愛口|愛口識羞|慎口|慣口|戍口|戶口冊|戶口簿|手口之澤|扎口辣舌|折口|折口福|探口而出|推口|掩口失聲|掩口而笑|措口|揀口兒|揜口|搐口兒|摩口膏舌|撐口|撑口|撒口|撮口|改口沓舌|敏口|敞口|敞口船|斂口|斗口|料口|料綽口|易口以食|是非口舌|曲不離口|有口|有口舌|有口難辯|木口雕刻|朱口|村口|杓口|板城渚口|枉口|枉口嚼舌|枉口誑舌|柑口|椒口|業口|極口項斯|槽口|橫口|檐口|檐口天溝|歲口|歸口|死口|毒口|民口|氣口|汙口橫衊|汛口|沒牙沒口|河目海口|河門海口|油口|沿口|泄口|注口|洛口倉|流口常談|流膾人口|游口|湊口饅頭|湓口|湓浦口|溜口|溢口|溺口|滑串流口|滕口|滯口|漫口|潑口|濡口|灌口|火口湖|無口匏|無口詩令|焰口經|熟口|熱心苦口|爭一口氣|牛口|牛口之下|狡口|獸口|率口|甘口|甜口兒|男口|畏口慎事|略綽口|異口|異口同韻|痛口|瘏口|瘏口嘵音|發口|百口橋|盛口|目怔口呆|目瞪口張|目瞪口結|直口無言|相與一口|省口|眷口|眾口|眾口一辭|眾口交傳|眾口交詈|眾口交贊|眾口嘵嘵|眾口囂囂|眾口相傳|眾口籍籍|眾口銷金|瞪目哆口|矢口猖言|破口大駡|硬口|碼口|磚口|磬口|磬口梅|神口|禁口痢|窨口|窮口|窯口|笑口|筆伐口誅|算口|箝口側目|節口|簧口|簧口利舌|簷口|籋口|籍口|籠口戲|籥口|精唇潑口|紅口白牙|結舌鉗口|給口|維口食|緣口|縱口|縱理入口|繞口|繡口|纏口湯|缺口鑷子|羞口|群口|老兩口|老口|老口兒|聚口|聱牙戟口|聲聲口口|脈口|脣焦口燥|脱口|腔口|腰包戶口|膠口|舉口|花口|若口引|苦口師|苦口惡石|茬口|莊口|萬口一詞|萬口一辭|蕩口|薦口|虎口扳鬚|虎口拔鬚|虛口|蛇口結|蜚狐口|蜜口劍腹|螫口|蠡口|血口|衆口一詞|衆口難調|褲口|西口|見口|觃口|計口|討口子|訕口|託口|設口|設焰口|話口|話口袋子|誇大口|誘口|說不出口|說口嘴|說大口|課口|調口|諂口|談不容口|諉口|諴口|謗口|謹口|謾天口|譟口|讒口鑠|讒口鑠金|讓口|谷口子真|谷口真|谷口耕|谷口耕夫|谷口躬耕|谷口隱|豁口|象口|負口|貪口|貪口腹|貫口|費口唇|賞口|賣口吃|賽口|贊不絕口|贊不絶口|贊口不絕|赤口|赤口日|赤口燒城|走西口|越口|趕口|路在口邊|踧口|身口|身衣口食|軀口|車口|軋口|軒亭口|較口|輕口|輕口輕舌|輕言肆口|輞口|輿口|轍口|辟口|辨口|辯口|迭口|逆口|造口孽|造口業|連口|進口詞|運口|道口|道口錫|遼口|還口|還口願|邊口|鄭口|金口御言|金口玉牙|金口玉音|金口角|鈍口拙腮|鈐口鞋兒|銜口墊背|鋪頭口|鋼口|錦胸繡口|錯口|鍼口結舌|鎖口|鑠口|長星赤口|閉口|閉口捕舌|閉口結舌|開亮口|開口椒|開口見心|開口見膽|開口貨|開口銷|閒口|闔門百口|闕口|防口|降口|隧口|雞口|雨水口|露口信|青口白舌|面朋口友|鞋口|項發口縱|順口話|風口浪尖|風門水口|食口|食饌一口|飯來張口|飾口|養口|養家糊口|馬勒口|馬口柴|馬口魚|騙口|騰口|驛口|高下在口|鬻口|鬼劈口|鯨口|鴻口|鵝口|鵝口白瘡|鶴口|麗口|黃口兒|黔口|默口|鼓口|口桀|口胡|口古月|口耐|口年|口塞|大口環|口嗨}} ====Mga nagmula==== {{CJKV|口|く|j2=こう|구|khẩu}} ===Pinagmulan 2=== {{zh-see|名|a}} ===Tingnan din=== * {{l|zh|□}} ===Sangguinan=== * {{R:yue:Hanzi}} {{cat|cmn|Pasimulang Mandarin}} =={{=vi=}}== ===Karakter na Han=== {{vi-readings|rs=口00 |hanviet=khẩu-tdcntd;gdhn |phienthiet= |nom=khẩu-tdcntd;gdhn }} # {{vi-Han form of|khẩu|[[bibig]]; [[pagbubukas]]}} ====Mga tambalan==== {{col3|vi |{{vi-l|口味|khẩu vị}} |{{vi-l|口語|khẩu ngữ}} |{{vi-l|口號|khẩu hiệu}} |{{vi-l|口裝|khẩu trang}} |{{vi-l|人口|nhân khẩu}} |{{vi-l|戶口|hộ khẩu}} |{{vi-l|入口|nhập khẩu}} |{{vi-l|出口|xuất khẩu}} |{{vi-l|密口|mật khẩu}} }} ===Sangguinan=== <references/> =={{=rys=}}== ===Kanji=== {{rys-kanji}} ====Pagbasa==== {{rys-readings |kun=ふつぃ- }} ===Pagbigkas=== * {{IPA|rys|/fu̻t͡sɨ/}} ===Pangngalan=== {{rys-head|noun|ふつぃ}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] {{C|rys|Anatomiya|Lingguwistika|Talking}} =={{=yoi=}}== ===Kanji=== {{yoi-kanji}} ====Pagbasa==== {{yoi-readings |kun=ってぃ- }} ===Pagbigkas=== * {{IPA|yoi|/tˀi/}} ===Pangngalan=== {{yoi-head|noun|ってぃ}} # [[bibig]] # [[wika]] # [[diyalekto]] # [[pananalita]] {{C|yoi|Anatomiya|Lingguwistika|Talking}} i5s7koerh7e6gani3wy6pdbt02k3j5d Padron:warning 10 38396 177348 177266 2026-08-25T02:14:15Z Yivan000 4078 177348 wikitext text/x-wiki {{maintenance box|yellow | image = [[File:{{{image|{{{icon|Codex icon Alert yellow.svg}}}}}}|40px|alt=<!--TLCHANGE Warning-->Babala|link=]] | title = {{{title|Warning}}} | text = {{{text|{{{1}}}}}} }}<noinclude>{{documentation}}</noinclude> rxzhv27i8113vcb5cy3p9l8iz86g82m 177349 177348 2026-08-25T02:14:41Z Yivan000 4078 177349 wikitext text/x-wiki {{maintenance box|yellow | image = [[File:{{{image|{{{icon|Codex icon Alert yellow.svg}}}}}}|40px|alt=<!--TLCHANGE Warning-->Babala|link=]] | title = {{{title|<!--TLCHANGE Warning-->Babala}}} | text = {{{text|{{{1}}}}}} }}<noinclude>{{documentation}}</noinclude> h4wknavdwpi1ixyjx1qgyydk87mncpx Padron:CJKV 10 38404 177366 177284 2026-08-25T06:13:26Z Yivan000 4078 enwikt parity 177366 wikitext text/x-wiki {{#invoke:checkparams|warn}}<!-- Validate template parameters -->{{CJKV/code<!-- 01-->|{{#if:{{{1|}}}|{{{1}}}|{{PAGENAME}}}}<!-- 02-->|{{{2|}}}<!-- 03-->|{{{3|}}}<!-- 04-->|{{{4|}}}<!-- 05-->|{{{5|}}}<!-- 05-->|{{{6|}}}<!-- j2-->|j2={{{j2|}}}<!-- j3-->|j3={{{j3|}}}<!-- j4-->|j4={{{j4|}}}<!-- k2-->|k2={{{k2|}}}<!-- k3-->|k3={{{k3|}}}<!-- k4-->|k4={{{k4|}}}<!-- v2-->|v2={{{v2|}}}<!-- v3-->|v3={{{v3|}}}<!-- v4-->|v4={{{v4|}}}<!-- o2-->|o2={{{o2|}}}<!-- o3-->|o3={{{o3|}}}<!-- o4-->|o4={{{o4|}}}<!-- jje2-->|jje2={{{jje2|}}}<!-- jje3-->|jje3={{{jje3|}}}<!-- jje4-->|jje4={{{jje4|}}}<!-- s-->|s={{{s|{{{j|{{#if:{{{1|}}}|{{{1}}}|{{PAGENAME}}}}}}}}}}<!-- o-->|o={{{o|{{{o|{{#if:{{{1|}}}|{{{1}}}|{{PAGENAME}}}}}}}}}}<!-- h-->|h={{{h|{{{k|{{#if:{{{1|}}}|{{{1}}}|{{PAGENAME}}}}}}}}}}<!-- v-->|v={{{v|{{#if:{{{1|}}}|{{{1}}}|{{PAGENAME}}}}}}}<!-- jt-->|jt={{{jt|}}}<!-- j2t-->|j2t={{{j2t|}}}<!-- j3t-->|j3t={{{j3t|}}}<!-- j4t-->|j4t={{{j4t|}}}<!-- kt-->|kt={{{kt|}}}<!-- k2t-->|k2t={{{k2t|}}}<!-- k3t-->|k3t={{{k3t|}}}<!-- k4t-->|k4t={{{k4t|}}}<!-- vt-->|vt={{{vt|}}}<!-- v2t-->|v2t={{{v2t|}}}<!-- v3t-->|v3t={{{v3t|}}}<!-- v4t-->|v4t={{{v4t|}}}<!-- ot-->|ot={{{ot|}}}<!-- o2t-->|o2t={{{o2t|}}}<!-- o3t-->|o3t={{{o3t|}}}<!-- o4t-->|o4t={{{o4t|}}}<!-- jjet-->|jjet={{{jjet|}}}<!-- jje2t-->|jje2t={{{jje2t|}}}<!-- jje3t-->|jje3t={{{jje3t|}}}<!-- jje4t-->|jje4t={{{jje4t|}}}<!-- jdesc-->|jdesc={{{jdesc|}}}<!-- kdesc-->|kdesc={{{kdesc|}}}<!-- vdesc-->|vdesc={{{vdesc|}}}<!-- odesc-->|odesc={{{odesc|}}}<!-- jjedesc-->|jjedesc={{{jjedesc|}}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> cykuqbc6crxz851outrt0fujg6z5f1o 電磁石 0 38425 177338 2026-08-24T16:03:06Z Hiyuune 5522 Nilikha ang pahina na may '=={{=ja=}}== {{ja-kanjitab|でん|じ|しゃく|yomi=on}} ===Pangngalan=== {{ja-noun|でんじしゃく}} # [[elektromagneto]] ===Sanggunian=== * {{R:Kanjipedia Kotoba|0005095700}}' 177338 wikitext text/x-wiki =={{=ja=}}== {{ja-kanjitab|でん|じ|しゃく|yomi=on}} ===Pangngalan=== {{ja-noun|でんじしゃく}} # [[elektromagneto]] ===Sanggunian=== * {{R:Kanjipedia Kotoba|0005095700}} ezwykdlj5rkhgnj6jsde16wpmnxug9x 電磁鐵 0 38426 177339 2026-08-24T16:05:07Z Hiyuune 5522 Nilikha ang pahina na may '=={{=zh=}}== {{zh-forms|s=电磁铁|type=12}} {{wp|zh:}} ===Pagbigkas=== {{zh-pron |m=diàncítiě |c=din6 ci4 tit3 |mn=xm,tw:tiān-chû-thih |cat=n }} ===Pangngalan=== {{head|zh|noun}} # [[elektromagneto]]' 177339 wikitext text/x-wiki =={{=zh=}}== {{zh-forms|s=电磁铁|type=12}} {{wp|zh:}} ===Pagbigkas=== {{zh-pron |m=diàncítiě |c=din6 ci4 tit3 |mn=xm,tw:tiān-chû-thih |cat=n }} ===Pangngalan=== {{head|zh|noun}} # [[elektromagneto]] 2n1w7wypr51cm8tfbs7dfi4slmud7q5 电磁铁 0 38427 177340 2026-08-24T16:05:35Z Hiyuune 5522 Nilikha ang pahina na may '=={{=zh=}}== {{zh-see|電磁鐵}}' 177340 wikitext text/x-wiki =={{=zh=}}== {{zh-see|電磁鐵}} 4wiy1u5h1sajgkggnet2pu4oiiprks7 Padron:fi-decl-nainen-valo 10 38428 177346 2026-08-25T02:09:41Z Yivan000 4078 Nilikha ang pahina na may '<includeonly>{{#invoke:fi-nominals|show|nainen-valo}}</includeonly><!-- --><noinclude>{{documentation}}</noinclude>' 177346 wikitext text/x-wiki <includeonly>{{#invoke:fi-nominals|show|nainen-valo}}</includeonly><!-- --><noinclude>{{documentation}}</noinclude> g6ci4biafog2sfnaq2qbkzhjbg9xfrd Module:bit32 828 38429 177347 2026-08-25T02:10:18Z Yivan000 4078 Nilikha ang pahina na may '-- If Lua >= 5.2, return native bit32 if not unpack then return require("bit32") end -- Convert number to int local to_int = math.floor local abs = math.abs -- Convert number to 32-bit unsigned int local function to_int32(x) -- x % y >= 0 if y >= 0 return to_int(x) % 0x100000000 end -- 4x4 bit OR table, e.g. or_44[0x4E] = 0x4 | 0xE local or_44 = { [0] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 1, 3, 3, 5, 5, 7, 7, 9...' 177347 Scribunto text/plain -- If Lua >= 5.2, return native bit32 if not unpack then return require("bit32") end -- Convert number to int local to_int = math.floor local abs = math.abs -- Convert number to 32-bit unsigned int local function to_int32(x) -- x % y >= 0 if y >= 0 return to_int(x) % 0x100000000 end -- 4x4 bit OR table, e.g. or_44[0x4E] = 0x4 | 0xE local or_44 = { [0] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15, 2, 3, 2, 3, 6, 7, 6, 7, 10, 11, 10, 11, 14, 15, 14, 15, 3, 3, 3, 3, 7, 7, 7, 7, 11, 11, 11, 11, 15, 15, 15, 15, 4, 5, 6, 7, 4, 5, 6, 7, 12, 13, 14, 15, 12, 13, 14, 15, 5, 5, 7, 7, 5, 5, 7, 7, 13, 13, 15, 15, 13, 13, 15, 15, 6, 7, 6, 7, 6, 7, 6, 7, 14, 15, 14, 15, 14, 15, 14, 15, 7, 7, 7, 7, 7, 7, 7, 7, 15, 15, 15, 15, 15, 15, 15, 15, 8, 9, 10, 11, 12, 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 15, 9, 9, 11, 11, 13, 13, 15, 15, 9, 9, 11, 11, 13, 13, 15, 15, 10, 11, 10, 11, 14, 15, 14, 15, 10, 11, 10, 11, 14, 15, 14, 15, 11, 11, 11, 11, 15, 15, 15, 15, 11, 11, 11, 11, 15, 15, 15, 15, 12, 13, 14, 15, 12, 13, 14, 15, 12, 13, 14, 15, 12, 13, 14, 15, 13, 13, 15, 15, 13, 13, 15, 15, 13, 13, 15, 15, 13, 13, 15, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, } -- 4x4 bit AND table, e.g. and_44[0x4E] = 0x4 & 0xE local and_44 = { [0] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 0, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 1, 0, 1, 4, 5, 4, 5, 0, 1, 0, 1, 4, 5, 4, 5, 0, 0, 2, 2, 4, 4, 6, 6, 0, 0, 2, 2, 4, 4, 6, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 0, 1, 0, 1, 0, 1, 0, 1, 8, 9, 8, 9, 8, 9, 8, 9, 0, 0, 2, 2, 0, 0, 2, 2, 8, 8, 10, 10, 8, 8, 10, 10, 0, 1, 2, 3, 0, 1, 2, 3, 8, 9, 10, 11, 8, 9, 10, 11, 0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 12, 12, 12, 12, 0, 1, 0, 1, 4, 5, 4, 5, 8, 9, 8, 9, 12, 13, 12, 13, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, } -- 4x4 bit XOR table, e.g. xor_44[0x4E] = 0x4 ^ 0xE local xor_44 = { [0] = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14, 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13, 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12, 4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 8, 9, 10, 11, 5, 4, 7, 6, 1, 0, 3, 2, 13, 12, 15, 14, 9, 8, 11, 10, 6, 7, 4, 5, 2, 3, 0, 1, 14, 15, 12, 13, 10, 11, 8, 9, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 9, 8, 11, 10, 13, 12, 15, 14, 1, 0, 3, 2, 5, 4, 7, 6, 10, 11, 8, 9, 14, 15, 12, 13, 2, 3, 0, 1, 6, 7, 4, 5, 11, 10, 9, 8, 15, 14, 13, 12, 3, 2, 1, 0, 7, 6, 5, 4, 12, 13, 14, 15, 8, 9, 10, 11, 4, 5, 6, 7, 0, 1, 2, 3, 13, 12, 15, 14, 9, 8, 11, 10, 5, 4, 7, 6, 1, 0, 3, 2, 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, } local function b44(tbl, dflt, ...) -- apply bitwise operation in 4-bit chunks. -- tbl is the table of 16x16 values used to perform bitop on 4-bit blocks -- dflt is a default value if no args given local arg = { ... } local to_int = to_int local x = to_int32(arg[1] or dflt) local y, r for i = 2, # arg do y = to_int32(arg[i]) -- for i = 1, 8 do -- r, q = r + q * tbl[(to_int(x / q) % 16) * 16 + (to_int(y / q) % 16)], q * 16 -- end -- x = r -- inlined, with optimizations and precomputation: x = ( tbl[( x % 16) * 16 + ( y % 16)] + 0x00000010 * tbl[(to_int(x / 0x00000010) % 16) * 16 + (to_int(y / 0x00000010) % 16)] + 0x00000100 * tbl[(to_int(x / 0x00000100) % 16) * 16 + (to_int(y / 0x00000100) % 16)] + 0x00001000 * tbl[(to_int(x / 0x00001000) % 16) * 16 + (to_int(y / 0x00001000) % 16)] + 0x00010000 * tbl[(to_int(x / 0x00010000) % 16) * 16 + (to_int(y / 0x00010000) % 16)] + 0x00100000 * tbl[(to_int(x / 0x00100000) % 16) * 16 + (to_int(y / 0x00100000) % 16)] + 0x01000000 * tbl[(to_int(x / 0x01000000) % 16) * 16 + (to_int(y / 0x01000000) % 16)] + 0x10000000 * tbl[(to_int(x / 0x10000000) ) * 16 + (to_int(y / 0x10000000) )]) end return x end local function band(...) return b44(and_44, -1, ...) end local function bor(...) return b44(or_44, 0, ...) end local function bxor(...) return b44(xor_44, 0, ...) end local function bnot(x) return 0xFFFFFFFF - to_int32(x) end local function btest(...) return band(...) ~= 0 end local function lshift(n, disp) disp = to_int(disp) return abs(disp) >= 32 and 0 or (to_int32(n) * (2 ^ disp)) % 0x100000000 end local function rshift(n, disp) disp = to_int(disp) return abs(disp) >= 32 and 0 or to_int(to_int32(n) * (2 ^ -disp)) end local function arshift(n, disp) n = to_int32(n) disp = to_int(disp) local r = abs(disp) >= 32 and 0 or to_int(n * (2 ^ -disp)) if n >= 0x80000000 then if disp >= 32 then r = 0xFFFFFFFF elseif disp > 0 then r = r + to_int32(0xFFFFFFFF * 2 ^ (32 - disp)) end end return r end local function lrotate(n, disp) n = n * 2 ^ (to_int(disp) % 32) return to_int(n / 0x100000000) + to_int32(n) end local function rrotate(n, disp) n = n * 2 ^ (32 - (to_int(disp) % 32)) return to_int(n / 0x100000000) + to_int32(n) end local function extract(n, field, width) width = to_int(width or 1) field = to_int(field) if field < 0 or field + width > 32 or width < 0 then error("trying to access non-existent bits") end return to_int(to_int32(n) * 2 ^ -field) % (2 ^ width) end local function replace(n, v, field, width) width = to_int(width or 1) field = to_int(field) if field < 0 or field + width > 32 or width < 0 then error("trying to access non-existent bits") end local field_shift = 2 ^ field local field_width = 2 ^ width return band(n, 0xFFFFFFFF - field_shift * (field_width - 1)) + field_shift * (v % field_width) end return { band = band, bor = bor, bxor = bxor, bnot = bnot, btest = btest, lshift = lshift, rshift = rshift, arshift = arshift, lrotate = lrotate, rrotate = rrotate, extract = extract, replace = replace, } kv599abdl5zgexyczvwewqq40sq9nkx MediaWiki:Abusefilter-warning-skipped-heading-level 8 38430 177350 2026-08-25T02:38:33Z Yivan000 4078 Nilikha ang pahina na may '{{warning | icon = Attention Sign.svg | text = Please make sure that each heading level is nested only one level below its parent. For example: <pre> ==Heading 1== ===Heading 2=== ====Heading 3==== </pre> '''not:''' <pre> ==Heading 1== ====Heading 2==== </pre> See [[WT:NORM]] and [[WT:LAYOUT]] for more information about entry layout. }}' 177350 wikitext text/x-wiki {{warning | icon = Attention Sign.svg | text = Please make sure that each heading level is nested only one level below its parent. For example: <pre> ==Heading 1== ===Heading 2=== ====Heading 3==== </pre> '''not:''' <pre> ==Heading 1== ====Heading 2==== </pre> See [[WT:NORM]] and [[WT:LAYOUT]] for more information about entry layout. }} 9ns70ylkv2fnsor5ymgbtxvl7gdud94 Padron:hi-head 10 38431 177352 2026-08-25T02:55:21Z Hiyuune 5522 Nilikha ang pahina na may '{{#invoke:inc-headword|show|lang=hi}}<!-- --><noinclude>{{documentation}}</noinclude>' 177352 wikitext text/x-wiki {{#invoke:inc-headword|show|lang=hi}}<!-- --><noinclude>{{documentation}}</noinclude> 2o8xdx74yebj2l8bfz9dt0b3vi8bhu4 बजा 0 38432 177353 2026-08-25T02:55:32Z Hiyuune 5522 Nilikha ang pahina na may '=={{=hi=}}== ===Pagbigkas=== * {{hi-IPA}} ===Pandiwa=== {{hi-head|verbf}} # {{infl of|hi|बजाना||stem|;|2|s|intim|pres|imp}}' 177353 wikitext text/x-wiki =={{=hi=}}== ===Pagbigkas=== * {{hi-IPA}} ===Pandiwa=== {{hi-head|verbf}} # {{infl of|hi|बजाना||stem|;|2|s|intim|pres|imp}} i9or07ki50q35hfs95wlwdzs95gdzcm verontschuldigingen 0 38433 177355 2026-08-25T03:01:16Z Hiyuune 5522 Nilikha ang pahina na may '=={{=nl=}}== ===Pangngalan=== {{head|nl|noun form}} # {{plural of|nl|verontschuldiging}}' 177355 wikitext text/x-wiki =={{=nl=}}== ===Pangngalan=== {{head|nl|noun form}} # {{plural of|nl|verontschuldiging}} 62zg5lsnx8g7brj3esbwujk4q6ni2sa 177356 177355 2026-08-25T03:02:08Z Hiyuune 5522 /* {{=nl=}} */ 177356 wikitext text/x-wiki =={{=nl=}}== ===Pagbigkas=== * {{audio|nl|nl-verontschuldigingen.ogg}} ===Pangngalan=== {{head|nl|noun form}} # {{plural of|nl|verontschuldiging}} 4o514is9pzggwdzul8c7meqjqpdxrq7 phúc âm 0 38434 177357 2026-08-25T03:04:43Z Hiyuune 5522 Nilikha ang pahina na may '=={{=vi=}}== ===Etimolohiya=== {{vi-etym-sino|福音|[[ebanghelyo]]}}. ===Pagbigkas=== {{vi-IPA}} * {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-phúc âm.wav|a=Hanoi}} ===Pangngalan=== {{vi-noun}} # [[ebanghelyo]] #: {{syn|vi|tin mừng}} {{C|vi|Kristiyanismo}}' 177357 wikitext text/x-wiki =={{=vi=}}== ===Etimolohiya=== {{vi-etym-sino|福音|[[ebanghelyo]]}}. ===Pagbigkas=== {{vi-IPA}} * {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-phúc âm.wav|a=Hanoi}} ===Pangngalan=== {{vi-noun}} # [[ebanghelyo]] #: {{syn|vi|tin mừng}} {{C|vi|Kristiyanismo}} 4x19n211e6ysabk9sbet2ye3mrt6bem Module:ang-pron 828 38435 177359 2026-08-25T03:12:58Z Hiyuune 5522 Nilikha ang pahina na may '--[=[ Implementation of pronunciation-generation module from spelling for Old English. Author: Benwing Generally, the user should supply the spelling, properly marked up with macrons for long vowels, and ċ ġ ċġ sċ for soft versions of these consonants. In addition, the following symbols can be used: -- acute accent on a vowel to override the position of primary stress -- (in a diphthong, put it over the first vowel) -- grave accent to add secondary str...' 177359 Scribunto text/plain --[=[ Implementation of pronunciation-generation module from spelling for Old English. Author: Benwing Generally, the user should supply the spelling, properly marked up with macrons for long vowels, and ċ ġ ċġ sċ for soft versions of these consonants. In addition, the following symbols can be used: -- acute accent on a vowel to override the position of primary stress -- (in a diphthong, put it over the first vowel) -- grave accent to add secondary stress -- circumflex to force no stress on the word or prefix (e.g. in a compound) -- . (period) to force a syllable boundary -- - (hyphen) to force a prefix/word or word/word boundary in a compound word; -- the result will be displayed as a single word but the consonants on -- either side treated as if they occurred at the beginning/end of the word -- + (plus) is the opposite of -; it forces a prefix/word or word/word boundary -- to *NOT* occur when it otherwise would -- _ (underscore) to force the letters on either side to be interpreted -- independently, when the combination of the two would normally have a -- special meaning FIXME: 1. Implement < and > which works like - but don't trigger secondary stress (< after a prefix, > before a suffix) (DONE) 2. Recognize -lēas and -l[iī][cċ] as suffixes. (DONE) 2b. Recognize -fæst, -ful, -full as suffixes (so no voicing of initial fricative). (DONE) 3. If explicit syllable boundary in cluster after prefix, don't recognize as prefix (hence ġeddung could be written ġed.dung, bedreda bed.reda) (DONE) 4. Two bugs in swīþfèrhþ: missing initial stress, front h should be back (DONE) 5. Check Urszag's code changes for /h/. (DONE) 6. Bug in wasċan; probably sċ between vowels should be ʃʃ (DONE) 7. Bug in ġeddung, doesn't have allowed onset with ġe-ddung (DONE) 8. āxiġendlīc -- x is not an allowed onset (DONE) 9. Handle prefixes/suffixes denoted with initial/final hyphen -- shouldn't trigger automatic stress when multisyllabic. (DONE) 10. Don't remove user-specified accents on monosyllabic words. (DONE) 11. Final -þu/-þo after a consonant should always be voiceless (but should be overridable). (DONE; OVERRIDABLE THROUGH "EXPLICIT ALLOPHONE" NOTATION) 12. Fricative voiced between voiced sounds even across prefix/compound boundary when before (but not after) the boundary. (DONE) 13. Fricative between unstressed vowels should be voiceless (e.g. adesa); maybe only after the stress? (DONE) 14. Resonant after fricative/stop in a given syllable should be rendered as syllabic (e.g. ādl [ˈɑːdl̩], botm [botm̥], bōsm, bēacn [ˈbæːɑ̯kn̩]; also -mn e.g stemn /ˈstemn̩/. (DONE, BUT REVERSED) 15. Add aġēn- and onġēan- prefixes with secondary stress for verbs. (WILL NOT DO) 16. and- (and maybe all others) should be unstressed as verbal prefix. andswarian is an exception. (DONE) 17. Support multiple pronunciations as separate numbered params. (DONE) 17b. Additional specifiers should follow each pronun as PRONUN<K:V,K2:V2,...>. This includes the current pos=. 18. Double hh should be pronounced as [xː]. (DONE) 19. Add -bǣre as a suffix with secondary stress. (DONE) 20. Add -līċ(e), lī[cċ]nes(s) as suffixes with secondary stress. -lī[cċ]nes(s) should behave like -līċ(e) in that what's before is checked to determine the pos. (DONE) 21. -lēasnes should be a recognized suffix with secondary stress. (DONE) 22. Fix handling of crinċġan, dynċġe, should behave as if ċ isn't there. (DONE) 23. Rewrite to use [[Module:ang-common]]. (DONE) 24. Ignore final period/question mark/exclamation point. (DONE) 25. Implement pos=verbal for handling un-. (DONE) 26. Simplify geminate consonants within a single syllable. (DONE) 27. Implement "explicit allophone" notation, e.g. [s] [z]. (DONE) 28. ''-sian'' should be voiceless in verbs. (DONE) 29. ''-rian'' should have /j/ after short vowels in verbs. (DONE) 30. BUG: Secondary stress not getting applied in ''-lēas'' (see [[aldorleas]]). QUESTIONS: 1. Should /an/, /on/ be pronounced [ɒn]? Same for /am/, /om/. [NO] 2. Should final /ɣ/ be rendered as [x]? [NO] 3. Should word-final double consonants be simplified in phonetic representation? Maybe also syllable-final except obstruents before [lr]? [YES] 4. Should we use /x/ instead of /h/? [YES] 5. Should we recognize from- along with fram-? [NO] 6. Should we recognize bi- along with be-? (danger of false positives) [NO] 7. Should fricative be voiced before voicd sound across word boundary? (dæġes ēage [ˈdæːjez ˈæːɑ̯ɣe]?) [NO] 8. Ask about pronunciation of bræġn, is the n syllabic? It's given as /ˈbræjn̩/. Similarly, seġl given as /ˈsejl̩/. [NO; HUNDWINE AND URSZAG DISAGREE] 9. Ask about pronunciation of ġeond-, can it be either [eo] or [o]? [UNCLEAR] 10. Is final -ol pronounced [ul] e.g regol [ˈreɣul]? Hundwine has created entries this way. What about final -oc etc.? [NO] 11. Is final -ian pronounced [jan] or [ian]? Cf. sċyldigian given as {{IPA|ang|/ˈʃyldiɣiɑn/|/ˈʃyldiɣjɑn/}}. What about spyrian given as /ˈspyr.jɑn/? [-ian in weak II verbs, -jan in weak I verbs] 12. seht given as /seçt/ but sehtlian given as /ˈsextliɑn/. Which one is correct? [ç] 13. Final -liċ or -līċ, with or without secondary stress? 14. Should we special-case -sian [sian]? Then we need support for [z] notation to override phonetics. ]=] local strutils = require("Module:string utilities") local m_table = require("Module:table") local m_IPA = require("Module:IPA") local lang = require("Module:languages").getByCode("ang") local com = require("Module:ang-common") local u = require("Module:string/char") local rsubn = mw.ustring.gsub local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rgsplit = mw.text.gsplit local ulen = mw.ustring.len local ulower = mw.ustring.lower -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar, n) local retval = rsubn(term, foo, bar, n) return retval end -- like str:gsub() but discards all but the first return value local function gsub(term, foo, bar, n) local retval = term:gsub(foo, bar, n) return retval end local export = {} -- When auto-generating primary and secondary stress accents, we use these -- special characters, and later convert to normal IPA accent marks, so -- we can distinguish auto-generated stress from user-specified stress. local AUTOACUTE = u(0xFFF0) local AUTOGRAVE = u(0xFFF1) -- When the user uses the "explicit allophone" notation such as [z] or [ç] to -- force a particular allophone, we internally convert that notation into a -- single special character. local EXPLICIT_TH = u(0xFFF2) local EXPLICIT_DH = u(0xFFF3) local EXPLICIT_S = u(0xFFF4) local EXPLICIT_Z = u(0xFFF5) local EXPLICIT_F = u(0xFFF6) local EXPLICIT_V = u(0xFFF7) local EXPLICIT_G = u(0xFFF8) local EXPLICIT_GH = u(0xFFF9) local EXPLICIT_H = u(0xFFFA) local EXPLICIT_X = u(0xFFFB) local EXPLICIT_C = u(0xFFFC) local EXPLICIT_I = u(0xFFFD) local explicit_cons = EXPLICIT_TH .. EXPLICIT_DH .. EXPLICIT_S .. EXPLICIT_Z .. EXPLICIT_F .. EXPLICIT_V .. EXPLICIT_G .. EXPLICIT_GH .. EXPLICIT_H .. EXPLICIT_X .. EXPLICIT_C -- Map "explicit allophone" notation into special char. See above. local char_to_explicit_char = { ["þ"] = EXPLICIT_TH, ["ð"] = EXPLICIT_DH, ["s"] = EXPLICIT_S, ["z"] = EXPLICIT_Z, ["f"] = EXPLICIT_F, ["v"] = EXPLICIT_V, ["g"] = EXPLICIT_G, ["ɣ"] = EXPLICIT_GH, ["h"] = EXPLICIT_H, ["x"] = EXPLICIT_X, ["ç"] = EXPLICIT_C, ["i"] = EXPLICIT_I, } -- Map "explicit allophone" notation into normal spelling, for supporting ann=. local char_to_spelling = { ["þ"] = "þ", ["ð"] = "þ", ["s"] = "s", ["z"] = "s", ["f"] = "f", ["v"] = "f", ["g"] = "g", ["ɣ"] = "g", ["h"] = "h", ["x"] = "h", ["ç"] = "h", ["i"] = "i", } -- Map "explicit allophone" notation into phonemes, for phonemic output. local explicit_char_to_phonemic = { [EXPLICIT_TH] = "θ", [EXPLICIT_DH] = "θ", [EXPLICIT_S] = "s", [EXPLICIT_Z] = "s", [EXPLICIT_F] = "f", [EXPLICIT_V] = "f", [EXPLICIT_G] = "ɡ", -- IPA ɡ! [EXPLICIT_GH] = "ɡ", -- IPA ɡ! [EXPLICIT_H] = "x", [EXPLICIT_X] = "x", [EXPLICIT_C] = "x", [EXPLICIT_I] = "i", } -- Map "explicit allophone" notation into IPA phones, for phonetic output. local explicit_char_to_phonetic = { [EXPLICIT_TH] = "θ", [EXPLICIT_DH] = "ð", [EXPLICIT_S] = "s", [EXPLICIT_Z] = "z", [EXPLICIT_F] = "f", [EXPLICIT_V] = "v", [EXPLICIT_G] = "ɡ", -- IPA ɡ! [EXPLICIT_GH] = "ɣ", [EXPLICIT_H] = "h", [EXPLICIT_X] = "x", [EXPLICIT_C] = "ç", [EXPLICIT_I] = "i", } local accent = com.MACRON .. com.ACUTE .. com.GRAVE .. com.CFLEX .. AUTOACUTE .. AUTOGRAVE local accent_c = "[" .. accent .. "]" local stress_accent = com.ACUTE .. com.GRAVE .. com.CFLEX .. AUTOACUTE .. AUTOGRAVE local stress_accent_c = "[" .. stress_accent .. "]" local back_vowel = "aɑou" local front_vowel = "eiyæœø" .. EXPLICIT_I local vowel = back_vowel .. front_vowel local vowel_or_accent = vowel .. accent local vowel_c = "[" .. vowel .. "]" local vowel_or_accent_c = "[" .. vowel_or_accent .. "]" local non_vowel_c = "[^" .. vowel .. "]" local front_vowel_c = "[" .. front_vowel .. "]" -- The following include both IPA symbols and letters (including regular g and IPA ɡ) -- so it can be used at any step of the process. local obstruent = "bcċçdfgɡɣhkpqstvxzþðθʃʒ" .. explicit_cons local resonant = "lmnŋrɫ" local glide = "ġjwƿ" local cons = obstruent .. resonant .. glide local cons_c = "[" .. cons .. "]" local voiced_sound = vowel .. "lrmnwjbdɡ" -- WARNING, IPA ɡ used here -- These rules operate in order, and apply to the actual spelling, -- after (1) macron decomposition, (2) syllable and prefix splitting, -- (3) placement of primary and secondary stresses at the beginning -- of the syllable. Each syllable will be separated either by ˈ -- (if the following syllable is stressed), by ˌ (if the following -- syllable has secondary stress), or by . (otherwise). In addition, -- morpheme boundaries where the consonants on either side should be -- treated as at the beginning/end of word (i.e. between prefix and -- word, or between words in a compound word) will be marked with ⁀ -- before the syllable separator, and the beginning and end of text -- will be marked by ⁀⁀. The output of this is fed into phonetic_rules, -- and then is used to generate the displayed phonemic pronunciation -- by removing ⁀ symbols. local phonemic_rules = { {com.MACRON, "ː"}, {"eoː", "oː"}, -- e.g. ġeōmor {"eaː", "aː"}, {"[ei]ː?[aeo]", { -- Alternative notation for short diphthongs: iu̯, eo̯, æɑ̯ -- Alternative notation for long diphthongs: iːu̯, eːo̯, æːɑ̯ ["ea"] = "æ͜ɑ", ["eːa"] = "æ͜ɑː", ["eo"] = "e͜o", ["eːo"] = "e͜oː", ["io"] = "i͜u", ["iːo"] = "i͜uː", ["ie"] = "i͜y", ["iːe"] = "i͜yː", }}, -- sċ between vowels when at the beginning of a syllable should be ʃ.ʃ {"(" .. vowel_c .. "ː?)([.ˈˌ]?)sċ(" .. vowel_c .. ")", "%1ʃ%2ʃ%3"}, -- other sċ should be ʃ; note that sċ divided between syllables becomes s.t͡ʃ {"sċ", "ʃ"}, -- x between vowels when at the beginning of a syllable should be k.s; -- remaining x handled below {"(" .. vowel_c .. "ː?)([.ˈˌ]?)x(" .. vowel_c .. ")", "%1k%2s%3"}, -- z between vowels when at the beginning of a syllable should be t.s; -- remaining z handled below {"(" .. vowel_c .. "ː?)([.ˈˌ]?)z(" .. vowel_c .. ")", "%1t%2s%3"}, -- short front vowel + -rian, -riend, -rienne, -riende in verb or verbal is -- rendered with /j/; we need to carefully change the syllable structure -- when doing this {"(" .. front_vowel_c .. ")%.ri%.(an⁀)", "%1r.ġ%2", {"verb"}}, {"(" .. front_vowel_c .. ")%.ri%.(end⁀)", "%1r.ġ%2", {"verb", "verbal"}}, {"(" .. front_vowel_c .. ")%.ri%.(en%.[nd]e⁀)", "%1r.ġ%2", {"verb", "verbal"}}, {"nċ([.ˈˌ]?)ġ", "n%1j"}, {"ċ([.ˈˌ]?)ġ", "j%1j"}, {"c([.ˈˌ]?)g", "g%1g"}, {"ċ([.ˈˌ]?)ċ", "t%1t͡ʃ"}, {".", { ["ċ"] = "t͡ʃ", ["c"] = "k", ["ġ"] = "j", ["h"] = "x", ["þ"] = "θ", ["ð"] = "θ", ["ƿ"] = "w", ["x"] = "ks", ["z"] = "ts", ["g"] = "ɡ", -- map to IPA ɡ ["a"] = "ɑ", ["œ"] = "ø", }}, } local fricative_to_voiced = { ["f"] = "v", ["s"] = "z", ["θ"] = "ð", } local fricative_to_unvoiced = { ["v"] = "f", ["z"] = "s", ["ð"] = "θ", } -- These rules operate in order, on the output of phonemic_rules. -- The output of this is used to generate the displayed phonemic -- pronunciation by removing ⁀ symbols. local phonetic_rules = { -- Fricative voicing between voiced sounds. Note, the following operates -- across a ⁀ boundary for a fricative before the boundary but not after. {"([" .. voiced_sound .. "][ː.ˈˌ]*)([fsθ])([ː.ˈˌ⁀]*[" .. voiced_sound .. "])", function(s1, c, s2) return s1 .. fricative_to_voiced[c] .. s2 end }, -- Fricative between unstressed vowels should be devoiced. -- Note that unstressed syllables are preceded by . while stressed -- syllables are preceded by a stress mark. {"(%.[^.⁀][" .. vowel .. com.DOUBLE_BREVE_BELOW .. "ː]*%.)([vzð])", function(s1, c) return s1 .. fricative_to_unvoiced[c] end }, -- Final -sian, -siend, -sienne, -siende (and variants such as -siġan, -- -siġend, etc.) in verb or verbal is rendered with [s]; clǣnsian will -- have to be special-cased with ''[z]'' {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?ɑn⁀)", "%1s%2", {"verb"}}, {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?end⁀)", "%1s%2", {"verb", "verbal"}}, {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?en%.[nd]e⁀)", "%1s%2", {"verb", "verbal"}}, -- Final unstressed -þu/-þo after a consonant should be devoiced. {"(" .. cons_c .. "ː?" .. "%.)ð([uo]⁀)", function(s1, s2) return s1 .. "θ" .. s2 end }, {"x[wnlr]", { ["xw"] = "ʍ", ["xl"] = "l̥", ["xn"] = "n̥", ["xr"] = "r̥", }}, -- Note, the following will not operate across a ⁀ boundary. {"n([.ˈˌ]?[ɡk])", "ŋ%1"}, -- WARNING, IPA ɡ used here {"n([.ˈˌ]?)j", "n%1d͡ʒ"}, {"j([.ˈˌ]?)j", "d%1d͡ʒ"}, {"([^x][⁀.ˈˌ])x", "%1h"}, -- [h] occurs as a syllable-initial allophone {"(" .. front_vowel_c .. ")x", "%1ç"}, -- [ç] occurs after front vowels -- An IPA ɡ after a word/prefix boundary, after another ɡ or after n -- (previously converted to ŋ in this circumstance) should remain as ɡ, -- while all other ɡ's should be converted to ɣ except that word-final ɡ -- becomes x. We do this by converting the ɡ's that should remain to regular -- g (which should never occur otherwise), convert the remaining IPA ɡ's to ɣ -- or x, and then convert the regular g's back to IPA ɡ. {"ɡ([.ˈˌ]?)ɡ", "g%1g"}, -- WARNING, IPA ɡ on the left, regular g on the right {"([ŋ⁀])([.ˈˌ]?)ɡ", "%1%2g"}, -- WARNING, IPA ɡ on the left, regular g on the right {"ɡ", "ɣ"}, {"g", "ɡ"}, -- WARNING, regular g on the left, IPA ɡ on the right {"l([.ˈˌ]?)l", "ɫ%1ɫ"}, {"r([.ˈˌ]?)r", "rˠ%1rˠ"}, {"l([.ˈˌ]?" .. cons_c .. ")", "ɫ%1"}, {"r([.ˈˌ]?" .. cons_c .. ")", "rˠ%1"}, -- Geminate consonants within a single syllable are pronounced singly. -- Does not apply e.g. to ''ǣttren'', which will be divided as ''ǣt.tren''. {"(" .. cons_c .. ")%1", "%1"}, {"rˠrˠ", "rˠ"}, -- [In the sequence vowel + obstruent + resonant in a single syllable, -- the resonant should become syllabic, e.g. ādl [ˈɑːdl̩], blōstm [bloːstm̩], -- fæþm [fæðm̩], bēacn [ˈbæːɑ̯kn̩]. We allow anything but a syllable or word -- boundary betweent the vowel and the obstruent.] [BASED ON INPUT FROM -- [[User:Urszag]], I'VE DECIDE AGAINST THIS] -- {"(" .. vowel_c .. "[^.ˈˌ⁀]*[" .. obstruent .. "]ː?[" .. resonant .. "])", "%1" .. com.SYLLABIC}, -- also -mn e.g stemn /ˈstemn̩/; same for m + other resonants except m -- {"(" .. vowel_c .. "[^.ˈˌ⁀]*mː?[lnŋrɫ])", "%1" .. com.SYLLABIC}, {".", explicit_char_to_phonetic}, } local function apply_rules(word, rules, pos) for _, rule in ipairs(rules) do local allowed_pos = rule[3] if not allowed_pos or m_table.contains(allowed_pos, pos) then word = rsub(word, rule[1], rule[2]) end end return word end local function lookup_stress_spec(stress_spec, pos) return stress_spec[pos] or (pos == "verbal" and stress_spec["verb"]) or nil end local function split_on_word_boundaries(word, pos) local retparts = {} local parts = strutils.split(word, "([<>%-])") local i = 1 local saw_primary_stress = false while i <= #parts do local split_part = false local insert_position = #retparts + 1 if parts[i + 1] ~= "<" and parts[i - 1] ~= ">" then -- Split off any prefixes. while true do local broke_prefix = false for _, prefixspec in ipairs(com.prefixes) do local prefix_pattern = prefixspec[1] local stress_spec = prefixspec[2] local pos_stress = lookup_stress_spec(stress_spec, pos) local prefix, rest = rmatch(parts[i], "^(" .. prefix_pattern .. ")(.*)$") if prefix then if not pos_stress then -- prefix not recognized for this POS, don't split here elseif stress_spec.restriction and not rfind(rest, stress_spec.restriction) then -- restriction not met, don't split here elseif rfind(rest, "^%+") then -- explicit non-boundary here, so don't split here elseif not rfind(rest, vowel_c) then -- no vowels, don't split here elseif rfind(rest, "^..?$") then -- only two letters, unlikely to be a word, probably an ending, so don't split -- here else local initial_cluster, after_cluster = rmatch(rest, "^(" .. non_vowel_c .. "*)(.-)$") if rfind(initial_cluster, "..") and ( not (com.onsets_2[initial_cluster] or com.secondary_onsets_2[initial_cluster] or com.onsets_3[initial_cluster])) then -- initial cluster isn't a possible onset, don't split here elseif rfind(initial_cluster, "^x") then -- initial cluster isn't a possible onset, don't split here elseif rfind(after_cluster, "^" .. vowel_c .. "$") then -- remainder is a cluster + short vowel, -- unlikely to be a word so don't split here else -- break the word in two; next iteration we process -- the rest, which may need breaking again parts[i] = rest if pos_stress == "unstressed" then -- don't do anything elseif pos_stress == "secstressed" or (saw_primary_stress and pos_stress == "stressed") then prefix = rsub(prefix, "(" .. vowel_c .. ")", "%1" .. AUTOGRAVE, 1) elseif pos_stress == "stressed" then prefix = rsub(prefix, "(" .. vowel_c .. ")", "%1" .. AUTOACUTE, 1) saw_primary_stress = true else error("Unrecognized stress spec for pos=" .. pos .. ", prefix=" .. prefix .. ": " .. pos_stress) end table.insert(retparts, insert_position, prefix) insert_position = insert_position + 1 broke_prefix = true break end end end end if not broke_prefix then break end end -- Now do the same for suffixes. while true do local broke_suffix = false for _, suffixspec in ipairs(com.suffixes) do local suffix_pattern = suffixspec[1] local stress_spec = suffixspec[2] local pos_stress = lookup_stress_spec(stress_spec, pos) local rest, suffix = rmatch(parts[i], "^(.-)(" .. suffix_pattern .. ")$") if suffix then if not pos_stress then -- suffix not recognized for this POS, don't split here elseif stress_spec.restriction and not rfind(rest, stress_spec.restriction) then -- restriction not met, don't split here elseif rfind(rest, "%+$") then -- explicit non-boundary here, so don't split here elseif not rfind(rest, vowel_c) then -- no vowels, don't split here else local before_cluster, final_cluster = rmatch(rest, "^(.-)(" .. non_vowel_c .. "*)$") if rfind(final_cluster, "%..") then -- syllable division within or before final -- cluster, don't split here else -- break the word in two; next iteration we process -- the rest, which may need breaking again parts[i] = rest if pos_stress == "unstressed" then -- don't do anything elseif pos_stress == "secstressed" then suffix = rsub(suffix, "(" .. vowel_c .. ")", "%1" .. AUTOGRAVE, 1) elseif pos_stress == "stressed" then error("Primary stress not allowed for suffixes (suffix=" .. suffix .. ")") else error("Unrecognized stress spec for pos=" .. pos .. ", suffix=" .. suffix .. ": " .. pos_stress) end table.insert(retparts, insert_position, suffix) broke_suffix = true break end end end end if not broke_suffix then break end end end local acc = rfind(parts[i], "(" .. stress_accent_c .. ")") if acc == com.CFLEX then -- remove circumflex but don't accent parts[i] = gsub(parts[i], com.CFLEX, "") elseif acc == com.ACUTE or acc == AUTOACUTE then saw_primary_stress = true elseif not acc and parts[i + 1] ~= "<" and parts[i - 1] ~= ">" then -- Add primary or secondary stress on the part; primary stress if no primary -- stress yet, otherwise secondary stress. acc = saw_primary_stress and AUTOGRAVE or AUTOACUTE saw_primary_stress = true parts[i] = rsub(parts[i], "(" .. vowel_c .. ")", "%1" .. acc, 1) end table.insert(retparts, insert_position, parts[i]) i = i + 2 end -- remove any +, which has served its purpose for i, part in ipairs(retparts) do retparts[i] = gsub(part, "%+", "") end return retparts end local function break_vowels(vowelseq) local function check_empty(char) if char ~= "" then error("Something wrong, non-vowel '" .. char .. "' seen in vowel sequence '" .. vowelseq .. "'") end end local vowels = {} local chars = strutils.split(vowelseq, "(" .. vowel_c .. accent_c .. "*)") local i = 1 while i <= #chars do if i % 2 == 1 then check_empty(chars[i]) i = i + 1 else if i < #chars - 1 and com.diphthongs[ rsub(chars[i], stress_accent_c, "") .. rsub(chars[i + 2], stress_accent_c, "") ] then check_empty(chars[i + 1]) table.insert(vowels, chars[i] .. chars[i + 2]) i = i + 3 else table.insert(vowels, chars[i]) i = i + 1 end end end return vowels end -- Break a word into alternating C and V components where a C component is a run -- of zero or more consonants and a V component in a single vowel or dipthong. -- There will always be an odd number of components, where all odd-numbered -- components (starting from 1) are C components and all even-numbered components -- are V components. local function break_into_c_and_v_components(word) local cons_vowel = strutils.split(word, "(" .. vowel_or_accent_c .. "+)") local components = {} for i = 1, #cons_vowel do if i % 2 == 1 then table.insert(components, cons_vowel[i]) else local vowels = break_vowels(cons_vowel[i]) for j = 1, #vowels do if j == 1 then table.insert(components, vowels[j]) else table.insert(components, "") table.insert(components, vowels[j]) end end end end return components end local function split_into_syllables(word) local cons_vowel = break_into_c_and_v_components(word) if #cons_vowel == 1 then return cons_vowel end for i = 1, #cons_vowel do if i % 2 == 1 then -- consonant local cluster = cons_vowel[i] local len = ulen(cluster) if i == 1 then cons_vowel[i + 1] = cluster .. cons_vowel[i + 1] elseif i == #cons_vowel then cons_vowel[i - 1] = cons_vowel[i - 1] .. cluster elseif rfind(cluster, "%.") then local before_break, after_break = rmatch(cluster, "^(.-)%.(.*)$") cons_vowel[i - 1] = cons_vowel[i - 1] .. before_break cons_vowel[i + 1] = after_break .. cons_vowel[i + 1] elseif len == 0 then -- do nothing elseif len == 1 then cons_vowel[i + 1] = cluster .. cons_vowel[i + 1] elseif len == 2 then local c1, c2 = rmatch(cluster, "^(.)(.)$") if c1 == "s" and c2 == "ċ" then cons_vowel[i + 1] = "sċ" .. cons_vowel[i + 1] else cons_vowel[i - 1] = cons_vowel[i - 1] .. c1 cons_vowel[i + 1] = c2 .. cons_vowel[i + 1] end else -- check for onset_3 preceded by consonant(s). local first, last3 = rmatch(cluster, "^(.-)(...)$") if #first > 0 and com.onsets_3[last3] then cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last3 .. cons_vowel[i + 1] else local first, last2 = rmatch(cluster, "^(.-)(..)$") if com.onsets_2[last2] or (com.secondary_onsets_2[last2] and not first:find("[lr]$")) then cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last2 .. cons_vowel[i + 1] else local first, last = rmatch(cluster, "^(.-)(.)$") cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last .. cons_vowel[i + 1] end end end end end local retval = {} for i = 1, #cons_vowel do if i % 2 == 0 then -- remove any stray periods. table.insert(retval, rsub(cons_vowel[i], "%.", "")) end end return retval end -- Combine syllables into a word, moving stress markers (acute/grave) to the -- beginning of the syllable. local function combine_syllables_moving_stress(syllables, no_auto_stress) local modified_syls = {} for i, syl in ipairs(syllables) do if syl:find(com.ACUTE) or syl:find(AUTOACUTE) and not no_auto_stress then syl = "ˈ" .. syl elseif syl:find(com.GRAVE) or syl:find(AUTOGRAVE) and not no_auto_stress then syl = "ˌ" .. syl elseif i > 1 then syl = "." .. syl end syl = rsub(syl, stress_accent_c, "") table.insert(modified_syls, syl) end return table.concat(modified_syls) end -- Combine word parts (split-off prefixes, suffixes or parts of a compound word) -- into a single word. Separate parts with ⁀ and the put ⁀⁀ at word boundaries. local function combine_parts(parts) local text = {} for i, part in ipairs(parts) do if i > 1 and not rfind(part, "^[ˈˌ]") then -- Need a syllable boundary if there isn't a stress marker. table.insert(text, "." .. part) else table.insert(text, part) end end return "⁀⁀" .. table.concat(text, "⁀") .. "⁀⁀" end local function transform_word(word, pos, no_auto_stress) word = com.decompose(word) local parts = split_on_word_boundaries(word, pos) for i, part in ipairs(parts) do local syllables = split_into_syllables(part) parts[i] = combine_syllables_moving_stress(syllables, no_auto_stress or (#parts == 1 and #syllables == 1)) end return combine_parts(parts) end local function default_pos(word, pos) if not pos then -- verbs in -an/-ōn/-ēon, inflected infinitives in -enne if rfind(word, "[aāō]n$") or rfind(word, "ēon$") or rfind(word, "enne$") then pos = "verb" else -- adjectives in -līċ, adverbs in -līċe and nouns in -nes can follow -- nouns or participles (which are "verbal"); truncate the ending -- and check what precedes word = rsub(word, "^(.*" .. vowel_c .. ".*)l[iī][cċ]e?$", "%1") word = rsub(word, "^(.*" .. vowel_c .. ".*)n[eiy]ss?$", "%1") -- participles in -end(e)/-en/-ed/-od, verbal nouns in -ing/-ung if rfind(word, "ende?$") or rfind(word, "[eo]d$") or rfind(word, "en$") or rfind(word, "[iu]ng$") then pos = "verbal" else pos = "noun" end end elseif pos == "adj" or pos == "adjective" then pos = "noun" elseif pos ~= "noun" and pos ~= "verb" and pos ~= "verbal" then error("Unrecognized part of speech: " .. pos) end return pos end local function generate_phonemic_word(word, pos) word = gsub(word, "[.!?]$", "") word = rsub(word, "%[(.)%]", char_to_explicit_char) pos = default_pos(word, pos) local is_prefix_suffix if word:find("^%-") or word:find("%-$") then is_prefix_suffix = true word = gsub(word, "^%-?(.-)%-?$", "%1") end word = transform_word(word, pos, is_prefix_suffix) word = apply_rules(word, phonemic_rules, pos) return word, pos end function export.phonemic(text, pos) if type(text) == "table" then pos = text.args["pos"] text = text[1] end local result = {} text = ulower(text) for word in rgsplit(text, " ") do local phonemic, respos = generate_phonemic_word(word, pos) table.insert(result, phonemic) end result = table.concat(result, " ") result = rsub(result, ".", explicit_char_to_phonemic) return gsub(result, "⁀", "") end function export.phonetic(text, pos) if type(text) == "table" then pos = text.args["pos"] text = text[1] end local result = {} text = ulower(text) for word in rgsplit(text, " ") do local phonemic, respos = generate_phonemic_word(word, pos) word = apply_rules(phonemic, phonetic_rules, respos) table.insert(result, word) end return gsub(table.concat(result, " "), "⁀", "") end function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = { required = true, default = "hlǣf-dīġe", list = true }, ["pos"] = {}, ["ann"] = {}, } local args = require("Module:parameters").process(parent_args, params) local IPA_args = {} for _, arg in ipairs(args[1]) do local phonemic = export.phonemic(arg, args.pos) local phonetic = export.phonetic(arg, args.pos) table.insert(IPA_args, {pron = '/' .. phonemic .. '/'}) if phonemic ~= phonetic then table.insert(IPA_args, {pron = '[' .. phonetic .. ']'}) end end local anntext if args.ann == "1" then anntext = {} for _, arg in ipairs(args[1]) do -- remove all spelling markup except ġ/ċ and macrons arg = rsub(com.decompose(arg), "[%-+._<>" .. com.ACUTE .. com.GRAVE .. com.CFLEX .. "]", "") arg = rsub(arg, "%[(.)%]", char_to_spelling) m_table.insertIfNot(anntext, "'''" .. arg .. "'''") end anntext = table.concat(anntext, ", ") .. ":&#32;" elseif args.ann then anntext = "'''" .. args.ann .. "''':&#32;" else anntext = "" end return anntext .. m_IPA.format_IPA_full { lang = lang, items = IPA_args } end return export 7xwigi7qyvreir6ly33p8y0byzjjvk0 Module:ang-common 828 38436 177360 2026-08-25T03:13:51Z Hiyuune 5522 Nilikha ang pahina na may '--[=[ Common utilities and definitions used by various Old English modules. Author: Benwing ]=] local m_table = require("Module:table") local u = require("Module:string/char") local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar, n) local retval = rsubn(term, foo, bar, n) return retval end local export = {} export.ACUTE = u(0x0301) export.GRAVE = u(0x0300) export.CFLEX = u(0x0...' 177360 Scribunto text/plain --[=[ Common utilities and definitions used by various Old English modules. Author: Benwing ]=] local m_table = require("Module:table") local u = require("Module:string/char") local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar, n) local retval = rsubn(term, foo, bar, n) return retval end local export = {} export.ACUTE = u(0x0301) export.GRAVE = u(0x0300) export.CFLEX = u(0x0302) export.MACRON = u(0x0304) export.DOTABOVE = u(0x0307) export.SYLLABIC = u(0x0329) export.CEDILLA = u(0x0327) export.DOUBLE_BREVE_BELOW = u(0x035C) local accent = export.MACRON .. export.ACUTE .. export.GRAVE .. export.CFLEX local recomposer = { ["g" .. export.DOTABOVE] = "ġ", ["G" .. export.DOTABOVE] = "Ġ", ["c" .. export.DOTABOVE] = "ċ", ["C" .. export.DOTABOVE] = "Ċ", -- used in "explicit allophone" notation in [[Module:ang-pron]] ["c" .. export.CEDILLA] = "ç", ["C" .. export.CEDILLA] = "Ç", } -- Decompose macron, acute, grave, circumflex, but leave alone ġ, ċ and uppercase equiv function export.decompose(text) text = mw.ustring.toNFD(text) text = rsub(text, ".[" .. export.DOTABOVE .. "]", recomposer) return text end -- We use the following syllable-splitting algorithm. -- (1) A single consonant goes with the following syllable. -- (2) Two consonants are split down the middle. -- (3) For three or more consonants, check for clusters ending in -- onsets_3 then onsets_2, with at least one preceding consonant. -- If so, split between the onset and the preceding consonant(s). -- (4) Check similarly for secondary_onsets_2. If seen, then check -- the preceding consonant; if it's not an l or r, split before -- the onset. -- (5) Otherwise, split before the last consonant (i.e. the last -- consonant goes with the following syllable, and all preceding -- consonants go with the preceding syllable). export.onsets_2 = m_table.listToSet({ "pr", "pl", "br", "bl", "tr", "tw", "dr", "dw", "cr", "cl", "cw", --skip "cn" "kr", "kl", "kw", --skip "kn" "gr", "gl", -- skip "gn" "sm", "sn", "sl", "sw", "sp", "st", "sc", "sk", "sċ", "fr", "fl", --skip "fn", "þr", "þw", "ðr", "ðw", "hr", "hl", "hw", -- skip "hn" "wr", "wl", }) export.secondary_onsets_2 = m_table.listToSet({ "cn", "kn", "gn", "fn", "hn", }) export.onsets_3 = m_table.listToSet({ "spr", "spl", "str", "scr", "skr", "sċr", }) export.diphthongs = m_table.listToSet({ "ea", export.decompose("ēa"), export.decompose("eā"), "eo", export.decompose("ēo"), export.decompose("eō"), "io", export.decompose("īo"), export.decompose("iō"), "ie", export.decompose("īe"), export.decompose("iē"), }) export.prefixes = { {export.decompose("ā"), {verb = "unstressed", noun = "stressed"}}, {"æt", {verb = "unstressed"}}, {"æfter", {verb = "secstressed", noun = "stressed"}}, -- not very common {"and", {verb = "unstressed", noun = "stressed"}}, {"an", {verb = "unstressed", noun = "stressed"}}, {"be", {verb = "unstressed", noun = "unstressed", restriction = "^[^" .. accent .. "ao]"}}, {export.decompose("bī"), {noun = "stressed"}}, {"ed", {verb = "unstressed", noun = "stressed"}}, -- not very common {"fore", {verb = "unstressed", noun = "stressed", restriction = "^[^" .. accent .. "ao]"}}, {"for[þð]", {verb = "unstressed", noun = "stressed"}}, {"for", {verb = "unstressed", noun = "unstressed"}}, {"fram", {verb = "unstressed", noun = "stressed"}}, -- not very common -- following is rare as a noun, mostly from verbal forms {"ġeond", {verb = "unstressed"}}, {"ġe", {verb = "unstressed", noun = "unstressed", restriction = "^[^" .. accent .. "ao]"}}, {"in", {verb = "unstressed", noun = "stressed"}}, -- not very common {"mis", {verb = "unstressed"}}, {"ofer", {verb = "secstressed", noun = "stressed"}}, {"of", {verb = "unstressed", noun = "stressed"}}, {"on", {verb = "unstressed", noun = "stressed"}}, {"or", {noun = "stressed"}}, {"o[þð]", {verb = "unstressed"}}, {export.decompose("stēop"), {noun = "stressed"}}, {export.decompose("tō"), {verb = "unstressed", noun = "stressed"}}, {"under", {verb = "secstressed", noun = "stressed"}}, {"un", {verb = "unstressed", noun = "stressed", verbal = "stressed"}}, -- uncommon as verb {"up", {verb = "unstressed", noun = "stressed"}}, {export.decompose("ūt"), {verb = "unstressed", noun = "stressed"}}, {export.decompose("ū[þð]"), {noun = "stressed"}}, {"[wƿ]i[þð]er", {verb = "secstressed", noun = "stressed"}}, {"[wƿ]i[þð]", {verb = "unstressed"}}, {"ymb", {verb = "unstressed", noun = "stressed"}}, {"[þð]urh", {verb = "unstressed", noun = "stressed"}}, } export.suffixes = { {export.decompose("bǣre"), {noun = "secstressed"}}, {"fæst", {noun = "secstressed"}}, {"feald", {noun = "secstressed"}}, {"full?", {noun = "unstressed"}}, {export.decompose("lēas"), {noun = "secstressed"}}, -- These can be "verbal" if following a verbal past participle or similar {export.decompose("līċe"), {noun = "secstressed", verb = "secstressed"}}, -- ī is decomposed into two chars so can't combine into [īi] {export.decompose("li[ċc]"), {noun = "unstressed", verb = "unstressed"}}, {export.decompose("lī[ċc]"), {noun = "unstressed", verb = "unstressed"}}, {"n[eiy]ss?", {noun = "unstressed", verb = "unstressed"}}, {"sum", {noun = "unstressed"}}, } return export fc79ypblk4nipwsalhix5guv4evn5wg lǎn-pha 0 38437 177363 2026-08-25T05:37:10Z Yivan000 4078 Nilikha ang pahina na may '=={{=zh=}}== ===Romanisasyon=== {{head|zh|romanization}} # {{lb|zh|[[:en:w:Tâi-lô|Tâi-lô]]}} {{romanization of|zh|𡳞脬}} {{gl|[[eskroto]]}}' 177363 wikitext text/x-wiki =={{=zh=}}== ===Romanisasyon=== {{head|zh|romanization}} # {{lb|zh|[[:en:w:Tâi-lô|Tâi-lô]]}} {{romanization of|zh|𡳞脬}} {{gl|[[eskroto]]}} 7tvygbi32hzwlty59kgjdofzkua2oax Kategorya:Tsino na romanisasyon 14 38438 177364 2026-08-25T05:37:21Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177364 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Tsino na anyong di-lema 14 38439 177365 2026-08-25T05:37:43Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177365 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Padron:=xug= 10 38440 177369 2026-08-25T06:29:02Z Yivan000 4078 Nilikha ang pahina na may '{{#invoke:languages/templates|getByCode|xug|getCanonicalName}}<noinclude>{{#invoke:documentation|show|hr=above|from=Template:=aa=/documentation|xug}}</noinclude>' 177369 wikitext text/x-wiki {{#invoke:languages/templates|getByCode|xug|getCanonicalName}}<noinclude>{{#invoke:documentation|show|hr=above|from=Template:=aa=/documentation|xug}}</noinclude> keqstmj2en6cxb29puzbtgyc43dq1u8 Padron:=mvi= 10 38441 177370 2026-08-25T06:29:29Z Yivan000 4078 Nilikha ang pahina na may '{{#invoke:languages/templates|getByCode|mvi|getCanonicalName}}<noinclude>{{#invoke:documentation|show|hr=above|from=Template:=aa=/documentation|mvi}}</noinclude>' 177370 wikitext text/x-wiki {{#invoke:languages/templates|getByCode|mvi|getCanonicalName}}<noinclude>{{#invoke:documentation|show|hr=above|from=Template:=aa=/documentation|mvi}}</noinclude> loltyi3ak9chsqu57060gxdibtj0baq Padron:=ryu= 10 38442 177371 2026-08-25T06:30:15Z Yivan000 4078 Nilikha ang pahina na may '{{#invoke:languages/templates|getByCode|ryu|getCanonicalName}}<noinclude>{{#invoke:documentation|show|hr=above|from=Template:=aa=/documentation|ryu}}</noinclude>' 177371 wikitext text/x-wiki {{#invoke:languages/templates|getByCode|ryu|getCanonicalName}}<noinclude>{{#invoke:documentation|show|hr=above|from=Template:=aa=/documentation|ryu}}</noinclude> 9trhxawxr8s40jnhiezga9pw6me99to Padron:hil-head 10 38443 177375 2026-08-25T07:08:56Z Yivan000 4078 Nilikha ang pahina na may '{{#invoke:phi-headword|show|lang=hil}}<!-- --><noinclude>{{documentation}}</noinclude>' 177375 wikitext text/x-wiki {{#invoke:phi-headword|show|lang=hil}}<!-- --><noinclude>{{documentation}}</noinclude> 5pet5ypgw1ruojwiipcbilglylukcti Kategorya:Salitang may salin sa Kapampangan 14 38444 177377 2026-08-25T07:12:53Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177377 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Kapampangan na entradang pinapanatili 14 38445 177378 2026-08-25T07:13:10Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177378 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Padron:list:Han character classification/ja 10 38446 177382 2026-08-25T07:27:51Z Yivan000 4078 Nilikha ang pahina na may '* {{ja-r|六書|りくしょ|the six types of [[Han characters]]}} ** {{ja-r|指%事|し%じ|[[ideogram]]}} ** {{ja-r|象%形|しょう%けい|[[pictogram]]}} ** {{ja-r|形%声|けい%せい|[[phono-semantic]] [[compound]]}} ** {{ja-r|会%意|かい%.い|[[compound]] [[ideograph]]}} ** {{ja-r|転%注|てん%ちゅう|[[derivative]] [[cognate]]}} ** {{ja-r|仮%借|か%しゃ|[[phonetic]] [[loan]]}}<noinclude>[[Category:Japanese list templates]]</noinclude><noinclu...' 177382 wikitext text/x-wiki * {{ja-r|六書|りくしょ|the six types of [[Han characters]]}} ** {{ja-r|指%事|し%じ|[[ideogram]]}} ** {{ja-r|象%形|しょう%けい|[[pictogram]]}} ** {{ja-r|形%声|けい%せい|[[phono-semantic]] [[compound]]}} ** {{ja-r|会%意|かい%.い|[[compound]] [[ideograph]]}} ** {{ja-r|転%注|てん%ちゅう|[[derivative]] [[cognate]]}} ** {{ja-r|仮%借|か%しゃ|[[phonetic]] [[loan]]}}<noinclude>[[Category:Japanese list templates]]</noinclude><noinclude>{{list doc}}</noinclude> iq0cs6kmaw2e6ijojszjv50kbctcax8 Kategorya:Sitsuwanes na pangngalan 14 38447 177390 2026-08-25T07:51:43Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177390 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Sitsuwanes na lema 14 38448 177391 2026-08-25T07:52:04Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177391 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Wikang Sitsuwanes 14 38449 177392 2026-08-25T07:52:34Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|Tsina}}' 177392 wikitext text/x-wiki {{auto cat|Tsina}} qvlkes3k6svsnk7aazi2soyfy0d05ly Padron:eo-noun 10 38450 177394 2026-08-25T07:59:53Z Yivan000 4078 Inilipat ni Yivan000 ang pahinang [[Padron:eo-noun]] sa [[Padron:eo-head]] 177394 wikitext text/x-wiki #REDIRECT [[Padron:eo-head]] pywrhiyaef56x1hvkessj9fd5ku5zmc Padron:R:eo:PIV 2020 10 38451 177396 2026-08-25T08:02:07Z Yivan000 4078 Nilikha ang pahina na may '{{#invoke:quote|call_template |template=cite-book |entry={{{head|{{{1|{{pagename}}}}}}}} |title={{w|Plena Ilustrita Vortaro de Esperanto}} |trans-title=Complete Illustrated Dictionary of Esperanto |entryurl=https://vortaro.net/#{{urlencode:{{{head|{{{1|{{pagename}}}}}}}}|PATH}} |isbn=9782952892230 |year=2020 |allowparams=head,1 }}<noinclude> {{documentation}}{{refcat|eo}} </noinclude>' 177396 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |entry={{{head|{{{1|{{pagename}}}}}}}} |title={{w|Plena Ilustrita Vortaro de Esperanto}} |trans-title=Complete Illustrated Dictionary of Esperanto |entryurl=https://vortaro.net/#{{urlencode:{{{head|{{{1|{{pagename}}}}}}}}|PATH}} |isbn=9782952892230 |year=2020 |allowparams=head,1 }}<noinclude> {{documentation}}{{refcat|eo}} </noinclude> eq5lw6e5y650cpoytklmklfm95cevxv Padron:R:eo:ReVo 10 38452 177397 2026-08-25T08:02:10Z Yivan000 4078 Nilikha ang pahina na may '{{#invoke:quote|call_template |template=cite-web |eo | entry = {{{head|{{{1|{{pagename}}}}}}}} | work = {{w|Reta Vortaro}} | trans-work = Online Dictionary | entryurl = https://reta-vortaro.de/revo/dlg/index-2o.html?q={{urlencode:{{{head|{{{1|{{pagename}}}}}}}}|PATH}} | year = 1997-{{CURRENTYEAR}} |allowparams = head,1 }}<noinclude> {{documentation}} {{refcat|eo}} </noinclude>' 177397 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-web |eo | entry = {{{head|{{{1|{{pagename}}}}}}}} | work = {{w|Reta Vortaro}} | trans-work = Online Dictionary | entryurl = https://reta-vortaro.de/revo/dlg/index-2o.html?q={{urlencode:{{{head|{{{1|{{pagename}}}}}}}}|PATH}} | year = 1997-{{CURRENTYEAR}} |allowparams = head,1 }}<noinclude> {{documentation}} {{refcat|eo}} </noinclude> 315b7346lbujmlomxcfmosv8ac2u6dl Kategorya:Esperanto na padrong pansangguni 14 38453 177399 2026-08-25T08:07:37Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177399 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx agrikulturon 0 38454 177400 2026-08-25T08:08:35Z Yivan000 4078 Nilikha ang pahina na may '=={{=eo=}}== ===Pangngalan=== {{eo-head}} # {{eo-form of|agrikultur|on}}' 177400 wikitext text/x-wiki =={{=eo=}}== ===Pangngalan=== {{eo-head}} # {{eo-form of|agrikultur|on}} q3g8ds0f5ozwzywfmwxflopza6okxiy Kategorya:Tsino na neolohismo 14 38455 177401 2026-08-25T08:42:23Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177401 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Tsino na salita ayon sa etimolohiya 14 38456 177402 2026-08-25T08:42:42Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177402 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Tsino na salitang balbal 14 38457 177403 2026-08-25T08:43:28Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177403 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Salitang balbal ayon sa wika 14 38458 177404 2026-08-25T08:44:10Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177404 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Tsino na apelyido 14 38459 177405 2026-08-25T08:45:01Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177405 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Tsino na pangalan 14 38460 177406 2026-08-25T08:45:20Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177406 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:Tsino na salita ayon sa tungkuling semantiko 14 38461 177407 2026-08-25T08:45:37Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177407 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Kategorya:tl:Mga lalawigan ng Pilipinas 14 38462 177408 2026-08-25T08:53:06Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat}}' 177408 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 177409 177408 2026-08-25T08:56:19Z Yivan000 4078 177409 wikitext text/x-wiki {{auto cat|english_name=tl:Provinces of the Philippines}} togs77bt4v0xxzt0pr6o8ov7d45gfw0 Kategorya:tl:Pilipinas 14 38463 177410 2026-08-25T08:58:37Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|english_name=tl:Philippines}}' 177410 wikitext text/x-wiki {{auto cat|english_name=tl:Philippines}} f72v7hznr2reviyp8smemay0qn7p2yx Kategorya:tl:Mga bansa sa Asya 14 38464 177411 2026-08-25T09:01:58Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|english_name=tl:Countries in Asia}}' 177411 wikitext text/x-wiki {{auto cat|english_name=tl:Countries in Asia}} 25ow4w4jy4lrgog9nmtqfv9gmwtjjkk Kategorya:tl:Asya 14 38465 177412 2026-08-25T09:02:31Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|tl:Asia}}' 177412 wikitext text/x-wiki {{auto cat|tl:Asia}} c20up1m0e6urv9wtqqhi1ukh4nq1k0k 177413 177412 2026-08-25T09:02:47Z Yivan000 4078 177413 wikitext text/x-wiki {{auto cat|english_name=tl:Asia}} c7cgqzdiii5a1tvum42wjrffj4y1rue Kategorya:tl:Eurasya 14 38466 177414 2026-08-25T09:07:32Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|english_name=tl:Eurasia}}' 177414 wikitext text/x-wiki {{auto cat|english_name=tl:Eurasia}} 3kt3twal0v2m9mqjo5vk47icfp0hnpe Kategorya:tl:Daigdig 14 38467 177415 2026-08-25T09:08:01Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|english_name=tl:Earth}}' 177415 wikitext text/x-wiki {{auto cat|english_name=tl:Earth}} 9x63ac33xs4tspaonsc9dt38ff01ef8 Kategorya:tl:Kalikasan 14 38468 177416 2026-08-25T09:08:22Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|english_name=tl:Nature}}' 177416 wikitext text/x-wiki {{auto cat|english_name=tl:Nature}} 9x1vjppo6v5xoklxkba8fyef9ph1htt Kategorya:tl:Mga lalawigan 14 38469 177417 2026-08-25T09:10:12Z Yivan000 4078 Nilikha ang pahina na may '{{auto cat|tl:Provinces}}' 177417 wikitext text/x-wiki {{auto cat|tl:Provinces}} 12zi5dksrs5e0g69859nq4aslmcxzf3 177418 177417 2026-08-25T09:10:25Z Yivan000 4078 177418 wikitext text/x-wiki {{auto cat|english_name=tl:Provinces}} 7blpnxcjpa9tzt1i2rfmmzkvjaee668 ꦥꦼꦂꦠꦤꦶꦲꦤ꧀ 0 38470 177420 2026-08-25T09:27:10Z Hiyuune 5522 /* */ 177420 wikitext text/x-wiki =={{=jv=}}== ===Pangngalan=== {{head|jv|noun|tr=pertanian}} # [[agrikultura]] {{C|jv|Agrikultura}} qmcbxbpo2lt7to983e7o237e7hxu0yl