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"> </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"> </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(": " .. 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(" " .. 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 .. "‌: \"" .. 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, ",‎ "))
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, ", ") .. ": "
elseif args.ann then
anntext = "'''" .. args.ann .. "''': "
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