ဝိၵ်ႇသျိၼ်ႇၼရီႇ 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