ဝိၵ်ႇသျိၼ်ႇၼရီႇ
shnwiktionary
https://shn.wiktionary.org/wiki/%E1%80%9D%E1%80%AD%E1%81%B5%E1%80%BA%E1%82%87%E1%80%9E%E1%80%BB%E1%80%AD%E1%81%BC%E1%80%BA%E1%82%87%E1%81%BC%E1%80%9B%E1%80%AE%E1%82%87:%E1%81%BC%E1%82%83%E1%82%88%E1%82%81%E1%80%B0%E1%80%9D%E1%80%BA%E1%82%81%E1%82%85%E1%81%B5%E1%80%BA%E1%82%88
MediaWiki 1.47.0-wmf.2
case-sensitive
သိုဝ်ႇၶၢဝ်ႇ
ၶိုၵ်ႉတွၼ်း
ဢုပ်ႇၵုမ်
ၽူႈၸႂ်ႉတိုဝ်း
ဢုပ်ႇၵုမ် ၽူႈၸႂ်ႉတိုဝ်း
ဝိၵ်ႇသျိၼ်ႇၼရီႇ
လွင်ႈဢုပ်ႇဢူဝ်း ဝိၵ်ႇသျိၼ်ႇၼရီႇ
ၾၢႆႇ
ဢုပ်ႇၵုမ် ၾၢႆႇ
မီႇတီႇယႃႇဝီႇၶီႇ
ဢုပ်ႇၵုမ် မီႇတီႇယႃႇဝီႇၶီႇ
ထႅမ်းပလဵတ်ႉ
ဢုပ်ႇၵုမ် ထႅမ်းပလဵတ်ႉ
လွင်ႈၸွႆႈထႅမ်
ဢုပ်ႇၵုမ် လွင်ႈၸွႆႈထႅမ်
ပိူင်ထၢၼ်ႈ
ဢုပ်ႇၵုမ် ပိူင်ထၢၼ်ႈ
ၵိူၼ်ႇတူ
ဢုပ်ႇၵုမ် ၵိူၼ်ႇတူ
တွၼ်ႈၸပ်းႁၢင်
ဢုပ်ႇၵုမ် တွၼ်ႈၸပ်းႁၢင်
တူၼ်းၸၢပ်ႈလႅပ်ႈ
ဢုပ်ႇၵုမ် တူၼ်းၸၢပ်ႈလႅပ်ႈ
ၶိုၼ်းၵေႃႇသၢင်ႈ
ဢုပ်ႇၵုမ် ၶိုၼ်းၵေႃႇသၢင်ႈ
TimedText
TimedText talk
မေႃႇၵျူး
ဢုပ်ႇၵုမ် မေႃႇၵျူး
Event
Event talk
B
0
24677
260842
237840
2026-05-15T11:47:48Z
Saimawnkham
9
260842
wikitext
text/x-wiki
{{alphabet}}
{{character info}}
{{character info/var|B|𝕭}}
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{q|phoneme}} {{IPA|en|/b/}}
* {{q|letter name}} {{IPA|en|/biː/}}
* {{audio|en|en-uk-b.ogg|a=UK}}
* {{audio|en|en-au-B.ogg|a=AU}}
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-B.wav|a=US}}
* {{rhymes|en|iː|s=1}}
====တူဝ်လိၵ်ႈ====
{{letter|en}}
# တူဝ်လိၵ်ႈမႆၢသွင် ဢိင်းၵလဵတ်ႈ။
# ၼႂ်းမႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7။
# ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်။
# ၵူၼ်း၊ သေပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
1fybwiovp4kicopihvxswbxcvgev6ck
260843
260842
2026-05-15T11:48:00Z
Saimawnkham
9
260843
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{q|phoneme}} {{IPA|en|/b/}}
* {{q|letter name}} {{IPA|en|/biː/}}
* {{audio|en|en-uk-b.ogg|a=UK}}
* {{audio|en|en-au-B.ogg|a=AU}}
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-B.wav|a=US}}
* {{rhymes|en|iː|s=1}}
====တူဝ်လိၵ်ႈ====
{{letter|en}}
# တူဝ်လိၵ်ႈမႆၢသွင် ဢိင်းၵလဵတ်ႈ။
# ၼႂ်းမႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7။
# ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်။
# ၵူၼ်း၊ သေပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
7wmbltxusqt3m5kmij3gtklcrai0tpc
260846
260843
2026-05-15T11:49:45Z
Saimawnkham
9
/* သဵင်ဢွၵ်ႇ */
260846
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{q|တူဝ်မၢႆသဵင်}} {{IPA|en|/b/}}
* {{q|ၸိုဝ်ႈတူဝ်လိၵ်ႈ}} {{IPA|en|/biː/}}
* {{audio|en|en-uk-b.ogg|a=UK}}
* {{audio|en|en-au-B.ogg|a=AU}}
* {{audio|en|LL-Q1860 (eng)-Flame, not lame-B.wav|a=US}}
* {{rhymes|en|iː|s=1}}
====တူဝ်လိၵ်ႈ====
{{letter|en}}
# တူဝ်လိၵ်ႈမႆၢသွင် ဢိင်းၵလဵတ်ႈ။
# ၼႂ်းမႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7။
# ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်။
# ၵူၼ်း၊ သေပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
1ntiuz7lhmitlngx5xhx5ttwbt5tpka
b
0
24678
260827
260818
2026-05-15T11:29:18Z
Saimawnkham
9
[[Special:Contributions/Bruno45654564|Bruno45654564]] ([[User talk:Bruno45654564|ဢုပ်ႇဢူဝ်း]]) ၵေႃႉ ၶိုၼ်ၶိုၼ်း လွင်ႈၶူၼ်ႉၶႆႈ [[Special:Diff/260818|260818]]
260827
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{qualifier|phoneme}} {{IPA|en|/b/}}
* {{qualifier|letter name}} {{IPA|en|/biː/}}
* {{audio|en|en-uk-b.ogg|a=UK}}
* {{audio|en|en-us-b.ogg|a=US}}
* {{rhymes|en|q=letter name|iː|s=1}}
* {{qualifier|letter name}} {{homophones|en|be|bee|Bea}}
====တူဝ်မႄႈလိၵ်ႈ====
{{head|en|တူဝ်မႄႈလိၵ်ႈ|တူဝ်ယႂ်ႇ|B|တူဝ်လဵၵ်ႉ|b|sc=Latn|tr=ပီႇ}}
# တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။ တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
rdvt54i6xld09v1ckkstd0soriz6gxm
260833
260827
2026-05-15T11:37:51Z
Saimawnkham
9
/* တူဝ်မႄႈလိၵ်ႈ */
260833
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{qualifier|phoneme}} {{IPA|en|/b/}}
* {{qualifier|letter name}} {{IPA|en|/biː/}}
* {{audio|en|en-uk-b.ogg|a=UK}}
* {{audio|en|en-us-b.ogg|a=US}}
* {{rhymes|en|q=letter name|iː|s=1}}
* {{qualifier|letter name}} {{homophones|en|be|bee|Bea}}
====တူဝ်မႄႈလိၵ်ႈ====
{{letter|en}}
# တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။ တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
h8l7sd6em2g4staoz45o5bbxx9jmx50
260839
260833
2026-05-15T11:44:23Z
Saimawnkham
9
/* ဢိင်းၵလဵတ်ႈ */
260839
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{qualifier|တူဝ်မၢႆသဵင်}} {{IPA|en|/b/}}
* {{qualifier|ၸိုဝ်ႈတူဝ်လိၵ်ႈ}} {{IPA|en|/biː/}}
* {{audio|en|en-uk-b.ogg|a=UK}}
* {{audio|en|en-us-b.ogg|a=US}}
* {{rhymes|en|q=ၸိုဝ်ႈတူဝ်လိၵ်ႈ|iː|s=1}}
* {{qualifier|ၸိုဝ်ႈတူဝ်လိၵ်ႈ}} {{homophones|en|be|bee|Bea}}
====တူဝ်မႄႈလိၵ်ႈ====
{{letter|en}}
# တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။ တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
0dn9z0dzazea68f13zpczz90p8ieqm5
260847
260839
2026-05-15T11:51:16Z
Saimawnkham
9
/* တူဝ်မႄႈလိၵ်ႈ */
260847
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{qualifier|တူဝ်မၢႆသဵင်}} {{IPA|en|/b/}}
* {{qualifier|ၸိုဝ်ႈတူဝ်လိၵ်ႈ}} {{IPA|en|/biː/}}
* {{audio|en|en-uk-b.ogg|a=UK}}
* {{audio|en|en-us-b.ogg|a=US}}
* {{rhymes|en|q=ၸိုဝ်ႈတူဝ်လိၵ်ႈ|iː|s=1}}
* {{qualifier|ၸိုဝ်ႈတူဝ်လိၵ်ႈ}} {{homophones|en|be|bee|Bea}}
====တူဝ်လိၵ်ႈ====
{{letter|en}}
# တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။ တူဝ်လိၵ်ႈမႆၢသွင် ဢင်းၵိတ်း၊ ၼႂ်း မႆၢသဵင်တိင်ႇၼၼ်ႉ သဵင်ထူၼ်ႈမႆ 7၊ ၼႂ်းမႆၢဢွင်ႇၼၼ်ႉ မႆၢသွင်၊ ၵူၼ်း၊ သေ ပိူင်ပိူင် ဢၼ်ႁၢင်ႈႁႅၼ်းဝႆႉ မႆၢသွင်။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
20vhdxz9iy1yckj3r71icqwecoc2png
မေႃႇၵျူး:pi-Latn-translit
828
41400
260825
107336
2026-05-14T16:09:01Z
咽頭べさ
202
260825
Scribunto
text/plain
-- For Lao script, see https://www.unicode.org/charts/PDF/U0E80.pdf (Unicode 12.0+)
local export = {}
local m_str_utils = require("Module:string utilities")
local gmatch = m_str_utils.gmatch
local gsub = m_str_utils.gsub
local lower = m_str_utils.lower
local match = m_str_utils.match
local sub = m_str_utils.sub
local u = m_str_utils.char
local c = {
["Deva"] = {
["k"] = "क", ["kh"] = "ख", ["g"] = "ग", ["gh"] = "घ", ["ṅ"] = "ङ",
["c"] = "च", ["ch"] = "छ", ["j"] = "ज", ["jh"] = "झ", ["ñ"] = "ञ",
["ṭ"] = "ट", ["ṭh"] = "ठ", ["ḍ"] = "ड", ["ḍh"] = "ढ", ["ṇ"] = "ण",
["t"] = "त", ["th"] = "थ", ["d"] = "द", ["dh"] = "ध", ["n"] = "न",
["p"] = "प", ["ph"] = "फ", ["b"] = "ब", ["bh"] = "भ", ["m"] = "म",
["y"] = "य", ["r"] = "र", ["l"] = "ल", ["v"] = "व", ["s"] = "स",
["h"] = "ह", ["ḷ"] = "ळ",
["a"] = "अ", ["ā"] = "आ",
["i"] = "इ", ["ī"] = "ई",
["u"] = "उ", ["ū"] = "ऊ",
["e"] = "ए",
["o"] = "ओ",
["ṃ"] = "ं",
[""] = "",
},
["Beng"] = {
["k"] = "ক", ["kh"] = "খ", ["g"] = "গ", ["gh"] = "ঘ", ["ṅ"] = "ঙ",
["c"] = "চ", ["ch"] = "ছ", ["j"] = "জ", ["jh"] = "ঝ", ["ñ"] = "ঞ",
["ṭ"] = "ট", ["ṭh"] = "ঠ", ["ḍ"] = "ড", ["ḍh"] = "ঢ", ["ṇ"] = "ণ",
["t"] = "ত", ["th"] = "থ", ["d"] = "দ", ["dh"] = "ধ", ["n"] = "ন",
["p"] = "প", ["ph"] = "ফ", ["b"] = "ব", ["bh"] = "ভ", ["m"] = "ম",
["y"] = "য", ["r"] = "র", ["l"] = "ল", ["v"] = "ৰ", ["s"] = "স",
["h"] = "হ", ["ḷ"] = "ল়",
["a"] = "অ", ["ā"] = "আ",
["i"] = "ই", ["ī"] = "ঈ",
["u"] = "উ", ["ū"] = "ঊ",
["e"] = "এ",
["o"] = "ও",
["ṃ"] = "ং",
[""] = "",
},
["Brah"] = {
["k"] = "𑀓", ["kh"] = "𑀔", ["g"] = "𑀕", ["gh"] = "𑀖", ["ṅ"] = "𑀗",
["c"] = "𑀘", ["ch"] = "𑀙", ["j"] = "𑀚", ["jh"] = "𑀛", ["ñ"] = "𑀜",
["ṭ"] = "𑀝", ["ṭh"] = "𑀞", ["ḍ"] = "𑀟", ["ḍh"] = "𑀠", ["ṇ"] = "𑀡",
["t"] = "𑀢", ["th"] = "𑀣", ["d"] = "𑀤", ["dh"] = "𑀥", ["n"] = "𑀦",
["p"] = "𑀧", ["ph"] = "𑀨", ["b"] = "𑀩", ["bh"] = "𑀪", ["m"] = "𑀫",
["y"] = "𑀬", ["r"] = "𑀭", ["l"] = "𑀮", ["v"] = "𑀯", ["s"] = "𑀲",
["h"] = "𑀳", ["ḷ"] = "𑀴",
["a"] = "𑀅", ["ā"] = "𑀆",
["i"] = "𑀇", ["ī"] = "𑀈",
["u"] = "𑀉", ["ū"] = "𑀊",
["e"] = "𑀏",
["o"] = "𑀑",
["ṃ"] = "𑀁",
[""] = "",
},
["Khmr"] = {
["k"] = "ក", ["kh"] = "ខ", ["g"] = "គ", ["gh"] = "ឃ", ["ṅ"] = "ង",
["c"] = "ច", ["ch"] = "ឆ", ["j"] = "ជ", ["jh"] = "ឈ", ["ñ"] = "ញ",
["ṭ"] = "ដ", ["ṭh"] = "ឋ", ["ḍ"] = "ឌ", ["ḍh"] = "ឍ", ["ṇ"] = "ណ",
["t"] = "ត", ["th"] = "ថ", ["d"] = "ទ", ["dh"] = "ធ", ["n"] = "ន",
["p"] = "ប", ["ph"] = "ផ", ["b"] = "ព", ["bh"] = "ភ", ["m"] = "ម",
["y"] = "យ", ["r"] = "រ", ["l"] = "ល", ["v"] = "វ", ["s"] = "ស",
["h"] = "ហ", ["ḷ"] = "ឡ",
["a"] = "អ", ["ā"] = "អា",
["i"] = "ឥ", ["ī"] = "ឦ",
["u"] = "ឧ", ["ū"] = "ឨ",
["e"] = "ឯ",
["o"] = "ឲ",
["ṃ"] = "ំ",
[""] = "",
},
["Mymr"] = {
["k"] = "က", ["kh"] = "ခ", ["g"] = "ဂ", ["gh"] = "ဃ", ["ṅ"] = "င",
["c"] = "စ", ["ch"] = "ဆ", ["j"] = "ဇ", ["jh"] = "ဈ", ["ñ"] = "ဉ",
["ṭ"] = "ဋ", ["ṭh"] = "ဌ", ["ḍ"] = "ဍ", ["ḍh"] = "ဎ", ["ṇ"] = "ဏ",
["t"] = "တ", ["th"] = "ထ", ["d"] = "ဒ", ["dh"] = "ဓ", ["n"] = "န",
["p"] = "ပ", ["ph"] = "ဖ", ["b"] = "ဗ", ["bh"] = "ဘ", ["m"] = "မ",
["y"] = "ယ", ["r"] = "ရ", ["l"] = "လ", ["v"] = "ဝ", ["s"] = "သ",
["h"] = "ဟ", ["ḷ"] = "ဠ",
["a"] = "အ", ["ā"] = "အာ",
["i"] = "ဣ", ["ī"] = "ဤ",
["u"] = "ဥ", ["ū"] = "ဦ",
["e"] = "ဧ",
["o"] = "ဩ",
["ṃ"] = "ံ",
[""] = "",
},
["Sinh"] = {
["k"] = "ක", ["kh"] = "ඛ", ["g"] = "ග", ["gh"] = "ඝ", ["ṅ"] = "ඞ",
["c"] = "ච", ["ch"] = "ඡ", ["j"] = "ජ", ["jh"] = "ඣ", ["ñ"] = "ඤ",
["ṭ"] = "ට", ["ṭh"] = "ඨ", ["ḍ"] = "ඩ", ["ḍh"] = "ඪ", ["ṇ"] = "ණ",
["t"] = "ත", ["th"] = "ථ", ["d"] = "ද", ["dh"] = "ධ", ["n"] = "න",
["p"] = "ප", ["ph"] = "ඵ", ["b"] = "බ", ["bh"] = "භ", ["m"] = "ම",
["y"] = "ය", ["r"] = "ර", ["l"] = "ල", ["v"] = "ව", ["s"] = "ස",
["h"] = "හ", ["ḷ"] = "ළ",
["a"] = "අ", ["ā"] = "ආ",
["i"] = "ඉ", ["ī"] = "ඊ",
["u"] = "උ", ["ū"] = "ඌ",
["e"] = "එ",
["o"] = "ඔ",
["ṃ"] = "ං",
[""] = "",
},
["Thai"] = {
["k"] = "ก", ["kh"] = "ข", ["g"] = "ค", ["gh"] = "ฆ", ["ṅ"] = "ง",
["c"] = "จ", ["ch"] = "ฉ", ["j"] = "ช", ["jh"] = "ฌ", ["ñ"] = "ญ",
["ṭ"] = "ฏ", ["ṭh"] = "ฐ", ["ḍ"] = "ฑ", ["ḍh"] = "ฒ", ["ṇ"] = "ณ",
["t"] = "ต", ["th"] = "ถ", ["d"] = "ท", ["dh"] = "ธ", ["n"] = "น",
["p"] = "ป", ["ph"] = "ผ", ["b"] = "พ", ["bh"] = "ภ", ["m"] = "ม",
["y"] = "ย", ["r"] = "ร", ["l"] = "ล", ["v"] = "ว", ["s"] = "ส",
["h"] = "ห", ["ḷ"] = "ฬ",
["a"] = "อ", ["ā"] = "อา",
["i"] = "อิ", ["ī"] = "อี",
["u"] = "อุ", ["ū"] = "อู",
["e"] = "อเ", --to be swapped later
["o"] = "อโ", --to be swapped later
["ṃ"] = "ํ",
[""] = "",
},
["Lana"] = {
["k"] = "ᨠ", ["kh"] = "ᨡ", ["g"] = "ᨣ", ["gh"] = "ᨥ", ["ṅ"] = "ᨦ",
["c"] = "ᨧ", ["ch"] = "ᨨ", ["j"] = "ᨩ", ["jh"] = "ᨫ", ["ñ"] = "ᨬ",
["ṭ"] = "ᨭ", ["ṭh"] = "ᨮ", ["ḍ"] = "ᨯ", ["ḍh"] = "ᨰ", ["ṇ"] = "ᨱ",
["t"] = "ᨲ", ["th"] = "ᨳ", ["d"] = "ᨴ", ["dh"] = "ᨵ", ["n"] = "ᨶ",
["p"] = "ᨷ", ["ph"] = "ᨹ", ["b"] = "ᨻ", ["bh"] = "ᨽ", ["m"] = "ᨾ",
["y"] = "ᨿ", ["r"] = "ᩁ", ["l"] = "ᩃ", ["v"] = "ᩅ", ["s"] = "ᩈ",
["h"] = "ᩉ", ["ḷ"] = "ᩊ",
["a"] = "ᩋ", ["ā"] = "ᩋᩣ",
["i"] = "ᩍ", ["ī"] = "ᩎ",
["u"] = "ᩏ", ["ū"] = "ᩐ",
["e"] = "ᩑ",
["o"] = "ᩋᩰ",
["ṃ"] = "ᩴ",
[""] = "",
},
["Laoo"] = {
["k"] = "ກ", ["kh"] = "ຂ", ["g"] = "ຄ", ["gh"] = "ຆ", ["ṅ"] = "ງ",
["c"] = "ຈ", ["ch"] = "ຉ", ["j"] = "ຊ", ["jh"] = "ຌ", ["ñ"] = "ຎ",
["ṭ"] = "ຏ", ["ṭh"] = "ຐ", ["ḍ"] = "ຑ", ["ḍh"] = "ຒ", ["ṇ"] = "ຓ",
["t"] = "ຕ", ["th"] = "ຖ", ["d"] = "ທ", ["dh"] = "ຘ", ["n"] = "ນ",
["p"] = "ປ", ["ph"] = "ຜ", ["b"] = "ພ", ["bh"] = "ຠ", ["m"] = "ມ",
["y"] = "ຍ", ["r"] = "ຣ", ["l"] = "ລ", ["v"] = "ວ", ["s"] = "ສ",
["h"] = "ຫ", ["ḷ"] = "ຬ",
["a"] = "ອ", ["ā"] = "ອາ",
["i"] = "ອິ", ["ī"] = "ອີ",
["u"] = "ອຸ", ["ū"] = "ອູ",
["e"] = "ອເ", --to be swapped later
["o"] = "ອໂ", --to be swapped later
["ṃ"] = "ໍ",
[""] = "",
},
["Cakm"] = {
["k"] = "𑄇", ["kh"] = "𑄈", ["g"] = "𑄉", ["gh"] = "𑄊", ["ṅ"] = "𑄋",
["c"] = "𑄌", ["ch"] = "𑄍", ["j"] = "𑄎", ["jh"] = "𑄏", ["ñ"] = "𑄐",
["ṭ"] = "𑄑", ["ṭh"] = "𑄒", ["ḍ"] = "𑄓", ["ḍh"] = "𑄔", ["ṇ"] = "𑄕",
["t"] = "𑄖", ["th"] = "𑄗", ["d"] = "𑄘", ["dh"] = "𑄙", ["n"] = "𑄚",
["p"] = "𑄛", ["ph"] = "𑄜", ["b"] = "𑄝", ["bh"] = "𑄞", ["m"] = "𑄟",
["y"] = "𑄠", ["r"] = "𑄢", ["l"] = "𑄣", ["v"] = "𑅇", ["s"] = "𑄥",
["h"] = "𑄦", ["ḷ"] = "𑅄",
["a"] = "𑄃", ["ā"] = "𑄃𑄂",
["i"] = "𑄃𑄨", ["ī"] = "𑄃𑄩",
["u"] = "𑄃𑄪", ["ū"] = "𑄃𑄫",
["e"] = "𑄃𑄬",
["o"] = "𑄃𑄮",
["ṃ"] = "𑄁",
[""] = "",
},
}
local v = {
["Deva"] = {
["a"] = "", ["ā"] = "ा",
["i"] = "ि", ["ī"] = "ी",
["u"] = "ु", ["ū"] = "ू",
["e"] = "े",
["o"] = "ो",
[""] = "",
},
["Beng"] = {
["a"] = "", ["ā"] = "া",
["i"] = "ি", ["ī"] = "ী",
["u"] = "ু", ["ū"] = "ূ",
["e"] = "ে",
["o"] = "ো",
[""] = "",
},
["Brah"] = {
["a"] = "", ["ā"] = "𑀸",
["i"] = "𑀺", ["ī"] = "𑀻",
["u"] = "𑀼", ["ū"] = "𑀽",
["e"] = "𑁂",
["o"] = "𑁄",
[""] = "",
},
["Khmr"] = {
["a"] = "", ["ā"] = "ា",
["i"] = "ិ", ["ī"] = "ី",
["u"] = "ុ", ["ū"] = "ូ",
["e"] = "េ",
["o"] = "ោ",
[""] = "",
},
["Mymr"] = {
["a"] = "", ["ā"] = "ာ",
["i"] = "ိ", ["ī"] = "ီ",
["u"] = "ု", ["ū"] = "ူ",
["e"] = "ေ",
["o"] = "ော",
[""] = "",
},
["Sinh"] = {
["a"] = "", ["ā"] = "ා",
["i"] = "ි", ["ī"] = "ී",
["u"] = "ු", ["ū"] = "ූ",
["e"] = "ෙ",
["o"] = "ො",
[""] = "",
},
["Thai"] = {
["a"] = "", ["ā"] = "า",
["i"] = "ิ", ["ī"] = "ี",
["u"] = "ุ", ["ū"] = "ู",
["e"] = "เ",
["o"] = "โ",
[""] = "",
},
["Lana"] = {
["a"] = "", ["ā"] = "ᩣ",
["i"] = "ᩥ", ["ī"] = "ᩦ",
["u"] = "ᩩ", ["ū"] = "ᩪ",
["e"] = "ᩮ",
["o"] = "ᩮᩣ",
[""] = "",
},
["Laoo"] = {
["a"] = "", ["ā"] = "າ",
["i"] = "ິ", ["ī"] = "ີ",
["u"] = "ຸ", ["ū"] = "ູ",
["e"] = "ເ",
["o"] = "ໂ",
[""] = "",
},
["Cakm"] = {
["a"] = "", ["ā"] = "𑄂",
["i"] = "𑄨", ["ī"] = "𑄩",
["u"] = "𑄪", ["ū"] = "𑄫",
["e"] = "𑄬",
["o"] = "𑄮",
[""] = "",
},
}
local s = {
["Deva"] = {
["0"] = "०", ["1"] = "१", ["2"] = "२", ["3"] = "३", ["4"] = "४",
["5"] = "५", ["6"] = "६", ["7"] = "७", ["8"] = "८", ["9"] = "९",
["."] = "॥", [","] = "।", ["-"] = "-",
},
["Beng"] = {
["0"] = "০", ["1"] = "১", ["2"] = "২", ["3"] = "৩", ["4"] = "৪",
["5"] = "৫", ["6"] = "৬", ["7"] = "৭", ["8"] = "৮", ["9"] = "৯",
["."] = ".", [","] = ",", ["-"] = "-",
},
["Brah"] = {
["0"] = "𑁦", ["1"] = "𑁧", ["2"] = "𑁨", ["3"] = "𑁩", ["4"] = "𑁪",
["5"] = "𑁫", ["6"] = "𑁬", ["7"] = "𑁭", ["8"] = "𑁮", ["9"] = "𑁯",
["."] = "𑁈", [","] = "𑁇", ["-"] = "-",
},
["Khmr"] = {
["0"] = "០", ["1"] = "១", ["2"] = "២", ["3"] = "៣", ["4"] = "៤",
["5"] = "៥", ["6"] = "៦", ["7"] = "៧", ["8"] = "៨", ["9"] = "៩",
["."] = "៕", [","] = "។", ["-"] = "-",
},
["Mymr"] = {
["0"] = "၀", ["1"] = "၁", ["2"] = "၂", ["3"] = "၃", ["4"] = "၄",
["5"] = "၅", ["6"] = "၆", ["7"] = "၇", ["8"] = "၈", ["9"] = "၉",
["."] = "။", [","] = "၊", ["-"] = "-",
},
["Sinh"] = {
["0"] = "0", ["1"] = "1", ["2"] = "2", ["3"] = "3", ["4"] = "4",
["5"] = "5", ["6"] = "6", ["7"] = "7", ["8"] = "8", ["9"] = "9",
["."] = ".", [","] = ",", ["-"] = "-",
},
["Thai"] = {
["0"] = "๐", ["1"] = "๑", ["2"] = "๒", ["3"] = "๓", ["4"] = "๔",
["5"] = "๕", ["6"] = "๖", ["7"] = "๗", ["8"] = "๘", ["9"] = "๙",
["."] = "๚", [","] = "ฯ", ["-"] = "-",
},
["Lana"] = {
["0"] = "᪐", ["1"] = "᪑", ["2"] = "᪒", ["3"] = "᪓", ["4"] = "᪔",
["5"] = "᪕", ["6"] = "᪖", ["7"] = "᪗", ["8"] = "᪘", ["9"] = "᪙",
["."] = "᪩", [","] = "᪨", ["-"] = "-",
},
["Laoo"] = {
["0"] = "໐", ["1"] = "໑", ["2"] = "໒", ["3"] = "໓", ["4"] = "໔",
["5"] = "໕", ["6"] = "໖", ["7"] = "໗", ["8"] = "໘", ["9"] = "໙",
["."] = "ຯຯ", [","] = "ຯ", ["-"] = "-",
},
["Cakm"] = {
["0"] = "𑄶", ["1"] = "𑄷", ["2"] = "𑄸", ["3"] = "𑄹", ["4"] = "𑄺",
["5"] = "𑄻", ["6"] = "𑄼", ["7"] = "𑄽", ["8"] = "𑄾", ["𑄿"] = "๙",
["."] = "𑅁", [","] = ",", ["-"] = "-",
},
}
local join = {
["Deva"] = "्",
["Beng"] = "্",
["Brah"] = "𑁆",
["Khmr"] = "្",
["Mymr"] = "္",
["Sinh"] = u(0x200d, 0x0dca),
["Thai"] = "ฺ",
["Lana"] = "᩠",
["Laoo"] = "຺",
["Cakm"] = "𑄴",
}
local kill = {
["Deva"] = "्",
["Beng"] = "্",
["Brah"] = "𑁆",
["Khmr"] = "៑",
["Mymr"] = "်",
["Sinh"] = "්",
["Thai"] = "ฺ",
["Lana"] = "᩺",
["Laoo"] = "຺",
["Cakm"] = "𑄴",
}
local sinh_cjct = {
["ක්ව"] = "ක්ව", ["ත්ථ"] = "ත්ථ", ["ත්ව"] = "ත්ව",
["න්ථ"] = "න්ථ", ["න්ද"] = "න්ද", ["න්ධ"] = "න්ධ", ["න්ව"] = "න්ව"
}
local nukta = u(0x09bc) -- Just list all those used here.
local variations = {
["Mon"] = {
["ဈ"] = "ၛ", ["ဤ"] = "ဣဳ", ["ဦ"] = "ဥု", ["ဧ"] = "ဨ", ["ီ"] = "ဳ", ["င"] = "ၚ", -- for IM fix below, if at all.
--Unicode doesn't have "great nya" so just leave ည္ည as is. (It looks like ည with one extra curve.)
},
["OldShan"] = {
["က"] = "ၵ", ["ခ"] = "ၶ", ["ဂ"] = "ၷ", ["ဃ"] = "ꧠ", ["စ"] = "ၸ",
["ဆ"] = "ꧡ", ["ဇ"] = "ၹ", ["ဈ"] = "ꧢ", ["ဉ"] = "ၺ", ["ည"] = "ၺ္ၺ", ["ဋ"] = "ꩦ",
["ဌ"] = "ꩧ", ["ဍ"] = "ꩨ", ["ဎ"] = "ꩩ", ["ဏ"] = "ꧣ", ["ဒ"] = "ၻ",
["ဓ"] = "ꩪ", ["န"] = "ၼ", ["ဖ"] = "ၽ", ["ဗ"] = "ၿ", ["ဘ"] = "ꧤ",
["ဟ"] = "ႁ", ["ဠ"] = "ꩮ", ["အ"] = "ဢ", ["ဣ"] = "ဢိ", ["ဤ"] = "ဢီ",
["ဥ"] = "ဢု", ["ဦ"] = "ဢူ", ["ဧ"] = "ဢေ", ["ဩ"] = "ဢေႃ", ["ါ"] = "ႃ", ["ာ"] = "ႃ",
--Unicode doesn't have "Shan great sa" so just leave ဿ as is.
},
["NewShan"] = {
--includes all Old Shan and the followings
["ဿ"] = "သ်သ", ["္"] = "်",
},
}
-- Unnatural sequences of combining marks are frequently unreadable. Therefore, they are displayed on
-- bearers so that the code can be understood and, if necessary, corrected.
local dc = function(text) return gsub(text, "[อອ]", "") end -- Discard bearer
local transform
function export.mono_form(text, script)
local result = text
if script == "Thai" then
result = gsub(result, "ํ", "งฺ")
result = gsub(result, "([ก-ฮ])ฺ", "ั%1ฺ")
result = gsub(result, "([ก-ฮ])([^ะัาิีฺุู])", "%1ะ%2")
result = gsub(result, "([ก-ฮ])([^ะัาิีฺุู])", "%1ะ%2") --twice
result = gsub(result, "([ก-ฮ])$", "%1ะ")
-- result = gsub(result, "([ก-ฮ])([าิีุู])ั", "%1%2")
result = gsub(result, dc("([ก-ฮ])([าอิอีอฺอุอู])อั"), "%1%2")
result = gsub(result, "([เโ])([ก-ฮ])([ะั])", "%1%2")
result = gsub(result, "^ั", "")
result = gsub(result, "([%s%p])ั", "%1")
result = gsub(result, "ฺ", "")
elseif script == "Laoo" then
-- Calculating transform in argument list of gsub() fails!
if not transform then
transform = {
{dc("ອໍ"), dc("ງອ຺")},
{dc("([ກ-ຮ])ອ຺"), dc("ອັ%1ອ຺")},
{dc("([ກ-ຮ])([^ະອັາອິອີອ຺ອຸອູ])"), "%1ະ%2"},
{dc("([ກ-ຮ])([^ະອັາອິອີອ຺ອຸອູ])"), "%1ະ%2"}, -- twice!
{"([ກ-ຮ])$", "%1ະ"},
{dc("([ກ-ຮ])([າອິອີອ຺ອຸອູ])ອັ"), "%1%2"},
{dc("([ເໂ])([ກ-ຮ])([ະອັ])"), "%1%2"},
{dc("^ອັ"), ""},
{dc("([%s%p])ອັ"), "%1"},
{dc("ອ຺"), ""}
}
end
for _, v in ipairs(transform) do
result = gsub(result, v[1], v[2])
end
end
return result
end
local function return_error(text)
return error(("Unrecognised part: \"%s\""):format(text))
end
function export.tr(text, script, options)
if type(text) == "table" then
options = {}
options.impl = text.args["impl"]
options.variation = text.args["variation"] --ID of variation: [Mymr: 1=Mon, 2=Old Shan, 3=New Shan]
text, script = text.args[1], text.args[2]
end
if script == "Latn" then
return text
end
if not s[script] then
return nil
end
local easy_syllable_pattern =
"^([khgṅcjñṭḍṇtdnpbmyrlḷvs]*)([aāiīuūeo])(ṃ?)("..kill[script].."?)$"
text = lower(text)
text = gsub(text, "[0-9%.,%-]", s[script])
-- Compose patterns for processing onsets.
local letter = "[^"..join[script]..nukta.."]["..nukta.."]?"
local letter_pair = "("..letter..")("..letter..")"
for word in gmatch(text, "[aāiīuūeoṃkhgṅcjñṭḍṇtdnpbmyrlḷvs]+") do
local word_conv, orig_word = {}, word
word = gsub(word, "([aāiīuūeo]ṃ?)", "%1 ")
word = gsub(word, " $", "")
for syllable in mw.text.gsplit(word, " ") do
if not match(syllable, "[aāiīuūeoṃ]$") then
syllable = syllable .. "a" .. kill[script]
end
syllable = gsub(syllable, easy_syllable_pattern,
function(onset, vowel, coda, optJoin)
if onset == "" then
onset = vowel
vowel = ""
end
if not c[script][onset] then
onset = gsub(onset, ".h", c[script])
onset = gsub(onset, ".", c[script])
-- Join pairs of consonants
onset = gsub(onset, letter_pair, "%1"..join[script].."%2")
-- Join adjacent consonants that were in different pairs.
onset = gsub(onset, letter_pair, "%1"..join[script].."%2")
else
onset = c[script][onset]
end
return onset .. (v[script][vowel] or return_error(vowel)) .. c[script][coda] .. optJoin
end)
table.insert(word_conv, syllable)
end
word = table.concat(word_conv, "")
if script == "Thai" then
word = gsub(word, "(.)([เโ])", "%2%1")
elseif script == "Mymr" then
word = gsub(word, "င္", "င်္") -- Pali doesn't have -Vr mid-word like Sanskrit, so no need to include repha.
word = gsub(word, "(င်္)([ခဂငဒပဝ])(ေ?)ာ", "%1%2%3ါ")
word = gsub(word, "္[ယရ]", { ["္ယ"] = "ျ", ["္ရ"] = "ြ" }) --these not need tall aa
word = gsub(word, "^([ခဂငဒပဝ])(ေ?)ာ", "%1%2ါ")
word = gsub(word, "([^္])([ခဂငဒပဝ])(ေ?)ာ", "%1%2%3ါ")
word = gsub(word, "([ခဂငဒပဝ])(္[က-အဿ])(ေ?)ာ", "%1%2%3ါ")
word = gsub(word, "္[ဝဟ]", { ["္ဝ"] = "ွ", ["္ဟ"] = "ှ" })
word = gsub(word, "ဉ္ဉ", "ည")
word = gsub(word, "သ္သ", "ဿ")
if not (options and options.variation) then
-- Arg options should be optional, so nothing to do.
elseif options.variation == "1" then
word = gsub(word, ".", variations.Mon)
-- word = gsub(word, "ိံ", "ီ") --fix IM, if evidence meeting CFI is added.
elseif options.variation == "2" then
if match(word, "ဿ") then
-- Character is missing. Do nothing.
else
word = gsub(word, ".", variations.OldShan)
end
elseif options.variation == "3" then
word = gsub(word, ".", variations.OldShan)
word = gsub(word, ".", variations.NewShan)
word = gsub(word, "်".."်", "်") --fix nga
end
elseif script == "Lana" then
word = gsub(word, "ᨦ᩠", "ᩘ")
word = gsub(word, "^([ᨣᨴᨵᨷᩅ])(ᩮ?)ᩣ", "%1%2ᩤ")
word = gsub(word, "([^᩠])([ᨣᨴᨵᨷᩅ])(ᩮ?)ᩣ", "%1%2%3ᩤ")
word = gsub(word, "([ᨣᨴᨵᨷᩅ])(᩠[ᨠ-ᩌᩔ])(ᩮ?)ᩣ", "%1%2%3ᩤ")
word = gsub(word, "᩠[ᩁᩃ]", { ["᩠ᩁ"] = "ᩕ", ["᩠ᩃ"] = "ᩖ" })
word = gsub(word, "([ᨭ-ᨱ])᩠ᨮ", "%1ᩛ")
word = gsub(word, "([ᨷ-ᨾ])᩠ᨻ", "%1ᩛ")
word = gsub(word, "ᩈ᩠ᩈ", "ᩔ")
elseif script == "Beng" then
word = gsub(word, "ৰ্", "ৰ"..u(0x200d).."্") -- ৰ্(v-) needs ZWJ to display correctly
elseif script == "Sinh" then
local js = join["Sinh"]
word = gsub(word, "("..js..")([යර])", u(0xdca, 0x200d).."%2")
word = gsub(word,"[කතන]"..js.."[ථදධව]", sinh_cjct)
elseif script == "Laoo" then
word = gsub(word, "(.)([ເໂ])", "%2%1")
elseif script == "Cakm" then
word = gsub(word, "𑄴[𑄠𑄢𑄣𑅇]", -- 𑄠𑄣 are TBC: 𑄢𑅇 confirmed. 𑄚𑄴𑄚 seen.
{ ["𑄴𑄠"]="𑄳𑄠", ["𑄴𑄢"]="𑄳𑄢", ["𑄴𑄣"]="𑄳𑄣", ["𑄴𑅇"]="𑄳𑄤", })
end
text = gsub(text, orig_word, word, 1)
end
local impl = options and options.impl or 'yes'
if impl == 'no' then text = export.mono_form(text, script) end
return text
end
return export
eroawczec0zekvtbsz4fwbqiabr3sss
G
0
55039
260826
260819
2026-05-15T11:29:00Z
Saimawnkham
9
[[Special:Contributions/Bruno45654564|Bruno45654564]] ([[User talk:Bruno45654564|ဢုပ်ႇဢူဝ်း]]) ၵေႃႉ ၶိုၼ်ၶိုၼ်း လွင်ႈၶူၼ်ႉၶႆႈ [[Special:Diff/260819|260819]]
260826
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===သဵင်ဢွၵ်ႇ===
* {{sense|letter name}} {{IPA|en|/dʒiː/}}
* {{audio|en|en-uk-g.ogg|a=UK}}
* {{rhymes|en|iː|s=1}}
====တူဝ်မႄႈလိၵ်ႈ====
{{head|en|တူဝ်မႄႈလိၵ်ႈ|တူဝ်ယႂ်ႇ|G|တူဝ်လဵၵ်ႉ|g|tr=ၵျီႇ}}
# တူဝ်လိၵ်ႈဢင်းၵိတ်း ဢၼ် ထူၼ်ႈ 7။
===ၽိုၼ်ဢိင်===
# {{VPS Ref}}
kvrsagv9u1s8asoodqvsuz710lia66j
ထႅမ်းပလဵတ်ႉ:letter
10
55197
260828
2026-05-15T11:30:54Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "{{#invoke:letter headword|show}}<noinclude>{{documentation}}</noinclude>"
260828
wikitext
text/x-wiki
{{#invoke:letter headword|show}}<noinclude>{{documentation}}</noinclude>
h8o8stcifm08qgb8pk8txdm4efq7da8
မေႃႇၵျူး:letter headword
828
55198
260829
2026-05-15T11:31:46Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "local export = {} local force_cat = false local require_when_needed = require("Module:utilities/require when needed") local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local JSON_module = "Module:JSON" local languages_module = "Module:languages" local parameters_module = "Module:parameters" local scripts_module = "Module:scripts" local table_module = "Module:t..."
260829
Scribunto
text/plain
local export = {}
local force_cat = false
local require_when_needed = require("Module:utilities/require when needed")
local headword_module = "Module:headword"
local headword_utilities_module = "Module:headword utilities"
local JSON_module = "Module:JSON"
local languages_module = "Module:languages"
local parameters_module = "Module:parameters"
local scripts_module = "Module:scripts"
local table_module = "Module:table"
local m_string_utilities = require("Module:string utilities")
local glossary_link = require_when_needed(headword_utilities_module, "glossary_link")
local deep_equals = require_when_needed(table_module, "deepEquals")
local shallow_copy = require_when_needed(table_module, "shallowCopy")
local uupper = m_string_utilities.upper
local ucfirst = m_string_utilities.ucfirst
local ulower = m_string_utilities.lower
local ulen = m_string_utilities.len
local insert = table.insert
local per_language_defaults = {
de = {g = "n"},
en = {pl_ending = "s,'s"},
it = {g = "f,m", pl_ending = "_"},
pt = {g = "m"},
}
local function ine(val)
if not val then
return val
end
val = mw.text.trim(val)
if val == "" then return nil else return val end
end
local function add_initial_colon_to_term(term)
if term ~= "-" and term ~= "+" and not term:find("^:") then
-- Make sure we link to the specified term even if it has a diacritic that would normally be stripped off.
term = ":" .. term
end
return term
end
local function resolve_plus(termobjs, default, paramname)
local saw_plus = false
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
saw_plus = true
break
end
end
if not saw_plus then
return termobjs
end
if not default then
error(("Saw '+' for param '%s' but no default available"):format(paramname))
end
if type(default) == "string" then
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
termobj.term = default
end
end
return termobjs
end
if type(default) ~= "table" then
error("Internal error: `default` should be nil, string or list of strings")
end
local resolved_termobjs = {}
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
for _, defval in ipairs(default) do
defval = shallow_copy(defval)
require(headword_utilities_module).combine_termobj_qualifiers_labels(defval, termobj)
insert(resolved_termobjs, defval)
end
else
insert(resolved_termobjs, termobj)
end
end
return resolved_termobjs
end
local function parse_equivalent(value, default, paramname, no_prefix_colon)
if not value then
return nil
end
local termobjs
if value == "+" then
-- optimization to avoid loading [[Module:headword utilities]]
if not default then
error(("Saw '+' for param '%s' but no default available"):format(paramname))
end
if type(default) == "string" then
termobjs = {{term = default}}
else
if type(default) ~= "table" then
error("Internal error: `default` should be nil, string or list of term objects")
end
termobjs = default
end
elseif value:find("[,<]") then
termobjs = require(headword_utilities_module).parse_term_with_modifiers {
val = value,
paramname = paramname,
splitchar = ",",
include_mods = {"tr", "ts", "t", "sc"},
}
else
termobjs = {{ term = value }}
end
termobjs = resolve_plus(termobjs, default, paramname)
for _, termobj in ipairs(termobjs) do
if not no_prefix_colon then
termobj.term = add_initial_colon_to_term(termobj.term)
end
termobj.tr = "-"
end
return termobjs
end
--[==[
Implementation of the letter headword template for a given language (e.g. {{tl|en-letter}}, {{tl|it-letter}} or
{{tl|sh-letter}}). Supports the following invocation parameters:
; {{para|pos}}
: The plural part of speech to use; defaults to {{cd|letters}}. Other possibilities are e.g. {{cd|numeral symbols}} for
numeral symbols (letters used for list items).
; {{para|lang}}
: The language code of the language of the headword template. Omit for language-agnostic {{tl|letter}}.
; {{para|sc}}
: Specify the default script code. Rarely needs to be given.
; {{para|g}}
: Specify the default gender(s) of the letter. Multiple comma-separated values are allowed, along with qualifier, label
and reference inline modifiers. See [[Module:gender and number]] for more information, including the allowed values.
The default(s) can be overridden using the {{para|g}} template parameter.
; {{para|pl_ending}} ...
: Specify the default ending(s) of the plural form(s) of the letter. Multiple items should be comma-separated, and
qualifier, label, reference, transliteration and gloss inline modifiers are allowed. Use the value {{cd|_}} to
indicate a null ending. The default(s) can be overridden using the {{para|pl}} template parameter.
; {{para|allow_tr|1}}
: Specify that the template allows the {{para|tr}} parameter to be given for specifying transliteration.
]==]
function export.show(frame)
local list_param = {list = true, disallow_holes = true}
local boolean_param = {type = "boolean"}
local frame_args = frame.args
local parent_args = frame:getParent().args
-- Extract language and any per-language defaults. If they exist, clone the frame args and set the defaults into the
-- frame args before parsing. If there is no language specified at either the invocation or template level, we'll
-- get an error later.
local lang = ine(frame_args.lang) or ine(parent_args[1])
if lang and per_language_defaults[lang] then
local cloned_frame_args = {}
for k, v in pairs(frame_args) do
cloned_frame_args[k] = v
end
local defaults = per_language_defaults[lang]
for k, v in pairs(defaults) do
if cloned_frame_args[k] == nil then
cloned_frame_args[k] = v
end
end
frame_args = cloned_frame_args
end
local iargs = require(parameters_module).process(frame_args, {
pos = {default = "letters"},
lang = {type = "language", template_default = "und"},
sc = {type = "script"},
g = {type = "genders"},
pl_ending = true,
allow_tr = boolean_param,
})
local allowed_types = {"upper", "lower", "mixed", "allcaps", "nocase"}
local params = {
g = {type = "genders"},
sc = {type = "script"},
type = {set = allowed_types},
head = list_param,
upper = true,
lower = true,
mixed = true,
allcaps = true,
pl = true,
nopl = boolean_param,
id = true,
sort = true,
pagename = true,
modern = true,
}
local langparam, otherparam
if not iargs.lang then
langparam = 1
otherparam = 2
params[langparam] = {type = "language", required = true, template_default = "und"}
else
otherparam = 1
end
params[otherparam] = list_param
if iargs.g and iargs.g[1] then
params.nog = boolean_param
end
if iargs.allow_tr or not iargs.lang then
params.tr = list_param
end
if not iargs.lang then
params.ts = list_param
end
local args = require(parameters_module).process(parent_args, params)
local others = {}
for i, otherspec in ipairs(args[otherparam]) do
local lang_sc, rest = otherspec:match("^([a-zA-Z0-9-]+):([^ ].*)$")
if not lang_sc then
error(("Expected other-lang or other-script param %s=%s to begin with a language code or script code followed by a colon and no space"):format(i + otherparam - 1, otherspec))
end
local obj = require(scripts_module).getByCode(lang_sc)
local objtype
if obj then
objtype = "script"
else
obj = require(languages_module).getByCode(lang_sc, nil, "allow etym")
if obj then
objtype = "language"
else
error(("Unrecognized language or script '%s' in %s=%s"):format(lang_sc, i + otherparam - 1, otherspec))
end
end
insert(others, {
obj = obj,
objtype = objtype,
value = rest,
})
end
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
if args.type then
if args.type ~= "upper" and args.type ~= "lower" and args.type ~= "mixed" and args.type ~= "nocase" then
error(("Unrecognized value for type '%s'; should be one of 'upper', 'lower', 'mixed' or 'nocase'"):format(
args.type))
end
end
local lang = langparam and args[langparam] or iargs.lang
local sc = args.sc or iargs.sc or lang:findBestScript(pagename)
local data = {
lang = lang,
sc = sc,
pos_category = iargs.pos,
categories = {},
pagename = pagename,
inflections = {},
id = args.id,
sort_key = args.sort,
heads = args.head,
translits = args.tr,
transcriptions = args.ts,
force_cat_output = force_cat,
genders = not args.nog and (args.g and args.g[1] and args.g or iargs.g) or nil,
categories = {},
-- Disable "terms with redundant script codes" and "terms with non-redundant manual script codes"
-- categories. We always specify the script and the categories simply aren't useful in this case; having
-- them just clutters the categories with letter entries.
no_script_code_cat = true,
}
-- All letters can also be used as nouns ("There are two f's in that word").
insert(data.categories, lang:getFullName() .. " nouns")
if sc:getCode() ~= "None" then
insert(data.categories, sc:getCategoryName() .. " characters")
end
local uppage = uupper(pagename)
local lopage = ulower(pagename)
local ucfirstpage = ucfirst(lopage)
local function insert_inflection(termobjs, label)
if not termobjs or not termobjs[1] then
return
end
if termobjs[1].term == "-" then
require(headword_utilities_module).insert_inflection {
headdata = data,
terms = termobjs,
label = label,
}
else
termobjs.label = label
insert(data.inflections, termobjs)
end
end
local typ = args.type
if not typ then
if uppage == lopage then
typ = "nocase"
elseif data.pagename == ucfirstpage then
typ = "upper"
elseif data.pagename == uppage then
typ = "allcaps"
elseif data.pagename == lopage then
typ = "lower"
else
typ = "mixed"
end
end
if typ == "nocase" then
if args.upper or args.lower or args.mixed or args.allcaps then
error("Can't specify upper=, lower=, mixed= or allcaps= when letter has no case")
end
insert(data.inflections, {label = "no case"})
else
local upper = parse_equivalent(args.upper or "+", ucfirstpage, "upper")
local lower = parse_equivalent(args.lower or "+", lopage, "lower")
local allcaps = parse_equivalent(args.allcaps or ulen(pagename) == 1 and args.upper or "+", uppage, "allcaps")
local mixed = parse_equivalent(args.mixed, nil, "mixed")
local pagenameobj = {{term = ":" .. pagename, tr = "-"}}
if typ == "upper" then
if args.upper then
error("Already uppercase; can't specify upper=")
end
insert(data.inflections, {label = "[[Appendix:Capital letter|upper case]]"})
insert_inflection(lower, "lower case")
if not deep_equals(pagenameobj, allcaps) then
insert_inflection(allcaps, "[[Appendix:Capital letter|all caps]]")
end
insert_inflection(mixed, "mixed case")
elseif typ == "lower" then
if args.lower then
error("Already lowercase; can't specify lower=")
end
insert(data.inflections, {label = "lower case"})
if deep_equals(upper, allcaps) then
if ulen(pagename) == 1 then
insert_inflection(upper, "[[Appendix:Capital letter|upper case]]")
else
insert_inflection(upper, "[[Appendix:Capital letter|upper case]] and all caps")
end
else
insert_inflection(upper, "[[Appendix:Capital letter|upper case]]")
insert_inflection(allcaps, "[[Appendix:Capital letter|all caps]]")
end
insert_inflection(mixed, "mixed case")
elseif typ == "allcaps" then
if args.allcaps then
error("Already all-caps; can't specify allcaps=")
end
insert(data.inflections, {label = "[[Appendix:Capital letter|all caps]]"})
if not deep_equals(pagenameobj, upper) then
insert_inflection(upper, "[[Appendix:Capital letter|upper case]]")
end
insert_inflection(lower, "lower case")
insert_inflection(mixed, "mixed case")
else
if args.mixed then
error("Already mixed-case; can't specify mixed=")
end
insert(data.inflections, {label = "mixed case"})
insert_inflection(lower, "lower case")
if deep_equals(upper, allcaps) then
insert_inflection(upper, "[[Appendix:Capital letter|upper case]] and all caps")
else
insert_inflection(upper, "[[Appendix:Capital letter|upper case]]")
insert_inflection(allcaps, "[[Appendix:Capital letter|all caps]]")
end
end
end
if args.nopl then
insert(data.inflections, {label = "no plural"})
elseif args.pl or iargs.pl_ending then
local default_pls
if iargs.pl_ending then
default_pls = parse_equivalent(iargs.pl_ending, nil, "pl_ending", "no_prefix_colon")
for _, pl_ending in ipairs(default_pls) do
if pl_ending.term == "_" then
pl_ending.term = pagename
else
pl_ending.term = pagename .. pl_ending.term
end
end
end
local pls = parse_equivalent(args.pl or "+", default_pls, "pl")
if not pls[2] and pls[1].term == ":" .. pagename then
require(headword_utilities_module).insert_fixed_inflection {
headdata = data,
originating_term = pls[1],
label = glossary_link("invariable"),
}
else
insert_inflection(pls, "plural")
end
end
if args.modern then
local termobjs = parse_equivalent(args.modern, nil, "modern")
insert_inflection(termobjs, "modern equivalent")
end
if others[1] then
for _, other in ipairs(others) do
local termobjs = parse_equivalent(other.value, nil, other.obj:getCode())
for _, termobj in ipairs(termobjs) do
if other.objtype == "language" then
termobj.lang = other.obj
else
termobj.sc = other.obj
end
end
insert_inflection(termobjs, other.obj:getCanonicalName() .. " equivalent")
end
end
if args.json then
return require(JSON_module).toJSON(data)
end
return require(headword_module).full_headword(data)
end
return export
0jmnzw2yn96bjfsug8n8zmultjlryw3
260832
260829
2026-05-15T11:37:35Z
Saimawnkham
9
260832
Scribunto
text/plain
local export = {}
local force_cat = false
local require_when_needed = require("Module:utilities/require when needed")
local headword_module = "Module:headword"
local headword_utilities_module = "Module:headword utilities"
local JSON_module = "Module:JSON"
local languages_module = "Module:languages"
local parameters_module = "Module:parameters"
local scripts_module = "Module:scripts"
local table_module = "Module:table"
local m_string_utilities = require("Module:string utilities")
local glossary_link = require_when_needed(headword_utilities_module, "glossary_link")
local deep_equals = require_when_needed(table_module, "deepEquals")
local shallow_copy = require_when_needed(table_module, "shallowCopy")
local uupper = m_string_utilities.upper
local ucfirst = m_string_utilities.ucfirst
local ulower = m_string_utilities.lower
local ulen = m_string_utilities.len
local insert = table.insert
local per_language_defaults = {
de = {g = "n"},
en = {pl_ending = "s,'s"},
it = {g = "f,m", pl_ending = "_"},
pt = {g = "m"},
}
local function ine(val)
if not val then
return val
end
val = mw.text.trim(val)
if val == "" then return nil else return val end
end
local function add_initial_colon_to_term(term)
if term ~= "-" and term ~= "+" and not term:find("^:") then
-- Make sure we link to the specified term even if it has a diacritic that would normally be stripped off.
term = ":" .. term
end
return term
end
local function resolve_plus(termobjs, default, paramname)
local saw_plus = false
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
saw_plus = true
break
end
end
if not saw_plus then
return termobjs
end
if not default then
error(("Saw '+' for param '%s' but no default available"):format(paramname))
end
if type(default) == "string" then
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
termobj.term = default
end
end
return termobjs
end
if type(default) ~= "table" then
error("Internal error: `default` should be nil, string or list of strings")
end
local resolved_termobjs = {}
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
for _, defval in ipairs(default) do
defval = shallow_copy(defval)
require(headword_utilities_module).combine_termobj_qualifiers_labels(defval, termobj)
insert(resolved_termobjs, defval)
end
else
insert(resolved_termobjs, termobj)
end
end
return resolved_termobjs
end
local function parse_equivalent(value, default, paramname, no_prefix_colon)
if not value then
return nil
end
local termobjs
if value == "+" then
-- optimization to avoid loading [[Module:headword utilities]]
if not default then
error(("Saw '+' for param '%s' but no default available"):format(paramname))
end
if type(default) == "string" then
termobjs = {{term = default}}
else
if type(default) ~= "table" then
error("Internal error: `default` should be nil, string or list of term objects")
end
termobjs = default
end
elseif value:find("[,<]") then
termobjs = require(headword_utilities_module).parse_term_with_modifiers {
val = value,
paramname = paramname,
splitchar = ",",
include_mods = {"tr", "ts", "t", "sc"},
}
else
termobjs = {{ term = value }}
end
termobjs = resolve_plus(termobjs, default, paramname)
for _, termobj in ipairs(termobjs) do
if not no_prefix_colon then
termobj.term = add_initial_colon_to_term(termobj.term)
end
termobj.tr = "-"
end
return termobjs
end
--[==[
Implementation of the letter headword template for a given language (e.g. {{tl|en-letter}}, {{tl|it-letter}} or
{{tl|sh-letter}}). Supports the following invocation parameters:
; {{para|pos}}
: The plural part of speech to use; defaults to {{cd|letters}}. Other possibilities are e.g. {{cd|numeral symbols}} for
numeral symbols (letters used for list items).
; {{para|lang}}
: The language code of the language of the headword template. Omit for language-agnostic {{tl|letter}}.
; {{para|sc}}
: Specify the default script code. Rarely needs to be given.
; {{para|g}}
: Specify the default gender(s) of the letter. Multiple comma-separated values are allowed, along with qualifier, label
and reference inline modifiers. See [[Module:gender and number]] for more information, including the allowed values.
The default(s) can be overridden using the {{para|g}} template parameter.
; {{para|pl_ending}} ...
: Specify the default ending(s) of the plural form(s) of the letter. Multiple items should be comma-separated, and
qualifier, label, reference, transliteration and gloss inline modifiers are allowed. Use the value {{cd|_}} to
indicate a null ending. The default(s) can be overridden using the {{para|pl}} template parameter.
; {{para|allow_tr|1}}
: Specify that the template allows the {{para|tr}} parameter to be given for specifying transliteration.
]==]
function export.show(frame)
local list_param = {list = true, disallow_holes = true}
local boolean_param = {type = "boolean"}
local frame_args = frame.args
local parent_args = frame:getParent().args
-- Extract language and any per-language defaults. If they exist, clone the frame args and set the defaults into the
-- frame args before parsing. If there is no language specified at either the invocation or template level, we'll
-- get an error later.
local lang = ine(frame_args.lang) or ine(parent_args[1])
if lang and per_language_defaults[lang] then
local cloned_frame_args = {}
for k, v in pairs(frame_args) do
cloned_frame_args[k] = v
end
local defaults = per_language_defaults[lang]
for k, v in pairs(defaults) do
if cloned_frame_args[k] == nil then
cloned_frame_args[k] = v
end
end
frame_args = cloned_frame_args
end
local iargs = require(parameters_module).process(frame_args, {
pos = {default = "letters"},
lang = {type = "language", template_default = "und"},
sc = {type = "script"},
g = {type = "genders"},
pl_ending = true,
allow_tr = boolean_param,
})
local allowed_types = {"upper", "lower", "mixed", "allcaps", "nocase"}
local params = {
g = {type = "genders"},
sc = {type = "script"},
type = {set = allowed_types},
head = list_param,
upper = true,
lower = true,
mixed = true,
allcaps = true,
pl = true,
nopl = boolean_param,
id = true,
sort = true,
pagename = true,
modern = true,
}
local langparam, otherparam
if not iargs.lang then
langparam = 1
otherparam = 2
params[langparam] = {type = "language", required = true, template_default = "und"}
else
otherparam = 1
end
params[otherparam] = list_param
if iargs.g and iargs.g[1] then
params.nog = boolean_param
end
if iargs.allow_tr or not iargs.lang then
params.tr = list_param
end
if not iargs.lang then
params.ts = list_param
end
local args = require(parameters_module).process(parent_args, params)
local others = {}
for i, otherspec in ipairs(args[otherparam]) do
local lang_sc, rest = otherspec:match("^([a-zA-Z0-9-]+):([^ ].*)$")
if not lang_sc then
error(("Expected other-lang or other-script param %s=%s to begin with a language code or script code followed by a colon and no space"):format(i + otherparam - 1, otherspec))
end
local obj = require(scripts_module).getByCode(lang_sc)
local objtype
if obj then
objtype = "script"
else
obj = require(languages_module).getByCode(lang_sc, nil, "allow etym")
if obj then
objtype = "language"
else
error(("Unrecognized language or script '%s' in %s=%s"):format(lang_sc, i + otherparam - 1, otherspec))
end
end
insert(others, {
obj = obj,
objtype = objtype,
value = rest,
})
end
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
if args.type then
if args.type ~= "upper" and args.type ~= "lower" and args.type ~= "mixed" and args.type ~= "nocase" then
error(("Unrecognized value for type '%s'; should be one of 'upper', 'lower', 'mixed' or 'nocase'"):format(
args.type))
end
end
local lang = langparam and args[langparam] or iargs.lang
local sc = args.sc or iargs.sc or lang:findBestScript(pagename)
local data = {
lang = lang,
sc = sc,
pos_category = iargs.pos,
categories = {},
pagename = pagename,
inflections = {},
id = args.id,
sort_key = args.sort,
heads = args.head,
translits = args.tr,
transcriptions = args.ts,
force_cat_output = force_cat,
genders = not args.nog and (args.g and args.g[1] and args.g or iargs.g) or nil,
categories = {},
-- Disable "terms with redundant script codes" and "terms with non-redundant manual script codes"
-- categories. We always specify the script and the categories simply aren't useful in this case; having
-- them just clutters the categories with letter entries.
no_script_code_cat = true,
}
-- All letters can also be used as nouns ("There are two f's in that word").
insert(data.categories, lang:getFullName() .. " nouns")
if sc:getCode() ~= "None" then
insert(data.categories, sc:getCategoryName() .. " characters")
end
local uppage = uupper(pagename)
local lopage = ulower(pagename)
local ucfirstpage = ucfirst(lopage)
local function insert_inflection(termobjs, label)
if not termobjs or not termobjs[1] then
return
end
if termobjs[1].term == "-" then
require(headword_utilities_module).insert_inflection {
headdata = data,
terms = termobjs,
label = label,
}
else
termobjs.label = label
insert(data.inflections, termobjs)
end
end
local typ = args.type
if not typ then
if uppage == lopage then
typ = "nocase"
elseif data.pagename == ucfirstpage then
typ = "upper"
elseif data.pagename == uppage then
typ = "allcaps"
elseif data.pagename == lopage then
typ = "lower"
else
typ = "mixed"
end
end
if typ == "nocase" then
if args.upper or args.lower or args.mixed or args.allcaps then
error("Can't specify upper=, lower=, mixed= or allcaps= when letter has no case")
end
insert(data.inflections, {label = "no case"})
else
local upper = parse_equivalent(args.upper or "+", ucfirstpage, "upper")
local lower = parse_equivalent(args.lower or "+", lopage, "lower")
local allcaps = parse_equivalent(args.allcaps or ulen(pagename) == 1 and args.upper or "+", uppage, "allcaps")
local mixed = parse_equivalent(args.mixed, nil, "mixed")
local pagenameobj = {{term = ":" .. pagename, tr = "-"}}
if typ == "upper" then
if args.upper then
error("Already uppercase; can't specify upper=")
end
insert(data.inflections, {label = "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]"})
insert_inflection(lower, "တူဝ်လဵၵ်ႉ")
if not deep_equals(pagenameobj, allcaps) then
insert_inflection(allcaps, "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]")
end
insert_inflection(mixed, "mixed case")
elseif typ == "lower" then
if args.lower then
error("Already lowercase; can't specify lower=")
end
insert(data.inflections, {label = "တူဝ်လဵၵ်ႉ"})
if deep_equals(upper, allcaps) then
if ulen(pagename) == 1 then
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
else
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]] လႄႈ တူဝ်လိၵ်ႈလူင်တင်းမူတ်း")
end
else
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
insert_inflection(allcaps, "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]")
end
insert_inflection(mixed, "mixed case")
elseif typ == "allcaps" then
if args.allcaps then
error("Already all-caps; can't specify allcaps=")
end
insert(data.inflections, {label = "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]"})
if not deep_equals(pagenameobj, upper) then
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
end
insert_inflection(lower, "တူဝ်လဵၵ်ႉ")
insert_inflection(mixed, "mixed case")
else
if args.mixed then
error("Already mixed-case; can't specify mixed=")
end
insert(data.inflections, {label = "mixed case"})
insert_inflection(lower, "တူဝ်လဵၵ်ႉ")
if deep_equals(upper, allcaps) then
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]] and တူဝ်လိၵ်ႈလူင်တင်းမူတ်း")
else
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
insert_inflection(allcaps, "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]")
end
end
end
if args.nopl then
insert(data.inflections, {label = "no plural"})
elseif args.pl or iargs.pl_ending then
local default_pls
if iargs.pl_ending then
default_pls = parse_equivalent(iargs.pl_ending, nil, "pl_ending", "no_prefix_colon")
for _, pl_ending in ipairs(default_pls) do
if pl_ending.term == "_" then
pl_ending.term = pagename
else
pl_ending.term = pagename .. pl_ending.term
end
end
end
local pls = parse_equivalent(args.pl or "+", default_pls, "pl")
if not pls[2] and pls[1].term == ":" .. pagename then
require(headword_utilities_module).insert_fixed_inflection {
headdata = data,
originating_term = pls[1],
label = glossary_link("invariable"),
}
else
insert_inflection(pls, "plural")
end
end
if args.modern then
local termobjs = parse_equivalent(args.modern, nil, "modern")
insert_inflection(termobjs, "modern equivalent")
end
if others[1] then
for _, other in ipairs(others) do
local termobjs = parse_equivalent(other.value, nil, other.obj:getCode())
for _, termobj in ipairs(termobjs) do
if other.objtype == "language" then
termobj.lang = other.obj
else
termobj.sc = other.obj
end
end
insert_inflection(termobjs, other.obj:getCanonicalName() .. " equivalent")
end
end
if args.json then
return require(JSON_module).toJSON(data)
end
return require(headword_module).full_headword(data)
end
return export
p20kqeiy5p9qlvykczpqekkcfd0nkvq
260834
260832
2026-05-15T11:41:43Z
Saimawnkham
9
ဢၢပ်ႉတဵတ်ႉၶေႃႈမုၼ်း
260834
Scribunto
text/plain
local export = {}
local force_cat = false
local require_when_needed = require("Module:utilities/require when needed")
local headword_module = "Module:headword"
local headword_utilities_module = "Module:headword utilities"
local JSON_module = "Module:JSON"
local languages_module = "Module:languages"
local parameters_module = "Module:parameters"
local scripts_module = "Module:scripts"
local table_module = "Module:table"
local m_string_utilities = require("Module:string utilities")
local glossary_link = require_when_needed(headword_utilities_module, "glossary_link")
local deep_equals = require_when_needed(table_module, "deepEquals")
local shallow_copy = require_when_needed(table_module, "shallowCopy")
local uupper = m_string_utilities.upper
local ucfirst = m_string_utilities.ucfirst
local ulower = m_string_utilities.lower
local ulen = m_string_utilities.len
local insert = table.insert
local per_language_defaults = {
de = {g = "n"},
en = {pl_ending = "s,'s"},
it = {g = "f,m", pl_ending = "_"},
pt = {g = "m"},
}
local function ine(val)
if not val then
return val
end
val = mw.text.trim(val)
if val == "" then return nil else return val end
end
local function add_initial_colon_to_term(term)
if term ~= "-" and term ~= "+" and not term:find("^:") then
-- Make sure we link to the specified term even if it has a diacritic that would normally be stripped off.
term = ":" .. term
end
return term
end
local function resolve_plus(termobjs, default, paramname)
local saw_plus = false
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
saw_plus = true
break
end
end
if not saw_plus then
return termobjs
end
if not default then
error(("Saw '+' for param '%s' but no default available"):format(paramname))
end
if type(default) == "string" then
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
termobj.term = default
end
end
return termobjs
end
if type(default) ~= "table" then
error("Internal error: `default` should be nil, string or list of strings")
end
local resolved_termobjs = {}
for _, termobj in ipairs(termobjs) do
if termobj.term == "+" then
for _, defval in ipairs(default) do
defval = shallow_copy(defval)
require(headword_utilities_module).combine_termobj_qualifiers_labels(defval, termobj)
insert(resolved_termobjs, defval)
end
else
insert(resolved_termobjs, termobj)
end
end
return resolved_termobjs
end
local function parse_equivalent(value, default, paramname, no_prefix_colon)
if not value then
return nil
end
local termobjs
if value == "+" then
-- optimization to avoid loading [[Module:headword utilities]]
if not default then
error(("Saw '+' for param '%s' but no default available"):format(paramname))
end
if type(default) == "string" then
termobjs = {{term = default}}
else
if type(default) ~= "table" then
error("Internal error: `default` should be nil, string or list of term objects")
end
termobjs = default
end
elseif value:find("[,<]") then
termobjs = require(headword_utilities_module).parse_term_with_modifiers {
val = value,
paramname = paramname,
splitchar = ",",
include_mods = {"tr", "ts", "t", "sc"},
}
else
termobjs = {{ term = value }}
end
termobjs = resolve_plus(termobjs, default, paramname)
for _, termobj in ipairs(termobjs) do
if not no_prefix_colon then
termobj.term = add_initial_colon_to_term(termobj.term)
end
termobj.tr = "-"
end
return termobjs
end
--[==[
Implementation of the letter headword template for a given language (e.g. {{tl|en-letter}}, {{tl|it-letter}} or
{{tl|sh-letter}}). Supports the following invocation parameters:
; {{para|pos}}
: The plural part of speech to use; defaults to {{cd|letters}}. Other possibilities are e.g. {{cd|numeral symbols}} for
numeral symbols (letters used for list items).
; {{para|lang}}
: The language code of the language of the headword template. Omit for language-agnostic {{tl|letter}}.
; {{para|sc}}
: Specify the default script code. Rarely needs to be given.
; {{para|g}}
: Specify the default gender(s) of the letter. Multiple comma-separated values are allowed, along with qualifier, label
and reference inline modifiers. See [[Module:gender and number]] for more information, including the allowed values.
The default(s) can be overridden using the {{para|g}} template parameter.
; {{para|pl_ending}} ...
: Specify the default ending(s) of the plural form(s) of the letter. Multiple items should be comma-separated, and
qualifier, label, reference, transliteration and gloss inline modifiers are allowed. Use the value {{cd|_}} to
indicate a null ending. The default(s) can be overridden using the {{para|pl}} template parameter.
; {{para|allow_tr|1}}
: Specify that the template allows the {{para|tr}} parameter to be given for specifying transliteration.
]==]
function export.show(frame)
local list_param = {list = true, disallow_holes = true}
local boolean_param = {type = "boolean"}
local frame_args = frame.args
local parent_args = frame:getParent().args
-- Extract language and any per-language defaults. If they exist, clone the frame args and set the defaults into the
-- frame args before parsing. If there is no language specified at either the invocation or template level, we'll
-- get an error later.
local lang = ine(frame_args.lang) or ine(parent_args[1])
if lang and per_language_defaults[lang] then
local cloned_frame_args = {}
for k, v in pairs(frame_args) do
cloned_frame_args[k] = v
end
local defaults = per_language_defaults[lang]
for k, v in pairs(defaults) do
if cloned_frame_args[k] == nil then
cloned_frame_args[k] = v
end
end
frame_args = cloned_frame_args
end
local iargs = require(parameters_module).process(frame_args, {
pos = {default = "တူဝ်လိၵ်ႈ"},
lang = {type = "language", template_default = "und"},
sc = {type = "script"},
g = {type = "genders"},
pl_ending = true,
allow_tr = boolean_param,
})
local allowed_types = {"upper", "lower", "mixed", "allcaps", "nocase"}
local params = {
g = {type = "genders"},
sc = {type = "script"},
type = {set = allowed_types},
head = list_param,
upper = true,
lower = true,
mixed = true,
allcaps = true,
pl = true,
nopl = boolean_param,
id = true,
sort = true,
pagename = true,
modern = true,
}
local langparam, otherparam
if not iargs.lang then
langparam = 1
otherparam = 2
params[langparam] = {type = "language", required = true, template_default = "und"}
else
otherparam = 1
end
params[otherparam] = list_param
if iargs.g and iargs.g[1] then
params.nog = boolean_param
end
if iargs.allow_tr or not iargs.lang then
params.tr = list_param
end
if not iargs.lang then
params.ts = list_param
end
local args = require(parameters_module).process(parent_args, params)
local others = {}
for i, otherspec in ipairs(args[otherparam]) do
local lang_sc, rest = otherspec:match("^([a-zA-Z0-9-]+):([^ ].*)$")
if not lang_sc then
error(("Expected other-lang or other-script param %s=%s to begin with a language code or script code followed by a colon and no space"):format(i + otherparam - 1, otherspec))
end
local obj = require(scripts_module).getByCode(lang_sc)
local objtype
if obj then
objtype = "script"
else
obj = require(languages_module).getByCode(lang_sc, nil, "allow etym")
if obj then
objtype = "language"
else
error(("Unrecognized language or script '%s' in %s=%s"):format(lang_sc, i + otherparam - 1, otherspec))
end
end
insert(others, {
obj = obj,
objtype = objtype,
value = rest,
})
end
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
if args.type then
if args.type ~= "upper" and args.type ~= "lower" and args.type ~= "mixed" and args.type ~= "nocase" then
error(("Unrecognized value for type '%s'; should be one of 'upper', 'lower', 'mixed' or 'nocase'"):format(
args.type))
end
end
local lang = langparam and args[langparam] or iargs.lang
local sc = args.sc or iargs.sc or lang:findBestScript(pagename)
local data = {
lang = lang,
sc = sc,
pos_category = iargs.pos,
categories = {},
pagename = pagename,
inflections = {},
id = args.id,
sort_key = args.sort,
heads = args.head,
translits = args.tr,
transcriptions = args.ts,
force_cat_output = force_cat,
genders = not args.nog and (args.g and args.g[1] and args.g or iargs.g) or nil,
categories = {},
-- Disable "terms with redundant script codes" and "terms with non-redundant manual script codes"
-- categories. We always specify the script and the categories simply aren't useful in this case; having
-- them just clutters the categories with letter entries.
no_script_code_cat = true,
}
-- All letters can also be used as nouns ("There are two f's in that word").
insert(data.categories, "ႁိၵ်ႈ" .. lang:getFullName())
if sc:getCode() ~= "ႁိၵ်ႈ" then
insert(data.categories, sc:getCategoryName() .. " characters")
end
local uppage = uupper(pagename)
local lopage = ulower(pagename)
local ucfirstpage = ucfirst(lopage)
local function insert_inflection(termobjs, label)
if not termobjs or not termobjs[1] then
return
end
if termobjs[1].term == "-" then
require(headword_utilities_module).insert_inflection {
headdata = data,
terms = termobjs,
label = label,
}
else
termobjs.label = label
insert(data.inflections, termobjs)
end
end
local typ = args.type
if not typ then
if uppage == lopage then
typ = "nocase"
elseif data.pagename == ucfirstpage then
typ = "upper"
elseif data.pagename == uppage then
typ = "allcaps"
elseif data.pagename == lopage then
typ = "lower"
else
typ = "mixed"
end
end
if typ == "nocase" then
if args.upper or args.lower or args.mixed or args.allcaps then
error("Can't specify upper=, lower=, mixed= or allcaps= when letter has no case")
end
insert(data.inflections, {label = "no case"})
else
local upper = parse_equivalent(args.upper or "+", ucfirstpage, "upper")
local lower = parse_equivalent(args.lower or "+", lopage, "lower")
local allcaps = parse_equivalent(args.allcaps or ulen(pagename) == 1 and args.upper or "+", uppage, "allcaps")
local mixed = parse_equivalent(args.mixed, nil, "mixed")
local pagenameobj = {{term = ":" .. pagename, tr = "-"}}
if typ == "upper" then
if args.upper then
error("Already uppercase; can't specify upper=")
end
insert(data.inflections, {label = "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]"})
insert_inflection(lower, "တူဝ်လဵၵ်ႉ")
if not deep_equals(pagenameobj, allcaps) then
insert_inflection(allcaps, "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]")
end
insert_inflection(mixed, "mixed case")
elseif typ == "lower" then
if args.lower then
error("Already lowercase; can't specify lower=")
end
insert(data.inflections, {label = "တူဝ်လဵၵ်ႉ"})
if deep_equals(upper, allcaps) then
if ulen(pagename) == 1 then
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
else
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]] လႄႈ တူဝ်လိၵ်ႈလူင်တင်းမူတ်း")
end
else
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
insert_inflection(allcaps, "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]")
end
insert_inflection(mixed, "mixed case")
elseif typ == "allcaps" then
if args.allcaps then
error("Already all-caps; can't specify allcaps=")
end
insert(data.inflections, {label = "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]"})
if not deep_equals(pagenameobj, upper) then
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
end
insert_inflection(lower, "တူဝ်လဵၵ်ႉ")
insert_inflection(mixed, "mixed case")
else
if args.mixed then
error("Already mixed-case; can't specify mixed=")
end
insert(data.inflections, {label = "mixed case"})
insert_inflection(lower, "တူဝ်လဵၵ်ႉ")
if deep_equals(upper, allcaps) then
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]] and တူဝ်လိၵ်ႈလူင်တင်းမူတ်း")
else
insert_inflection(upper, "[[:en:Appendix:Capital letter|တူဝ်ယႂ်ႇ]]")
insert_inflection(allcaps, "[[:en:Appendix:Capital letter|တူဝ်လိၵ်ႈလူင်တင်းမူတ်း]]")
end
end
end
if args.nopl then
insert(data.inflections, {label = "ဢမ်ႇၸႂ်ႈတူဝ်ၼမ်"})
elseif args.pl or iargs.pl_ending then
local default_pls
if iargs.pl_ending then
default_pls = parse_equivalent(iargs.pl_ending, nil, "pl_ending", "no_prefix_colon")
for _, pl_ending in ipairs(default_pls) do
if pl_ending.term == "_" then
pl_ending.term = pagename
else
pl_ending.term = pagename .. pl_ending.term
end
end
end
local pls = parse_equivalent(args.pl or "+", default_pls, "pl")
if not pls[2] and pls[1].term == ":" .. pagename then
require(headword_utilities_module).insert_fixed_inflection {
headdata = data,
originating_term = pls[1],
label = glossary_link("invariable"),
}
else
insert_inflection(pls, "တူဝ်ၼမ်")
end
end
if args.modern then
local termobjs = parse_equivalent(args.modern, nil, "modern")
insert_inflection(termobjs, "modern equivalent")
end
if others[1] then
for _, other in ipairs(others) do
local termobjs = parse_equivalent(other.value, nil, other.obj:getCode())
for _, termobj in ipairs(termobjs) do
if other.objtype == "language" then
termobj.lang = other.obj
else
termobj.sc = other.obj
end
end
insert_inflection(termobjs, other.obj:getCanonicalName() .. " equivalent")
end
end
if args.json then
return require(JSON_module).toJSON(data)
end
return require(headword_module).full_headword(data)
end
return export
cw30pv2if8y7g4dfn8cwe28gjgb8o7d
မေႃႇၵျူး:letter headword/doc
828
55199
260830
2026-05-15T11:32:23Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "This module supplies the implementation of {{tl|letter}} and {{tl|numeral symbol}}. Some languages supply their own letter template but generally it has fewer features than this module, and should be replaced with {{tl|letter}}. ==Exported functions== {{module documentation}} {{module cat|-|Headword-line}}"
260830
wikitext
text/x-wiki
This module supplies the implementation of {{tl|letter}} and {{tl|numeral symbol}}. Some languages supply their own letter template but generally it has fewer features than this module, and should be replaced with {{tl|letter}}.
==Exported functions==
{{module documentation}}
{{module cat|-|Headword-line}}
1kj0wqvwxjih7qv1e5ojxieu92gtx0w
ထႅမ်းပလဵတ်ႉ:letter/documentation
10
55200
260831
2026-05-15T11:33:00Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "{{documentation subpage}} This template should be used to generate the headword line for letters in a specified language. '''Most of the time, only the language code needs to be specified.'''" ==ပရႃႇမီႇတႃႇ== The following parameters are supported: ;{{para|1|req=1}} : Language code (see {{slink|WT:Languages#Language codes}}) for the language of the letter. ;{{para|type}} : Explicitly specify the..."
260831
wikitext
text/x-wiki
{{documentation subpage}}
This template should be used to generate the headword line for letters in a specified language. '''Most of the time, only the language code needs to be specified.'''"
==ပရႃႇမီႇတႃႇ==
The following parameters are supported:
;{{para|1|req=1}}
: Language code (see {{slink|WT:Languages#Language codes}}) for the language of the letter.
;{{para|type}}
: Explicitly specify the case of the letter: {{cd|nocase}} (for letters without case); {{cd|upper}}; {{cd|lower}}; {{cd|allcaps}} (for all-capital-letter variants of digraphs, trigraphs, etc. whose normal uppercase version has only the first character capitalized); or {{cd|mixed}} (for the rare case of a mixture of uppercase and lowercase letters in a digraph, trigraph, etc. that is not the uppercase form). This usually does not need to be given, as it is autodetected; but some lowercase or uppercase characters need it because Unicode does not correctly register the character as having case.
;{{para|upper}}
: Explicitly specify the uppercase equivalent(s) of a lowercase, all-caps or mixed-case letter. Cannot be specified for already-uppercase or caseless letters. This usually does not need to be given as it is normally auto-generated by uppercasing the pagename (or the first letter in the case of a digraph, trigraph, etc.). In some cases, however, Unicode does not correctly register a case pair but treats the two letters as caseless; in thiscase, both {{para|type}} and {{para|upper}} must be given. Multiple comma-separated values are allowed, along with qualifier, label, reference, transliteration and gloss inline modifiers. See below.
;{{para|lower}}
: Explicitly specify the lowercase equivalent(s) of an uppercase, all-caps or mixed-case letter. Cannot be specified for already-lowercase or caseless letters. This usually does not need to be given as it is normally auto-generated by lowercasing the pagename. The same syntax and considerations apply as for {{para|upper}}.
;{{para|allcaps}}
: Explicitly specify the all-caps equivalent(s) of an uppercase, lowercase or mixed-case letter. Cannot be specified for already-all-caps or caseless letters. This usually does not need to be given as it is normally auto-generated by uppercasing (all letters of) the pagename. The same syntax and considerations apply as for {{para|upper}}.
;{{para|mixed}}
: Explicitly specify the mixed-case equivalent(s) of an uppercase, lowercase or all-caps letter. Cannot be specified for already mixed-case or caseless letters. There is no default for this parameter, so it will only appear when explicitly given. The syntax is the same as for {{para|upper}}.
;{{para|pl}}
: Explicitly specify the plural(s) of the letter. A value of {{cd|+}} explicitly requests the default value(s) (which are available only for some languages; otherwise, an error will occur). The syntax is the same as for {{para|upper}}.
;{{para|nopl|1}}
: Specify that the letter does not have a plural form.
;{{para|g}}
: Explicitly specify the gender(s) of the letter. Multiple comma-separated values are allowed, along with qualifier, label and reference inline modifiers. See [[Module:gender and number]] for more information, including the allowed values.
;{{para|nog|1}}
: In case the language specifies a default gender, cancel out the gender(s) without supplying any replacement. No gender will be shown.
;{{para|sc}}
: Specify an explicit value for the script of the letter. Rarely necessary as the script is autodetected.
;{{para|id}}
: Specify a sense ID (see {{tl|senseid}}) for linking to this particular sense/part of speech of the term using the {{para|id}} parameter of {{tl|l}}, {{tl|m}} and the like. Useful when the entry also has meanings other than as a letter.
;{{para|tr}}, {{para|tr2}}, ...
: Specify transliteration(s) of the letter, for letters not in the Latin script. Not usually necessary, as most languages have automatic transliteration, which is usually correct.
;{{para|pagename}}
:Override the pagename, for use on documentation or test pages.
;{{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 testing purposes.
<includeonly>
[[Category:Headword-line templates]]
</includeonly>
6letcceobw5l8x525s4pq9ty5uo5amp
ပိူင်ထၢၼ်ႈ:တူဝ်လိၵ်ႈဢိင်းၵလဵတ်ႈ
14
55201
260835
2026-05-15T11:42:29Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "[[ပိူင်ထၢၼ်ႈ:ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ]]"
260835
wikitext
text/x-wiki
[[ပိူင်ထၢၼ်ႈ:ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ]]
mielw0otw3a8r9adu0xi0kh6p0j8j0e
ပိူင်ထၢၼ်ႈ:လႅတ်ႉတိၼ်ႇ script characters
14
55202
260836
2026-05-15T11:43:26Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "__HIDDENCAT__"
260836
wikitext
text/x-wiki
__HIDDENCAT__
2twjmejn56ditxo46hqinfh52nh6flb
ပိူင်ထၢၼ်ႈ:ဢိင်းၵလဵတ်ႈ terms with redundant script codes
14
55203
260837
2026-05-15T11:43:29Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "__HIDDENCAT__"
260837
wikitext
text/x-wiki
__HIDDENCAT__
2twjmejn56ditxo46hqinfh52nh6flb
ပိူင်ထၢၼ်ႈ:Pages with tab characters
14
55204
260838
2026-05-15T11:43:32Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "__HIDDENCAT__"
260838
wikitext
text/x-wiki
__HIDDENCAT__
2twjmejn56ditxo46hqinfh52nh6flb
bs
0
55205
260840
2026-05-15T11:45:13Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===ႁိၵ်ႈ=== {{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}} # {{plural of|en|b}}"
260840
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|b}}
mvzo9rfrf8lm9oywrftkx8rv82nmeu5
b's
0
55206
260841
2026-05-15T11:45:48Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===ႁိၵ်ႈ=== {{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ|head=[[b]][[-'s|'s]]}} # {{plural of|en|b}}"
260841
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ|head=[[b]][[-'s|'s]]}}
# {{plural of|en|b}}
mb03kdemzawd1oraf1vuu73oa0f2zye
Bs
0
55207
260844
2026-05-15T11:48:52Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===ႁိၵ်ႈ=== {{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}} # {{plural of|en|B}}"
260844
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ}}
# {{plural of|en|B}}
0wg0xb6m3szsl2t8iwdk6vddx9cf5vw
B's
0
55208
260845
2026-05-15T11:49:26Z
Saimawnkham
9
ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "==ဢိင်းၵလဵတ်ႈ== ===ႁိၵ်ႈ=== {{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ|head=[[B]][[-'s|’s]]}} # {{plural of|en|B}}"
260845
wikitext
text/x-wiki
==ဢိင်းၵလဵတ်ႈ==
===ႁိၵ်ႈ===
{{head|en|ပိူင်ၽၢင်ႁိၵ်ႈ|head=[[B]][[-'s|’s]]}}
# {{plural of|en|B}}
ii13lq5zjbrakd5zao8ox26qfbrpn2u