Wiktionary
viwiktionary
https://vi.wiktionary.org/wiki/Wiktionary:Trang_Ch%C3%ADnh
MediaWiki 1.47.0-wmf.4
case-sensitive
Phương tiện
Đặc biệt
Thảo luận
Thành viên
Thảo luận Thành viên
Wiktionary
Thảo luận Wiktionary
Tập tin
Thảo luận Tập tin
MediaWiki
Thảo luận MediaWiki
Bản mẫu
Thảo luận Bản mẫu
Trợ giúp
Thảo luận Trợ giúp
Thể loại
Thảo luận Thể loại
Phụ lục
Thảo luận Phụ lục
TimedText
TimedText talk
Mô đun
Thảo luận Mô đun
Event
Event talk
ho
0
28291
2362904
2356677
2026-05-31T06:39:39Z
Trong Dang
52461
/* */
2362904
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*hɔː}}.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[𤵡]]: [[ho]]
*[[呼]]: [[hao]], [[hố]], [[ho]], [[hú]], [[hò]], [[hô]], [[há]]
{{bottom}}
{{-paro-}}
{{đầu}}
:* [[hớ]]
:* [[hờ]]
:* [[hộ]]
:* [[hổ]]
:* [[hô]]
:* [[họ]]
{{giữa}}
:* [[hở]]
:* [[hơ]]
:* [[hố]]
:* [[hồ]]
:* [[Họ]]
:* [[hò]]
{{cuối}}
{{-verb-}}
'''ho'''
# [[bật hơi|Bật hơi]] [[ra]] [[từ]] trong [[phổi]], trong [[cổ]], [[đến mức]] [[phát]] thành [[tiếng]].
#: ''Bị '''ho''' và sốt.''
#: ''Thuốc chữa '''ho'''.''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
{{-eng-}}
{{-pron-}}
* [[Wiktionary:IPA|IPA]]: {{IPA|/ˈhoʊ/}}
{{-interj-}}
'''ho''' {{IPA|/ˈhoʊ/}}
# Ô! ồ! [[thế]] à!
# Này!; {{term|Hàng hải}} [[kia|Kia]]!, [[kia kìa]].
#: ''land '''ho'''!'' — đất liền kia kìa! kia đất liền!
{{-ref-}}
{{R:FVDP}}
{{-sce-}}
{{-noun-}}
{{head|sce|Danh từ}}
# [[tổ]] [[chim]].
{{-mtq-}}
{{-per-pronoun-}}
{{pn}}
# [[tôi]].
[[Thể loại:Thán từ tiếng Anh]]
[[Thể loại:Động từ tiếng Việt]]
[[Thể loại:Đại từ tiếng Mường]]
{{-aav-tam-}}
{{-verb-}}
{{head|aav-tam|Động từ}}
# [[chảy]].
{{-ref-}}
* Phan Trần Công (2017). Tương ứng từ vựng và mối quan hệ giữa các ngôn ngữ trong nhóm Bahnar Nam. Tạp chí Phát triển Khoa học và Công nghệ: Chuyên san Khoa học xã hội và Nhân văn, tập 1, số 4, 2017.
f595434zutxpg8lrmw7ilh1mbx2ct24
héo
0
28385
2362903
2273389
2026-05-31T06:38:41Z
Trong Dang
52461
/* */
2362903
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*hɛːwʔ}}. So sánh với {{cog|th|เหี่ยว}}.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[㭳]]: [[héo]], [[hèo]]
*[[痚]]: [[hiêu]], [[héo]]
{{mid}}
*[[䓔]]: [[hẻo]], [[héo]]
*[[𤉗]]: [[héo]]
{{bottom}}
{{-paro-}}
:* [[hèo]]
:* [[heo]]
{{-adj-}}
'''héo'''
# [[khô|Khô]] vì [[thiếu]] [[nước]].
#: ''Chê rau muống '''héo''', lại ôm dưa già. ([[tục ngữ]])''
#: ''Không có gốc thì cây '''héo''' ([[w:Hồ Chí Minh|Hồ Chí Minh]])''
#: ''Con không cha thì con trễ, cây không rễ thì cây '''héo'''. ([[tục ngữ]])''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Tính từ tiếng Việt]]
{{-nut-}}
{{-noun-}}
{{pn}}
# {{context|Nùng An}} [[răng]].
{{-ref-}}
* [http://ttoeduclass.weebly.com/uploads/3/1/7/7/31776665/du_lieu_tu_dien_viet_tay_nung.pdf DỮ LIỆU TỪ ĐIỂN VIỆT - TÀY-NÙNG].
[[Thể loại:Danh từ tiếng Nùng]]
{{-tyz-}}
{{-pron-}}
{{tyz-IPA}}
{{-adj-}}
{{pn}}
# [[gầy]].
# [[nhăn nheo]].
{{-drv-}}
{{đầu}}
* [[héo ngánh]]
* [[héo ngắng]]
* [[héo nháp]]
* [[héo nhỉu]]
{{cuối}}
{{-ref-}}
{{R:Lương Bèn}}
[[Thể loại:Tính từ tiếng Tày]]
jjqur8i6kxakaph9xan3jj9ic81bjrt
nội chiến
0
29032
2362668
2362620
2026-05-30T12:42:59Z
TheHighFighter2
42988
/* Dịch */
2362668
wikitext
text/x-wiki
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
{{vi-etym-sino|內戰}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun|cls=cuộc}}
# [[chiến tranh|Chiến tranh]] giữa các [[giai cấp]] hoặc [[lực lượng]] [[xã hội]] [[đối kháng]] trong một [[nước]].
===={{ĐM|trans}}====
{{trans-top|Chiến tranh}}
* {{langname|af}}: {{t+|af|burgeroorlog|s}}
* {{langname|egy}}: {{t-egy|ḏꜣjs|h=DA-i-s-A24}}
* {{langname|sq}}: {{t|sq|luftë civile|f}}
* {{langname|en}}: {{t+|en|civil war}}
* {{langname|ar}}: {{t|ar|حَرْب أَهْلِيَّة|f}}
* {{langname|arc}}:
*: {{langname|aii}}: {{t|aii|ܩܪܵܒ݂ܵܐ ܡܕܝܼܢܵܝܵܐ|m}}
* {{langname|hy}}: {{t+|hy|քաղաքացիական պատերազմ}}
* {{langname|as}}: {{t|as|গৃহযুদ্ধ}}
* {{langname|ast}}: {{t|ast|guerra civil|f}}
* {{langname|az}}: {{t|az|vətəndaş müharibəsi}}
* {{langname|ba}}: {{t|ba|граждандар һуғышы}}
* {{langname|eu}}: {{t|eu|gerra zibil}}
* {{langname|be}}: {{t|be|грамадзя́нская вайна́|f}}
* {{langname|bn}}: {{t+|bn|গৃহযুদ্ধ}}
* {{langname|bg}}: {{t|bg|гра́жданска война́|f}}
* {{langname|bua}}: {{t|bua|эрхэтэнэй дайн}}
* {{langname|ca}}: {{t|ca|guerra civil|f}}
* {{langname|ce}}: {{t|ce|гражданийн тӀом}}
* {{langname|cv}}: {{t|cv|граждан вӑрҫи}}
* {{langname|he}}: {{t|he|מִלְחֶמֶת אֶזְרָחִים|f|tr=milkhémet ezrakhím}}
* {{langname|ug}}: {{t|ug|ئىچكى ئۇرۇش}}
* {{langname|da}}: {{t+|da|borgerkrig|c}}
* {{langname|de}}: {{t+|de|Bürgerkrieg|m}}
* {{langname|myv}}: {{t|myv|потмонь тюрема}}, {{t|myv|кудонь тюрема}}
* {{langname|et}}: {{t|et|kodusõda}}
* {{langname|fo}}: {{t+|fo|borgarakríggj|n}}
* {{langname|gd}}: {{t|gd|cogadh sìobhalta|m}}
* {{langname|gl}}: {{t|gl|guerra civil|f}}
* {{langname|ka}}: {{t|ka|სამოქალაქო ომი}}
* {{langname|gu}}: {{t|gu|આંતરવિગ્રહ}}
* {{langname|nl}}: {{t+|nl|burgeroorlog|m}}, {{t|nl|burgerkrijg|m}}
* {{langname|haw}}: {{t|haw|kaua kūloko}}
* {{langname|hi}}: {{t+|hi|गृहयुद्ध|m}}
* {{langname|hu}}: {{t+|hu|polgárháború}}
* {{langname|el}}: {{t+|el|εμφύλιος πόλεμος|m}}
*: {{langname|grc}}: {{t|grc|[[ἐμφύλιος]] [[πόλεμος]]|m}}
* {{langname|my}}: {{t+|my|ပြည်တွင်းစစ်}}
* {{langname|no}}:
*: {{langname|nb}}: {{t|nb|borgerkrig|m}}
*: {{langname|nn}}: {{t|nn|borgarkrig|m}}
* {{langname|ja}}: {{t+|ja|内戦|tr=ないせん, naisen}}, {{t+|ja|内乱|tr=ないらん, nairan}}
* {{langname|fr}}: {{t+|fr|guerre civile|f}}, {{t|fr|guerre intestine|f}}
* {{langname|fi}}: {{t+|fi|sisällissota}}
* {{langname|eo}}: {{t|eo|enlanda milito}}, {{t|eo|interna milito}}, {{t|eo|intercivitana milito}}, {{t|eo|civila milito}}, {{t|eo|interfrata milito}} {{qualifier|sách vở}}
* {{langname|cs}}: {{t+|cs|občanská válka|f}}
* {{langname|sh}}:
*: Chữ Kirin: {{t|sh|грађански рат|m}}
*: Chữ Latinh: {{t+|sh|građanski rat|m}}
* {{langname|sk}}: {{t|sk|občianska vojna|f}}
* {{langname|sl}}: {{t+|sl|državljanska vojna|f}}
* {{langname|sw}}: {{t|sw|vita vya wenyewe kwa wenyewe}}
* {{langname|tl}}: {{t|tl|digmaang sibil}}, {{t|tl|bayanhing digmaan}}
* {{langname|tg}}: {{t|tg|ҷанги шаҳрвандӣ}}, {{t|tg|ҷанги гражданӣ}}, {{t|tg|чанги дохилӣ}}
* {{langname|ta}}: {{t|ta|உள்நாட்டுப் போர்}}
* {{langname|tt}}: {{t|tt|ватандашлар сугышы}}, {{t|tt|гражданнар сугышы}}
* {{langname|es}}: {{t+|es|guerra civil|f}}
* {{langname|te}}: {{t|te|పౌర యుద్ధం}}
* {{langname|th}}: {{t|th|สงครามกลางเมือง}}
* {{langname|tr}}: {{t+|tr|iç savaş}}
* {{langname|sv}}: {{t+|sv|inbördeskrig|n}}
* {{langname|ko}}: {{t+|ko|내전(內戰)}}, {{t+|ko|내란(內亂)}}
* {{langname|zh}}:
*: {{langname|nan-hbl}}: {{t+|nan-hbl|內戰|tr=lōe-chiàn / lāi-chiàn}}
*: {{langname|yue}}: {{t|yue|內戰|tr=noi6 zin3}}
*: {{langname|cmn}}: {{t+|cmn|內戰|tr=nèizhàn}}, {{t+|cmn|內亂|tr=nèiluàn}}, {{t|cmn|國內戰爭|tr=guónèi zhànzhēng}}, {{t|cmn|內潰|tr=nèikuì}}
* {{langname|tk}}: {{t|tk|halk gozgalaňy}}
* {{langname|uk}}: {{t|uk|громадя́нська війна́|f}}
* {{langname|ur}}: {{t|ur|خانَہ جَن٘گی|f}}
* {{langname|uz}}: {{t|uz|fuqarolar urushi}}, {{t|uz|ichki urush}}
* {{langname|cy}}: {{t|cy|rhyfel cartref}}
* {{langname|it}}: {{t+|it|guerra civile|f}}
* {{langname|yi}}: {{t|yi|בירגער קריג|m}}, {{t|yi|בירגער־מלחמה|f|tr=birger milkhome}}, {{t|yi|ציווילע קריג|m}}
{{trans-bottom}}
==={{ĐM|ref}}===
{{R:FVDP}}
pri3oc5869unou0pde6bj7fhs97h28w
2362673
2362668
2026-05-30T12:58:03Z
TheHighFighter2
42988
/* Tiếng Việt */
2362673
wikitext
text/x-wiki
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
{{vi-etym-sino|內戰}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun|cls=cuộc}}
# [[chiến tranh|Chiến tranh]] giữa các [[giai cấp]] hoặc [[lực lượng]] [[xã hội]] [[đối kháng]] trong một [[nước]].
===={{ĐM|trans}}====
{{trans-top|Chiến tranh}}
* {{langname|af}}: {{t+|af|burgeroorlog|s}}
* {{langname|egy}}: {{t-egy|ḏꜣjs|h=DA-i-s-A24}}
* {{langname|sq}}: {{t|sq|luftë civile|f}}
* {{langname|en}}: {{t+|en|civil war}}
* {{langname|ar}}: {{t|ar|حَرْب أَهْلِيَّة|f}}
* {{langname|arc}}:
*: {{langname|aii}}: {{t|aii|ܩܪܵܒ݂ܵܐ ܡܕܝܼܢܵܝܵܐ|m}}
* {{langname|hy}}: {{t+|hy|քաղաքացիական պատերազմ}}
* {{langname|as}}: {{t|as|গৃহযুদ্ধ}}
* {{langname|ast}}: {{t|ast|guerra civil|f}}
* {{langname|az}}: {{t|az|vətəndaş müharibəsi}}
* {{langname|ba}}: {{t|ba|граждандар һуғышы}}
* {{langname|eu}}: {{t|eu|gerra zibil}}
* {{langname|be}}: {{t|be|грамадзя́нская вайна́|f}}
* {{langname|bn}}: {{t+|bn|গৃহযুদ্ধ}}
* {{langname|bg}}: {{t|bg|гра́жданска война́|f}}
* {{langname|bua}}: {{t|bua|эрхэтэнэй дайн}}
* {{langname|ca}}: {{t|ca|guerra civil|f}}
* {{langname|ce}}: {{t|ce|гражданийн тӀом}}
* {{langname|cv}}: {{t|cv|граждан вӑрҫи}}
* {{langname|he}}: {{t|he|מִלְחֶמֶת אֶזְרָחִים|f|tr=milkhémet ezrakhím}}
* {{langname|ug}}: {{t|ug|ئىچكى ئۇرۇش}}
* {{langname|da}}: {{t+|da|borgerkrig|c}}
* {{langname|de}}: {{t+|de|Bürgerkrieg|m}}
* {{langname|myv}}: {{t|myv|потмонь тюрема}}, {{t|myv|кудонь тюрема}}
* {{langname|et}}: {{t|et|kodusõda}}
* {{langname|fo}}: {{t+|fo|borgarakríggj|n}}
* {{langname|gd}}: {{t|gd|cogadh sìobhalta|m}}
* {{langname|gl}}: {{t|gl|guerra civil|f}}
* {{langname|ka}}: {{t|ka|სამოქალაქო ომი}}
* {{langname|gu}}: {{t|gu|આંતરવિગ્રહ}}
* {{langname|nl}}: {{t+|nl|burgeroorlog|m}}, {{t|nl|burgerkrijg|m}}
* {{langname|haw}}: {{t|haw|kaua kūloko}}
* {{langname|hi}}: {{t+|hi|गृहयुद्ध|m}}
* {{langname|hu}}: {{t+|hu|polgárháború}}
* {{langname|el}}: {{t+|el|εμφύλιος πόλεμος|m}}
*: {{langname|grc}}: {{t|grc|[[ἐμφύλιος]] [[πόλεμος]]|m}}
* {{langname|my}}: {{t+|my|ပြည်တွင်းစစ်}}
* {{langname|no}}:
*: {{langname|nb}}: {{t|nb|borgerkrig|m}}
*: {{langname|nn}}: {{t|nn|borgarkrig|m}}
* {{langname|ja}}: {{t+|ja|内戦|tr=ないせん, naisen}}, {{t+|ja|内乱|tr=ないらん, nairan}}
* {{langname|fr}}: {{t+|fr|guerre civile|f}}, {{t|fr|guerre intestine|f}}
* {{langname|fi}}: {{t+|fi|sisällissota}}
* {{langname|eo}}: {{t|eo|enlanda milito}}, {{t|eo|interna milito}}, {{t|eo|intercivitana milito}}, {{t|eo|civila milito}}, {{t|eo|interfrata milito}} {{qualifier|sách vở}}
* {{langname|cs}}: {{t+|cs|občanská válka|f}}
* {{langname|sh}}:
*: Chữ Kirin: {{t|sh|грађански рат|m}}
*: Chữ Latinh: {{t+|sh|građanski rat|m}}
* {{langname|sk}}: {{t|sk|občianska vojna|f}}
* {{langname|sl}}: {{t+|sl|državljanska vojna|f}}
* {{langname|sw}}: {{t|sw|vita vya wenyewe kwa wenyewe}}
* {{langname|tl}}: {{t|tl|digmaang sibil}}, {{t|tl|bayanhing digmaan}}
* {{langname|tg}}: {{t|tg|ҷанги шаҳрвандӣ}}, {{t|tg|ҷанги гражданӣ}}, {{t|tg|чанги дохилӣ}}
* {{langname|ta}}: {{t|ta|உள்நாட்டுப் போர்}}
* {{langname|tt}}: {{t|tt|ватандашлар сугышы}}, {{t|tt|гражданнар сугышы}}
* {{langname|es}}: {{t+|es|guerra civil|f}}
* {{langname|te}}: {{t|te|పౌర యుద్ధం}}
* {{langname|th}}: {{t|th|สงครามกลางเมือง}}
* {{langname|tr}}: {{t+|tr|iç savaş}}
* {{langname|sv}}: {{t+|sv|inbördeskrig|n}}
* {{langname|ko}}: {{t+|ko|내전(內戰)}}, {{t+|ko|내란(內亂)}}
* {{langname|zh}}:
*: {{langname|nan-hbl}}: {{t+|nan-hbl|內戰|tr=lōe-chiàn / lāi-chiàn}}
*: {{langname|yue}}: {{t|yue|內戰|tr=noi6 zin3}}
*: {{langname|cmn}}: {{t+|cmn|內戰|tr=nèizhàn}}, {{t+|cmn|內亂|tr=nèiluàn}}, {{t|cmn|國內戰爭|tr=guónèi zhànzhēng}}, {{t|cmn|內潰|tr=nèikuì}}
* {{langname|tk}}: {{t|tk|halk gozgalaňy}}
* {{langname|uk}}: {{t|uk|громадя́нська війна́|f}}
* {{langname|ur}}: {{t|ur|خانَہ جَن٘گی|f}}
* {{langname|uz}}: {{t|uz|fuqarolar urushi}}, {{t|uz|ichki urush}}
* {{langname|cy}}: {{t|cy|rhyfel cartref}}
* {{langname|it}}: {{t+|it|guerra civile|f}}
* {{langname|yi}}: {{t|yi|בירגער קריג|m}}, {{t|yi|בירגער־מלחמה|f|tr=birger milkhome}}, {{t|yi|ציווילע קריג|m}}
{{trans-bottom}}
==={{ĐM|ref}}===
{{R:FVDP}}
{{C|vi|Loại hình chiến tranh}}
bb9n823i99y58g3msywcg9ya4g3bo7j
2362685
2362673
2026-05-30T14:10:41Z
Hiyuune
50834
/* Dịch */
2362685
wikitext
text/x-wiki
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
{{vi-etym-sino|內戰}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun|cls=cuộc}}
# [[chiến tranh|Chiến tranh]] giữa các [[giai cấp]] hoặc [[lực lượng]] [[xã hội]] [[đối kháng]] trong một [[nước]].
===={{ĐM|trans}}====
{{trans-top|Chiến tranh}}
* {{langname|af}}: {{t+|af|burgeroorlog|s}}
* {{langname|egy}}: {{t-egy|ḏꜣjs|h=DA-i-s-A24}}
* {{langname|sq}}: {{t|sq|luftë civile|f}}
* {{langname|en}}: {{t+|en|civil war}}
* {{langname|ang}}: {{t|ang|inġewinn|n}}
* {{langname|ar}}: {{t|ar|حَرْب أَهْلِيَّة|f}}
* {{langname|arc}}:
*: {{langname|aii}}: {{t|aii|ܩܪܵܒ݂ܵܐ ܡܕܝܼܢܵܝܵܐ|m}}
* {{langname|hy}}: {{t+|hy|քաղաքացիական պատերազմ}}
* {{langname|as}}: {{t|as|গৃহযুদ্ধ}}
* {{langname|ast}}: {{t|ast|guerra civil|f}}
* {{langname|az}}: {{t|az|vətəndaş müharibəsi}}
* {{langname|ba}}: {{t|ba|граждандар һуғышы}}
* {{langname|fa}}:
*: Tiếng Ba Tư Iran: {{t|fa-ira|جَنْگِ داخِلی}}, {{t|fa-ira|خانِهجَنْگی}}, {{t|fa-ira|جَنْگِ شَهْرْوَنْدی}}
* {{langname|eu}}: {{t|eu|gerra zibil}}
* {{langname|be}}: {{t|be|грамадзя́нская вайна́|f}}
* {{langname|bn}}: {{t+|bn|গৃহযুদ্ধ}}
* {{langname|bg}}: {{t|bg|гра́жданска война́|f}}
* {{langname|bua}}: {{t|bua|эрхэтэнэй дайн}}
* {{langname|ca}}: {{t|ca|guerra civil|f}}
* {{langname|ce}}: {{t|ce|гражданийн тӀом}}
* {{langname|cv}}: {{t|cv|граждан вӑрҫи}}
* {{langname|he}}: {{t|he|מִלְחֶמֶת אֶזְרָחִים|f|tr=milkhémet ezrakhím}}
* {{langname|ug}}: {{t|ug|ئىچكى ئۇرۇش}}
* {{langname|da}}: {{t+|da|borgerkrig|c}}
* {{langname|de}}: {{t+|de|Bürgerkrieg|m}}
* {{langname|myv}}: {{t|myv|потмонь тюрема}}, {{t|myv|кудонь тюрема}}
* {{langname|et}}: {{t|et|kodusõda}}
* {{langname|fo}}: {{t+|fo|borgarakríggj|n}}
* {{langname|gd}}: {{t|gd|cogadh sìobhalta|m}}
* {{langname|gl}}: {{t|gl|guerra civil|f}}
* {{langname|ka}}: {{t|ka|სამოქალაქო ომი}}
* {{langname|gu}}: {{t|gu|આંતરવિગ્રહ}}
* {{langname|nl}}: {{t+|nl|burgeroorlog|m}}, {{t|nl|burgerkrijg|m}}
* {{langname|haw}}: {{t|haw|kaua kūloko}}
* {{langname|hi}}: {{t+|hi|गृहयुद्ध|m}}
* {{langname|hu}}: {{t+|hu|polgárháború}}
* {{langname|el}}: {{t+|el|εμφύλιος πόλεμος|m}}
*: {{langname|grc}}: {{t|grc|[[ἐμφύλιος]] [[πόλεμος]]|m}}
* {{langname|kn}}: {{t+|kn|ಅಂತಃಕಲಹ}}
* {{langname|kk}}: {{t|kk|азаматтық соғыс}}, {{t|kk|азамат соғысы}}
* {{langname|km}}: {{t|km|សង្គ្រាមក្នុងស្រុក}}
* {{langname|ky}}: {{t|ky|жарандык согуш}}
* {{langname|lo}}: {{t+|lo|ສົງຄາມກາງເມືອງ}}
* {{langname|la}}: {{t|la|bellum cīvīle|n}}, {{t|la|[[bellum]] [[intestīnum]]|n}}
* {{langname|lv}}: {{t|lv|pilsoņu karš|m}}
* {{langname|lt}}: {{t|lt|pilietinis karas|m}}
* {{langname|lb}}: {{t|lb|Biergerkrich|m}}
* {{langname|mk}}: {{t|mk|граѓанска војна|f}}
* {{langname|ms}}: {{t+|ms|perang saudara}}
* {{langname|ml}}: {{t|ml|ആഭ്യന്തരയുദ്ധം}}
* {{langname|mi}}: {{t|mi|kaiākiri}}
* {{langname|mr}}: {{t|mr|यादवी युद्ध}}, {{t|mr|गृहयुद्ध}}
* {{langname|my}}: {{t+|my|ပြည်တွင်းစစ်}}
* {{langname|no}}:
*: {{langname|nb}}: {{t|nb|borgerkrig|m}}
*: {{langname|nn}}: {{t|nn|borgarkrig|m}}
* {{langname|ja}}: {{t+|ja|内戦|tr=ないせん, naisen}}, {{t+|ja|内乱|tr=ないらん, nairan}}
* {{langname|fr}}: {{t+|fr|guerre civile|f}}, {{t|fr|guerre intestine|f}}
* {{langname|fi}}: {{t+|fi|sisällissota}}
* {{langname|eo}}: {{t|eo|enlanda milito}}, {{t|eo|interna milito}}, {{t|eo|intercivitana milito}}, {{t|eo|civila milito}}, {{t|eo|interfrata milito}} {{qualifier|sách vở}}
* {{langname|cs}}: {{t+|cs|občanská válka|f}}
* {{langname|sh}}:
*: Chữ Kirin: {{t|sh|грађански рат|m}}
*: Chữ Latinh: {{t+|sh|građanski rat|m}}
* {{langname|sk}}: {{t|sk|občianska vojna|f}}
* {{langname|sl}}: {{t+|sl|državljanska vojna|f}}
* {{langname|sw}}: {{t|sw|vita vya wenyewe kwa wenyewe}}
* {{langname|tl}}: {{t|tl|digmaang sibil}}, {{t|tl|bayanhing digmaan}}
* {{langname|tg}}: {{t|tg|ҷанги шаҳрвандӣ}}, {{t|tg|ҷанги гражданӣ}}, {{t|tg|чанги дохилӣ}}
* {{langname|ta}}: {{t|ta|உள்நாட்டுப் போர்}}
* {{langname|tt}}: {{t|tt|ватандашлар сугышы}}, {{t|tt|гражданнар сугышы}}
* {{langname|es}}: {{t+|es|guerra civil|f}}
* {{langname|te}}: {{t|te|పౌర యుద్ధం}}
* {{langname|th}}: {{t|th|สงครามกลางเมือง}}
* {{langname|tr}}: {{t+|tr|iç savaş}}
* {{langname|sv}}: {{t+|sv|inbördeskrig|n}}
* {{langname|ko}}: {{t+|ko|내전(內戰)}}, {{t+|ko|내란(內亂)}}
* {{langname|zh}}:
*: {{langname|nan-hbl}}: {{t+|nan-hbl|內戰|tr=lōe-chiàn / lāi-chiàn}}
*: {{langname|yue}}: {{t|yue|內戰|tr=noi6 zin3}}
*: {{langname|cmn}}: {{t+|cmn|內戰|tr=nèizhàn}}, {{t+|cmn|內亂|tr=nèiluàn}}, {{t|cmn|國內戰爭|tr=guónèi zhànzhēng}}, {{t|cmn|內潰|tr=nèikuì}}
* {{langname|tk}}: {{t|tk|halk gozgalaňy}}
* {{langname|uk}}: {{t|uk|громадя́нська війна́|f}}
* {{langname|ur}}: {{t|ur|خانَہ جَن٘گی|f}}
* {{langname|uz}}: {{t|uz|fuqarolar urushi}}, {{t|uz|ichki urush}}
* {{langname|cy}}: {{t|cy|rhyfel cartref}}
* {{langname|it}}: {{t+|it|guerra civile|f}}
* {{langname|yi}}: {{t|yi|בירגער קריג|m}}, {{t|yi|בירגער־מלחמה|f|tr=birger milkhome}}, {{t|yi|ציווילע קריג|m}}
{{trans-bottom}}
==={{ĐM|ref}}===
{{R:FVDP}}
{{C|vi|Loại hình chiến tranh}}
bjedd48tikjdvuj3tdtmlqydjb3hkhs
2362693
2362685
2026-05-30T14:28:23Z
TheHighFighter2
42988
/* Dịch */
2362693
wikitext
text/x-wiki
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
{{vi-etym-sino|內戰}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun|cls=cuộc}}
# [[chiến tranh|Chiến tranh]] giữa các [[giai cấp]] hoặc [[lực lượng]] [[xã hội]] [[đối kháng]] trong một [[nước]].
===={{ĐM|trans}}====
{{trans-top|Chiến tranh}}
* {{langname|af}}: {{t+|af|burgeroorlog|s}}
* {{langname|egy}}: {{t-egy|ḏꜣjs|h=DA-i-s-A24}}
* {{langname|sq}}: {{t|sq|luftë civile|f}}
* {{langname|en}}: {{t+|en|civil war}}
* {{langname|ang}}: {{t|ang|inġewinn|n}}
* {{langname|ar}}: {{t|ar|حَرْب أَهْلِيَّة|f}}
* {{langname|arc}}:
*: {{langname|aii}}: {{t|aii|ܩܪܵܒ݂ܵܐ ܡܕܝܼܢܵܝܵܐ|m}}
* {{langname|hy}}: {{t+|hy|քաղաքացիական պատերազմ}}
* {{langname|as}}: {{t|as|গৃহযুদ্ধ}}
* {{langname|ast}}: {{t|ast|guerra civil|f}}
* {{langname|az}}: {{t|az|vətəndaş müharibəsi}}
* {{langname|ba}}: {{t|ba|граждандар һуғышы}}
* {{langname|eu}}: {{t|eu|gerra zibil}}
* {{langname|fa}}:
*: {{langname|fa-ira}}: {{t|fa-ira|جَنْگِ داخِلی}}, {{t|fa-ira|خانِهجَنْگی}}, {{t|fa-ira|جَنْگِ شَهْرْوَنْدی}}
* {{langname|be}}: {{t|be|грамадзя́нская вайна́|f}}
* {{langname|bn}}: {{t+|bn|গৃহযুদ্ধ}}
* {{langname|bg}}: {{t|bg|гра́жданска война́|f}}
* {{langname|bua}}: {{t|bua|эрхэтэнэй дайн}}
* {{langname|ca}}: {{t|ca|guerra civil|f}}
* {{langname|ce}}: {{t|ce|гражданийн тӀом}}
* {{langname|cv}}: {{t|cv|граждан вӑрҫи}}
* {{langname|he}}: {{t|he|מִלְחֶמֶת אֶזְרָחִים|f|tr=milkhémet ezrakhím}}
* {{langname|ug}}: {{t|ug|ئىچكى ئۇرۇش}}
* {{langname|da}}: {{t+|da|borgerkrig|c}}
* {{langname|de}}: {{t+|de|Bürgerkrieg|m}}
* {{langname|myv}}: {{t|myv|потмонь тюрема}}, {{t|myv|кудонь тюрема}}
* {{langname|et}}: {{t|et|kodusõda}}
* {{langname|fo}}: {{t+|fo|borgarakríggj|n}}
* {{langname|gd}}: {{t|gd|cogadh sìobhalta|m}}
* {{langname|gl}}: {{t|gl|guerra civil|f}}
* {{langname|ka}}: {{t|ka|სამოქალაქო ომი}}
* {{langname|gu}}: {{t|gu|આંતરવિગ્રહ}}
* {{langname|nl}}: {{t+|nl|burgeroorlog|m}}, {{t|nl|burgerkrijg|m}}
* {{langname|haw}}: {{t|haw|kaua kūloko}}
* {{langname|hi}}: {{t+|hi|गृहयुद्ध|m}}
* {{langname|hu}}: {{t+|hu|polgárháború}}
* {{langname|el}}: {{t+|el|εμφύλιος πόλεμος|m}}
*: {{langname|grc}}: {{t|grc|[[ἐμφύλιος]] [[πόλεμος]]|m}}
* {{langname|is}}: {{t|is|borgarastyrjöld|f}}, {{t|is|borgarastríð|n}}
* {{langname|id}}: {{t+|id|perang saudara}}
* {{langname|ga}}: {{t|ga|cogadh cathartha|m}}
* {{langname|kn}}: {{t+|kn|ಅಂತಃಕಲಹ}}
* {{langname|kk}}: {{t|kk|азаматтық соғыс}}, {{t|kk|азамат соғысы}}
* {{langname|km}}: {{t|km|សង្គ្រាមក្នុងស្រុក}}
* {{langname|ky}}: {{t|ky|жарандык согуш}}
* {{langname|lo}}: {{t+|lo|ສົງຄາມກາງເມືອງ}}
* {{langname|la}}: {{t|la|bellum cīvīle|n}}, {{t|la|[[bellum]] [[intestīnum]]|n}}
* {{langname|lv}}: {{t|lv|pilsoņu karš|m}}
* {{langname|lt}}: {{t|lt|pilietinis karas|m}}
* {{langname|lb}}: {{t|lb|Biergerkrich|m}}
* {{langname|mk}}: {{t|mk|граѓанска војна|f}}
* {{langname|ms}}: {{t+|ms|perang saudara}}
* {{langname|ml}}: {{t|ml|ആഭ്യന്തരയുദ്ധം}}
* {{langname|mi}}: {{t|mi|kaiākiri}}
* {{langname|mr}}: {{t|mr|यादवी युद्ध}}, {{t|mr|गृहयुद्ध}}
* {{langname|my}}: {{t+|my|ပြည်တွင်းစစ်}}
* {{langname|no}}:
*: {{langname|nb}}: {{t|nb|borgerkrig|m}}
*: {{langname|nn}}: {{t|nn|borgarkrig|m}}
* {{langname|new}}: {{t|new|गृह हताः}}
* {{langname|ja}}: {{t+|ja|内戦|tr=ないせん, naisen}}, {{t+|ja|内乱|tr=ないらん, nairan}}
* {{langname|nrf}}: {{t|nrf|dgèrre civile|f}}
* {{langname|oc}}: {{t|oc|guèrra civila|f}}
* {{langname|os}}: {{t|os|мидхӕст}}
* {{langname|fr}}: {{t+|fr|guerre civile|f}}, {{t|fr|guerre intestine|f}}
* {{langname|fi}}: {{t+|fi|sisällissota}}
* {{langname|eo}}: {{t|eo|enlanda milito}}, {{t|eo|interna milito}}, {{t|eo|intercivitana milito}}, {{t|eo|civila milito}}, {{t|eo|interfrata milito}} {{qualifier|sách vở}}
* {{langname|cs}}: {{t+|cs|občanská válka|f}}
* {{langname|sh}}:
*: Chữ Kirin: {{t|sh|грађански рат|m}}
*: Chữ Latinh: {{t+|sh|građanski rat|m}}
* {{langname|sk}}: {{t|sk|občianska vojna|f}}
* {{langname|sl}}: {{t+|sl|državljanska vojna|f}}
* {{langname|sw}}: {{t|sw|vita vya wenyewe kwa wenyewe}}
* {{langname|tl}}: {{t|tl|digmaang sibil}}, {{t|tl|bayanhing digmaan}}
* {{langname|tg}}: {{t|tg|ҷанги шаҳрвандӣ}}, {{t|tg|ҷанги гражданӣ}}, {{t|tg|чанги дохилӣ}}
* {{langname|ta}}: {{t|ta|உள்நாட்டுப் போர்}}
* {{langname|tt}}: {{t|tt|ватандашлар сугышы}}, {{t|tt|гражданнар сугышы}}
* {{langname|es}}: {{t+|es|guerra civil|f}}
* {{langname|te}}: {{t|te|పౌర యుద్ధం}}
* {{langname|th}}: {{t|th|สงครามกลางเมือง}}
* {{langname|tr}}: {{t+|tr|iç savaş}}
* {{langname|sv}}: {{t+|sv|inbördeskrig|n}}
* {{langname|ko}}: {{t+|ko|내전(內戰)}}, {{t+|ko|내란(內亂)}}
* {{langname|zh}}:
*: {{langname|nan-hbl}}: {{t+|nan-hbl|內戰|tr=lōe-chiàn / lāi-chiàn}}
*: {{langname|yue}}: {{t|yue|內戰|tr=noi6 zin3}}
*: {{langname|cmn}}: {{t+|cmn|內戰|tr=nèizhàn}}, {{t+|cmn|內亂|tr=nèiluàn}}, {{t|cmn|國內戰爭|tr=guónèi zhànzhēng}}, {{t|cmn|內潰|tr=nèikuì}}
* {{langname|tpw}}: {{t|tpw|maramonhanga}}
* {{langname|tk}}: {{t|tk|halk gozgalaňy}}
* {{langname|uk}}: {{t|uk|громадя́нська війна́|f}}
* {{langname|ur}}: {{t|ur|خانَہ جَن٘گی|f}}
* {{langname|uz}}: {{t|uz|fuqarolar urushi}}, {{t|uz|ichki urush}}
* {{langname|cy}}: {{t|cy|rhyfel cartref}}
* {{langname|it}}: {{t+|it|guerra civile|f}}
* {{langname|yi}}: {{t|yi|בירגער קריג|m}}, {{t|yi|בירגער־מלחמה|f|tr=birger milkhome}}, {{t|yi|ציווילע קריג|m}}
{{trans-bottom}}
==={{ĐM|ref}}===
{{R:FVDP}}
{{C|vi|Loại hình chiến tranh}}
69o7ju26dnuyvco3vblkjvt72nmg2x1
2362718
2362693
2026-05-30T22:56:58Z
TheHighFighter2
42988
/* Dịch */
2362718
wikitext
text/x-wiki
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
{{vi-etym-sino|內戰}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun|cls=cuộc}}
# [[chiến tranh|Chiến tranh]] giữa các [[giai cấp]] hoặc [[lực lượng]] [[xã hội]] [[đối kháng]] trong một [[nước]].
===={{ĐM|trans}}====
{{trans-top|Chiến tranh}}
* {{langname|af}}: {{t+|af|burgeroorlog|s}}
* {{langname|egy}}: {{t-egy|ḏꜣjs|h=DA-i-s-A24}}
* {{langname|sq}}: {{t|sq|luftë civile|f}}
* {{langname|en}}: {{t+|en|civil war}}
* {{langname|ang}}: {{t|ang|inġewinn|n}}
* {{langname|ar}}: {{t|ar|حَرْب أَهْلِيَّة|f}}
* {{langname|arc}}:
*: {{langname|aii}}: {{t|aii|ܩܪܵܒ݂ܵܐ ܡܕܝܼܢܵܝܵܐ|m}}
* {{langname|hy}}: {{t+|hy|քաղաքացիական պատերազմ}}
* {{langname|as}}: {{t|as|গৃহযুদ্ধ}}
* {{langname|ast}}: {{t|ast|guerra civil|f}}
* {{langname|az}}: {{t|az|vətəndaş müharibəsi}}
* {{langname|pl}}: {{t+|pl|wojna domowa|f}}
* {{langname|ba}}: {{t|ba|граждандар һуғышы}}
* {{langname|eu}}: {{t|eu|gerra zibil}}
* {{langname|fa}}:
*: {{langname|fa-ira}}: {{t|fa-ira|جَنْگِ داخِلی}}, {{t|fa-ira|خانِهجَنْگی}}, {{t|fa-ira|جَنْگِ شَهْرْوَنْدی}}
* {{langname|be}}: {{t|be|грамадзя́нская вайна́|f}}
* {{langname|bn}}: {{t+|bn|গৃহযুদ্ধ}}
* {{langname|pt}}: {{t+|pt|guerra civil|f}}
* {{langname|bg}}: {{t|bg|гра́жданска война́|f}}
* {{langname|bua}}: {{t|bua|эрхэтэнэй дайн}}
* {{langname|ca}}: {{t|ca|guerra civil|f}}
* {{langname|ce}}: {{t|ce|гражданийн тӀом}}
* {{langname|cv}}: {{t|cv|граждан вӑрҫи}}
* {{langname|he}}: {{t|he|מִלְחֶמֶת אֶזְרָחִים|f|tr=milkhémet ezrakhím}}
* {{langname|ug}}: {{t|ug|ئىچكى ئۇرۇش}}
* {{langname|da}}: {{t+|da|borgerkrig|c}}
* {{langname|de}}: {{t+|de|Bürgerkrieg|m}}
* {{langname|myv}}: {{t|myv|потмонь тюрема}}, {{t|myv|кудонь тюрема}}
* {{langname|et}}: {{t|et|kodusõda}}
* {{langname|fo}}: {{t+|fo|borgarakríggj|n}}
* {{langname|gd}}: {{t|gd|cogadh sìobhalta|m}}
* {{langname|gl}}: {{t|gl|guerra civil|f}}
* {{langname|ka}}: {{t|ka|სამოქალაქო ომი}}
* {{langname|gu}}: {{t|gu|આંતરવિગ્રહ}}
* {{langname|nl}}: {{t+|nl|burgeroorlog|m}}, {{t|nl|burgerkrijg|m}}
* {{langname|haw}}: {{t|haw|kaua kūloko}}
* {{langname|hi}}: {{t+|hi|गृहयुद्ध|m}}
* {{langname|hu}}: {{t+|hu|polgárháború}}
* {{langname|el}}: {{t+|el|εμφύλιος πόλεμος|m}}
*: {{langname|grc}}: {{t|grc|[[ἐμφύλιος]] [[πόλεμος]]|m}}
* {{langname|is}}: {{t|is|borgarastyrjöld|f}}, {{t|is|borgarastríð|n}}
* {{langname|id}}: {{t+|id|perang saudara}}
* {{langname|ga}}: {{t|ga|cogadh cathartha|m}}
* {{langname|kn}}: {{t+|kn|ಅಂತಃಕಲಹ}}
* {{langname|kk}}: {{t|kk|азаматтық соғыс}}, {{t|kk|азамат соғысы}}
* {{langname|km}}: {{t|km|សង្គ្រាមក្នុងស្រុក}}
* {{langname|ky}}: {{t|ky|жарандык согуш}}
* {{langname|lo}}: {{t+|lo|ສົງຄາມກາງເມືອງ}}
* {{langname|la}}: {{t|la|bellum cīvīle|n}}, {{t|la|[[bellum]] [[intestīnum]]|n}}
* {{langname|lv}}: {{t|lv|pilsoņu karš|m}}
* {{langname|lt}}: {{t|lt|pilietinis karas|m}}
* {{langname|lb}}: {{t|lb|Biergerkrich|m}}
* {{langname|mk}}: {{t|mk|граѓанска војна|f}}
* {{langname|ms}}: {{t+|ms|perang saudara}}
* {{langname|ml}}: {{t|ml|ആഭ്യന്തരയുദ്ധം}}
* {{langname|mi}}: {{t|mi|kaiākiri}}
* {{langname|mr}}: {{t|mr|यादवी युद्ध}}, {{t|mr|गृहयुद्ध}}
* {{langname|my}}: {{t+|my|ပြည်တွင်းစစ်}}
* {{langname|no}}:
*: {{langname|nb}}: {{t|nb|borgerkrig|m}}
*: {{langname|nn}}: {{t|nn|borgarkrig|m}}
* {{langname|new}}: {{t|new|गृह हताः}}
* {{langname|ru}}: {{t+|ru|гражда́нская война́|f}}
* {{langname|ja}}: {{t+|ja|内戦|tr=ないせん, naisen}}, {{t+|ja|内乱|tr=ないらん, nairan}}
* {{langname|nrf}}: {{t|nrf|dgèrre civile|f}}
* {{langname|oc}}: {{t|oc|guèrra civila|f}}
* {{langname|os}}: {{t|os|мидхӕст}}
* {{langname|ps}}: {{t|ps|کورنۍ جګړه|f|tr=koranëy jëgëṛa}}
* {{langname|pa}}: {{t|pa|ਖ਼ਾਨਾਜੰਗੀ}}
* {{langname|fr}}: {{t+|fr|guerre civile|f}}, {{t|fr|guerre intestine|f}}
* {{langname|fi}}: {{t+|fi|sisällissota}}
* {{langname|eo}}: {{t|eo|enlanda milito}}, {{t|eo|interna milito}}, {{t|eo|intercivitana milito}}, {{t|eo|civila milito}}, {{t|eo|interfrata milito}} {{qualifier|sách vở}}
* {{langname|ro}}: {{t+|ro|război civil|n}}
* {{langname|cs}}: {{t+|cs|občanská válka|f}}
* {{langname|sh}}:
*: Chữ Kirin: {{t|sh|грађански рат|m}}
*: Chữ Latinh: {{t+|sh|građanski rat|m}}
* {{langname|sk}}: {{t|sk|občianska vojna|f}}
* {{langname|sl}}: {{t+|sl|državljanska vojna|f}}
* {{langname|sw}}: {{t|sw|vita vya wenyewe kwa wenyewe}}
* {{langname|tl}}: {{t|tl|digmaang sibil}}, {{t|tl|bayanhing digmaan}}
* {{langname|tg}}: {{t|tg|ҷанги шаҳрвандӣ}}, {{t|tg|ҷанги гражданӣ}}, {{t|tg|чанги дохилӣ}}
* {{langname|ta}}: {{t|ta|உள்நாட்டுப் போர்}}
* {{langname|tt}}: {{t|tt|ватандашлар сугышы}}, {{t|tt|гражданнар сугышы}}
* {{langname|es}}: {{t+|es|guerra civil|f}}
* {{langname|te}}: {{t|te|పౌర యుద్ధం}}
* {{langname|th}}: {{t|th|สงครามกลางเมือง}}
* {{langname|tr}}: {{t+|tr|iç savaş}}
* {{langname|sv}}: {{t+|sv|inbördeskrig|n}}
* {{langname|ko}}: {{t+|ko|내전(內戰)}}, {{t+|ko|내란(內亂)}}
* {{langname|zh}}:
*: {{langname|nan-hbl}}: {{t+|nan-hbl|內戰|tr=lōe-chiàn / lāi-chiàn}}
*: {{langname|yue}}: {{t|yue|內戰|tr=noi6 zin3}}
*: {{langname|cmn}}: {{t+|cmn|內戰|tr=nèizhàn}}, {{t+|cmn|內亂|tr=nèiluàn}}, {{t|cmn|國內戰爭|tr=guónèi zhànzhēng}}, {{t|cmn|內潰|tr=nèikuì}}
* {{langname|tpw}}: {{t|tpw|maramonhanga}}
* {{langname|tk}}: {{t|tk|halk gozgalaňy}}
* {{langname|uk}}: {{t|uk|громадя́нська війна́|f}}
* {{langname|ur}}: {{t|ur|خانَہ جَن٘گی|f}}
* {{langname|uz}}: {{t|uz|fuqarolar urushi}}, {{t|uz|ichki urush}}
* {{langname|cy}}: {{t|cy|rhyfel cartref}}
* {{langname|it}}: {{t+|it|guerra civile|f}}
* {{langname|yi}}: {{t|yi|בירגער קריג|m}}, {{t|yi|בירגער־מלחמה|f|tr=birger milkhome}}, {{t|yi|ציווילע קריג|m}}
{{trans-bottom}}
==={{ĐM|ref}}===
{{R:FVDP}}
{{C|vi|Loại hình chiến tranh}}
icyltqzi1b3bez9625hi6ooqek2aeqj
đêm
0
30394
2362899
2275988
2026-05-31T06:24:54Z
Trong Dang
52461
/* */
2362899
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*teːm||đêm}}, có thể từ {{inh|vi|mkh-pro|*btɔm}}. Cùng gốc với {{cog|mtq|têm}}, {{cog|tou|-}} [Cuối Chăm] ''teːm¹''. So sánh với {{cog|sza|petom}}, {{cog|mnw|ဗ္တံ}}, {{cog|kjg|-}} [Cuang] ''psɨəm'', {{cog|ril|-}} [Lang] ''sɔm¹''.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[𣎀]]: [[đêm]]
*[[𠶧]]: [[đêm]]
*[[]]: [[đêm]]
*[[胋]]: [[đêm]]
*[[𡖵]]: [[đêm]]
{{mid}}
*[[𣈔]]: [[đêm]]
*[[店]]: [[đêm]], [[điếm]], [[điệm]], [[xóm]], [[tiệm]], [[đám]]
*[[𣈘]]: [[đêm]]
*[[點]]: [[đém]], [[chấm]], [[đúm]], [[chúm]], [[chuốm]], [[đêm]], [[đóm]], [[điểm]], [[đếm]]
{{bottom}}
{{-paro-}}
:* [[đệm]]
:* [[đếm]]
:* [[đem]]
{{-noun-}}
'''đêm'''
# {{term|Khoảng thời gian}} [[khoảng|Khoảng]] [[thời gian]] [[từ]] khi [[mặt trời]] [[lặn]] [[hẳn]] [[đến]] khi [[mặt trời]] [[mọc]].
#: ''Thức lâu mới biết '''đêm''' dài. ([[ca dao]])''
#: ''Ngày '''đêm''' anh dũng chiến đấu.''
#: ''Ban '''đêm'''.''
# {{term|Buổi}} [[khoảng|Khoảng]] [[thời gian]] [[từ]] quá buổi [[tối]] đến 0 giờ hôm sau.
#: ''Làm việc vào buổi '''đêm'''.''
#: ''Khóc suốt '''đêm'''.''
# {{term|Thường dùng sau những tổ hợp chỉ đơn vị giờ}} [[khoảng|Khoảng]] [[thời gian]] từ 9 giờ tối đến trước 1 giờ sáng.
#: ''Tối đi chơi, mãi '''đêm''' mới về.''
#: ''Bây giờ là mười một giờ '''đêm'''.''
{{-trans-}}
{{đầu}}
:* {{en}}: [[night]]
:* {{de}}: [[Nacht]]
:* {{rhg}}: [[rait]]
{{cuối}}
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Danh từ tiếng Việt]]
hh4r54xrrt56pxa5gurob9tqjtx2spi
chải
0
30729
2362897
2274969
2026-05-31T06:20:33Z
Trong Dang
52461
/* */
2362897
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*caːs||chải}}, từ {{inh|vi|aav-pro|*caːɕ||chải}}. So sánh thêm với {{cog|lbo|-}} ''cas'', {{cog|crw|-}} ''saːs'', {{cog|ngt|-}} ''caːjh''.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[豸]]: [[dãi]], [[trễ]], [[sải]], [[chải]], [[chạy]], [[giại]], [[trãi]], [[trĩ]], [[giải]], [[chậy]], [[trải]], [[trại]], [[giãi]], [[trỉ]]
*[[𦃀]]: [[chải]]
{{mid}}
*[[扯]]: [[chải]], [[xé]], [[giẫy]], [[xới]], [[xả]], [[xẻ]], [[xởi]], [[chỉ]], [[chẻ]], [[trải]]
*[[𣦆]]: [[chải]], [[trải]]
{{bottom}}
{{-paro-}}
:* [[chài]]
:* [[chai]]
{{-verb-}}
'''chải'''
# Làm cho [[sạch]], [[mượt]], [[bằng]] [[lược]] hoặc [[bàn chải]].
#: '''''Chải''' tóc.''
#: '''''Chải''' sợi.''
#: '''''Chải''' áo dạ.''
#: '''''Chải''' sâu (chải cho hết sâu bám vào thân hoặc lá cây).''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Động từ tiếng Việt]]
rhoi5xaji4tnxeluxy0zwf6awr2yhj2
gặt
0
31173
2362901
2199832
2026-05-31T06:30:04Z
Trong Dang
52461
/* */
2362901
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*-kac}}, từ {{inh|vi|aav-pro|*kacˀ||hái, gặt}}. {{doublet|vi|cắt}}.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[𥢫]]: [[gặt]]
*[[𥝎]]: [[gặt]]
*[[𢵷]]: [[cắt]], [[gặt]]
{{mid}}
*[[𠟸]]: [[gặt]]
*[[秸]]: [[kiết]], [[gặt]], [[giai]]
*[[拮]]: [[cật]], [[cắt]], [[cất]], [[kiết]], [[gặt]], [[kít]], [[két]], [[gật]]
{{bottom}}
{{-paro-}}
:* {{l|vi|gắt}}
:* {{l|vi|gạt}}
:* {{l|vi|gật}}
{{-verb-}}
{{vie-verb}}
# [[cắt|Cắt]] [[lúa]] [[chín]] để [[thu hoạch]].
#: {{ux|vi|Mùa '''gặt'''.}}
#: {{ux|vi|Cánh đồng đã '''gặt''' xong.}}
#: {{ux|vi|Gieo gió '''gặt''' bão.}}
{{-reference-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
ld7tgo15tl4z807cjnxv1f71w9by4p4
hái
0
31250
2362900
2230908
2026-05-31T06:29:01Z
Trong Dang
52461
/* */
2362900
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*haːrʔ}}.
{{-pron-}}
{{vie-pron}}
{{-hanviet-}}
{{top}}
*[[噧]]: [[hái]]
*[[妎]]: [[hái]], [[chung]]
{{bottom}}
{{-nôm-}}
{{top}}
*[[採]]: [[thái]], [[thăm]], [[táy]], [[hái]], [[xái]]
*[[𢲨]]: [[hái]], [[hẩy]]
*[[𦷫]]: [[hái]]
{{mid}}
*[[妎]]: [[hái]]
*[[挴]]: [[mói]], [[mỗi]], [[hái]]
*[[𨨫]]: [[hái]]
{{bottom}}
{{-paro-}}
{{đầu}}
:* [[hãi]]
:* [[hai]]
{{giữa}}
:* [[hài]]
:* [[hại]]
{{cuối}}
{{-noun-}}
{{vie-noun}}
# [[nông cụ|Nông cụ]] [[gồm]] một [[lưỡi]] [[thép]] có [[răng]] [[gắn]] vào [[thanh]] [[gỗ]] hay [[tre]] có [[móc]] [[dài]], dùng để [[gặt]] [[lúa]].
{{-verb-}}
{{vie-verb}}
# Dùng [[tay]] làm cho [[hoa]], [[quả]], [[lá]], [[cành]] [[đứt]] [[lìa]] [[khỏi]] [[cây]] để [[lấy]] về.
#: '''''Hái''' rau.''
#: '''''Hái''' củi.''
#: '''''Hái''' ra tiền (kng. ; kiếm được nhiều tiền một cách dễ dàng).''
#: ''Ngày xuân đi '''hái''' lộc.''
#: ''Có gieo thì có '''hái''' ([[tục ngữ]]).''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
abgz4vhejj11yj5senjvxkg3ak95mpb
tăng ni
0
33681
2362918
2159306
2026-05-31T07:01:28Z
Trong Dang
52461
/* */
2362918
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|僧尼}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''tăng ni'''
# [[các|Các]] [[nhà sư]], [[nam]] và [[nữ]] (nói tổng quát).
#: ''Các '''tăng ni''', phật tử.''
{{-trans-}}
# {{en}}: Buddhist monks and nuns
# {{san}}:
# {{zh}}: 僧尼
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
a9rhg3a3v9sya1degoecu2ighmg4h9x
âm dương
0
33910
2362921
1948595
2026-05-31T07:04:06Z
Trong Dang
52461
/* */
2362921
wikitext
text/x-wiki
{{-vie-}}
{{-info-}}
[[Hình:Yin yang.svg|thumb|âm dương]]
{{-etym-}}
{{vi-etym-sino|陰陽}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''âm dương'''
# [[âm|Âm]] và [[dương]], [[hai mặt]] [[đối lập]] [[nhau]], như [[đêm]] với [[ngày]], [[chết]] với [[sống]], v.v.
#: '''''Âm dương''' đôi ngả (kẻ chết, người sống).''
#: '''''Âm dương''' cách biệt.''
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
dw2z8vjzgjbpw0ge69orwtizh4nuzpr
chimiothérapie
0
40163
2362686
1811253
2026-05-30T14:13:54Z
Kelly zhrm
58416
2362686
wikitext
text/x-wiki
=={{langname|fr}}==
==={{ĐM|etym}}===
{{ety|fr|:af|chimio-|thérapie}}
Từ {{affix|fr|chimio-|thérapie}}.
==={{ĐM|pron}}===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-Pamputt-chimiothérapie.wav|a=Brétigny-sur-Orge}}
* {{audio|fr|LL-Q150 (fra)-Bananax47-chimiothérapie.wav|a=Agen}}
==={{ĐM|n}}===
{{fr-noun|f}}
# [[hóa trị|Hóa trị]].
==={{ĐM|ref}}===
{{R:FVDP|db=fv}}
==={{ĐM|further}}===
* {{R:fr:TLFi}}
{{C|fr|Ung thư học}}
rplvlmu46prytritqvfh8n0ee5k888r
xin
0
48421
2362798
2358145
2026-05-31T02:35:35Z
Hiyuune
50834
2362798
wikitext
text/x-wiki
{{also|Xin|xīn|xín|xǐn|xìn}}
=={{langname|mul}}==
==={{section|symbol}}===
{{mul-symbol}}
# {{ISO 639|3}}
=={{langname|vi}}==
==={{section|pron}}===
{{vi-pron}}
==={{section|v}}====
{{vi-verb|[[嗔]], [[吀]]}}
# [[tỏ ý|Tỏ ý]] [[muốn]] [[người]] khác cho cái gì hoặc [[cho phép]] làm [[điều]] gì.
#: {{ux|vi|'''Xin''' tiền.}}
#: {{ux|vi|'''Xin''' nghỉ học.}}
#: {{ux|vi|'''Xin''' phát biểu.}}
# {{lb|vi|honorific|humble}} [[từ|Từ]] dùng [[đầu]] [[lời]] [[yêu cầu]], lời [[mời mọc]], [[tỏ ý]] [[lịch sự]], [[khiêm nhường]].
#: {{ux|vi|'''Xin''' đến đúng giờ.}}
#: {{ux|vi|'''Xin''' tự giới thiệu.}}
#: {{ux|vi|'''Xin''' trân trọng cảm tạ.}}
===={{section|drv}}====
{{col|vi|ăn xin|cầu xin|cưới xin|nài xin|van xin|xin âm dương|xin chào|xin đểu|xin đi đằng đầu|xin đủ|xin lỗi|xin quẻ|xin xỏ}}
===={{section|see}}====
* {{l|vi|làm ơn}}
==={{section|ref}}===
* {{R:FVDP}}
* {{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|aa}}==
==={{section|etym}}===
Từ {{mention|aa|xiiné||ngủ}}. Giống như {{cog|ssy|dhin}}.
==={{section|pron}}===
* {{aa-IPA|xín}}
==={{section|n}}===
{{aa-noun|xín|g=m}}
# [[giấc ngủ|Giấc ngủ]].
===={{section|decl}}====
{{aa-decl|xín|xíini|xintí}}
==={{section|v}}===
{{head|aa|Biến thể hình thái động từ|head=xín}}
# {{inflection of|aa|xiiné||imp|sg}}
==={{section|ref}}===
* {{R:aa:Parker:1985|+}}
* {{R:aa:Hassan Kamil:2015}}
=={{langname|cmn}}==
==={{section|rom}}===
{{cmn-pinyin|notr=1}}
# {{nonstandard spelling of|cmn|sc=Latn|xīn}}
# {{nonstandard spelling of|cmn|sc=Latn|xín}}
# {{nonstandard spelling of|cmn|sc=Latn|xǐn}}
# {{nonstandard spelling of|cmn|sc=Latn|xìn}}
=={{langname|sce}}==
==={{section|n}}===
{{head|sce|Danh từ}}
# [[sự|Sự]] [[kiên nhẫn]].
jm4cjwguiwn02z0i8lr0qd5mzbo27ww
2362895
2362798
2026-05-31T05:39:58Z
Trong Dang
52461
/* Động từ */
2362895
wikitext
text/x-wiki
{{also|Xin|xīn|xín|xǐn|xìn}}
=={{langname|mul}}==
==={{section|symbol}}===
{{mul-symbol}}
# {{ISO 639|3}}
=={{langname|vi}}==
==={{section|pron}}===
{{vi-pron}}
==={{section|v}}===
{{vi-verb|[[嗔]], [[吀]]}}
# [[tỏ ý|Tỏ ý]] [[muốn]] [[người]] khác cho cái gì hoặc [[cho phép]] làm [[điều]] gì.
#: {{ux|vi|'''Xin''' tiền.}}
#: {{ux|vi|'''Xin''' nghỉ học.}}
#: {{ux|vi|'''Xin''' phát biểu.}}
# {{lb|vi|honorific|humble}} [[từ|Từ]] dùng [[đầu]] [[lời]] [[yêu cầu]], lời [[mời mọc]], [[tỏ ý]] [[lịch sự]], [[khiêm nhường]].
#: {{ux|vi|'''Xin''' đến đúng giờ.}}
#: {{ux|vi|'''Xin''' tự giới thiệu.}}
#: {{ux|vi|'''Xin''' trân trọng cảm tạ.}}
===={{section|drv}}====
{{col|vi|ăn xin|cầu xin|cưới xin|nài xin|van xin|xin âm dương|xin chào|xin đểu|xin đi đằng đầu|xin đủ|xin lỗi|xin quẻ|xin xỏ}}
===={{section|see}}====
* {{l|vi|làm ơn}}
==={{section|ref}}===
* {{R:FVDP}}
* {{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|aa}}==
==={{section|etym}}===
Từ {{mention|aa|xiiné||ngủ}}. Giống như {{cog|ssy|dhin}}.
==={{section|pron}}===
* {{aa-IPA|xín}}
==={{section|n}}===
{{aa-noun|xín|g=m}}
# [[giấc ngủ|Giấc ngủ]].
===={{section|decl}}====
{{aa-decl|xín|xíini|xintí}}
==={{section|v}}===
{{head|aa|Biến thể hình thái động từ|head=xín}}
# {{inflection of|aa|xiiné||imp|sg}}
==={{section|ref}}===
* {{R:aa:Parker:1985|+}}
* {{R:aa:Hassan Kamil:2015}}
=={{langname|cmn}}==
==={{section|rom}}===
{{cmn-pinyin|notr=1}}
# {{nonstandard spelling of|cmn|sc=Latn|xīn}}
# {{nonstandard spelling of|cmn|sc=Latn|xín}}
# {{nonstandard spelling of|cmn|sc=Latn|xǐn}}
# {{nonstandard spelling of|cmn|sc=Latn|xìn}}
=={{langname|sce}}==
==={{section|n}}===
{{head|sce|Danh từ}}
# [[sự|Sự]] [[kiên nhẫn]].
0no2q5cpryoxog78uuwqynre0qwnvko
công an
0
92129
2362912
2360436
2026-05-31T06:58:14Z
TheHighFighter2
42988
/* */
2362912
wikitext
text/x-wiki
=={{langname|vi}}==
{{swp|+ nhân dân Việt Nam}}
==={{ĐM|etym}}===
{{vi-etym-sino|公|việc chung|安|yên ổn}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# [[cơ quan|Cơ quan]] [[nhà nước]] chuyên [[giữ gìn]] [[trật tự]], [[an ninh]] [[chung]].
#: {{ux|vi|Đồn '''công an'''.}}
#: {{ux|vi|Ngành '''công an'''.}}
# {{nhãn|vi|khẩu ngữ}} [[nhân viên|Nhân viên]] [[công an]].
#: {{ux|vi|Nhờ '''công an''' chỉ đường.}}
===={{ĐM|usage}}====
* Trong khi từ ''công an'' được dùng để chỉ lực lượng thực thi pháp luật tại Cộng hòa Xã hội chủ nghĩa Việt Nam, thì các cơ quan tương đương bên ngoài Việt Nam và Cộng hòa Nhân dân Trung Hoa thường được gọi là {{mention|vi|cảnh sát}}. Từ ''cảnh sát'' cũng được dùng để chỉ các nhánh khác nhau của lực lượng này tại Việt Nam.
===={{ĐM|trans}}====
{{trans-top|Cơ quan nhà nước chuyên giữ gìn trật tự, an ninh chung}}
* {{langname|en}}: {{t+|en|public security}}
* {{langname|fr}}: {{t|fr|sécurité publique|f}}
* {{langname|es}}: {{t|es|seguridad pública|f}}
* {{langname|zh}}:
*: {{langname|cmn}}: {{t+|cmn|公安|tr=gōng'ān}}
{{trans-bottom}}
{{trans-top|Nhân viên công an}}
* {{langname|en}}: {{t|en|[[public security]] [[officer]]}}
* {{langname|zh}}:
*: {{langname|cmn}}: {{t+|cmn|公安|tr=gōng'ān}}
{{trans-bottom}}
===={{ĐM|desc}}====
* {{desc|km|កុងអាន|bor=1}}
===={{ĐM|see}}====
* {{vi-l|cảnh sát}}
* {{vi-l|sen đầm}}
* {{vi-l|cảnh}}; {{vi-l|cớm}}; {{vi-l|ông can}}
* {{vi-l|an ninh}}
* {{vi-l|bảo an}}
* {{vi-l|cảnh vệ}}
==={{ĐM|ref}}===
{{R:FVDP}}
=={{langname|tyz}}==
==={{ĐM|etymology}}===
Mượn từ {{bor|tyz|vi|công an}}.
==={{ĐM|pron}}===
{{tyz-IPA}}
==={{ĐM|noun}}===
{{tyz-noun}}
# [[#Tiếng Việt|Công an]].
==={{ĐM|ref}}===
* {{R:Lương Bèn}}
q7azhb1g4uug2bnckilvw0ooh6q4x8f
mốt
0
92848
2362717
2358299
2026-05-30T17:11:42Z
Kateru Zakuro
34522
2362717
wikitext
text/x-wiki
{{-vie-}}
{{-pron-}}
{{vie-pron}}
{{-etymology-}}
; kiểu theo thời trang, [[#Tính từ|tính từ]]
: {{etym|lang=vie|from=
* [[fra:mode]]
}}
{{-nôm-}}
{{top}}
*[[没]]: [[mịt]], [[mốt]], [[một]]
*[[蔑]]: [[vạt]], [[mốt]], [[một]], [[miết]], [[mệt]], [[miệt]], [[mít]]
{{mid}}
*[[𣋻]]: [[mịt]], [[mốt]]
*[[沒]]: [[mốt]], [[một]]
{{bottom}}
{{-paro-}}
:* [[mót]]
:* [[mọt]]
:* [[một]]
{{-noun-}}
{{pn}}
# {{@|địa phương}} [[ngày|Ngày]] [[ba]].
#: ''Mai làm tốt, '''mốt''' đui. ([[tục ngữ]])''
# [[kiểu|Kiểu]] theo [[thời trang]].
#: ''Ăn mặc theo '''mốt''' mới.''
# Một ngày nào đó trong tương lai, chưa biết là ngày nào và chưa xác định được
{{-adj-}}
{{pn}}
# Đúng theo thời trang, [[thời thượng]].
#: ''Như thế mới '''mốt''' chứ!''
{{-num-}}
{{pn}}
# Từ đặt sau các [[số chẵn]] [[tỏ]] thêm một [[đơn vị]] [[tiếp theo]].
#: ''Hai mươi '''mốt''''' (21).
#: ''Một trăm '''mốt'''.''
#: ''Một vạn '''mốt'''.''
#: ''Một mét '''mốt'''.''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Danh từ tiếng Việt]]
[[Thể loại:Tính từ tiếng Việt]]
[[Thể loại:Số tiếng Việt]]
mjouv2uqd3kpoqsby4r8rloyuj856sb
ngay
0
92867
2362905
2357799
2026-05-31T06:46:07Z
Trong Dang
52461
/* */
2362905
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*t-ŋar||ngay}}. Cùng gốc với {{cog|mtq|-}} Bi {{mention|mtq|ngăl}}, {{cog|scb|-}} [Rục] ''təŋal¹''.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[𣦍]]: [[ngay]], [[ngây]]
*[[]]: [[ngay]]
{{bottom}}
{{-paro-}}
{{đầu}}
:* [[ngày]]
:* [[ngây]]
:* [[ngấy]]
{{giữa}}
:* [[ngáy]]
:* [[ngầy]]
:* [[ngậy]]
{{cuối}}
{{-adv-}}
'''ngay'''
# [[tiếp liền|Tiếp liền]] sau đó.
#: ''Đi '''ngay''' kẻo muộn.''
#: ''Lời '''ngay'''.''
# [[trt|Trt]].
# [[từ|Từ]] [[biểu thị]] ý [[nhấn mạnh]] đúng vào [[thời gian]] địa điểm [[xác]] định.
#: ''Nhà '''ngay''' mặt đường.''
#: '''''Ngay''' chiều nay sẽ chuyển.''
# [[từ|Từ]] dùng để [[nhấn mạnh]] [[mức độ]] của [[sự việc]] [[nêu]] [[ra]].
#: '''''Ngay''' cả.''
#: ''Tết cũng không được nghỉ .''
#: ''Sinh viên gì mà '''ngay''' bài tập về nhà cũng không chịu làm .''
#: '''''Ngay''' thư nó cũng không chịu viết .''
#: ''Nó tệ với '''ngay''' cả bố nó.''
{{-adj-}}
'''ngay'''
# {{like-entry|thẳng}}
#: ''Đứng '''ngay''' .''
#: ''Cây '''ngay''' không sợ chết đứng. ([[tục ngữ]])''
# [[thẳng|Thẳng]] đừ, [[khó]] [[cử]] động hoặc không [[cử]] động được.
#: '''''Ngay''' như khúc gỗ.''
#: '''''Ngay''' như tượng.''
# [[thật thà|Thật thà]], không gian dối.
#: ''Tấm lòng '''ngay'''.''
#: ''Kẻ gian người '''ngay'''.''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Phó từ tiếng Việt]]
[[Thể loại:Tính từ tiếng Việt]]
{{-hal-}}
{{-noun-}}
{{head|hal|Danh từ}}
# [[ngày]].
=={{langname|cmo}}==
==={{ĐM|adj}}===
{{head|cmo|Tính từ}}
# [[xa]].
{{-aav-qal-}}
{{-noun-}}
{{pn}}
# [[mặt trời]].
[[Thể loại:Danh từ tiếng Quảng Lâm]]
{{-tyz-}}
{{-pron-}}
{{tyz-IPA}}
{{-adv-}}
{{pn}}
# [[ngay#Tiếng Việt|ngay]].
#:{{ux|tyz|pây '''ngay'''|đi '''ngay'''|inline=1}}
{{-adj-}}
{{pn}}
# [[ngay thẳng]], [[hiền lành]].
{{-ref-}}
{{R:Lương Bèn}}
{{catname|Phó từ|tiếng Tày}}
{{catname|Tính từ|tiếng Tày}}
imspu9bn4asjjivwjrekfbu5ovcg3u1
dày
0
93882
2362898
2361866
2026-05-31T06:22:34Z
Trong Dang
52461
/* */
2362898
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*k-daj}}. Cùng gốc với {{cog|mtq|-}} Bi {{mention|mtq|tày}}.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[𠫅]]: [[đầy]], [[dầy]], [[dây]], [[dày]]
*[[𠫆]]: [[giày]], [[đầy]], [[giầy]], [[dầy]], [[dây]], [[dày]]
*[[𠼪]]: [[giày]], [[dầy]], [[dày]]
{{mid}}
*[[𣹓]]: [[đầy]], [[đày]], [[dày]]
*[[苔]]: [[đầy]], [[dầy]], [[thai]], [[đày]], [[đài]], [[dây]], [[dày]]
*[[]]: [[đầy]], [[dầy]], [[đày]], [[dày]]
{{bottom}}
{{-paro-}}
{{đầu}}
:* [[đáy]]
:* [[đay]]
:* [[dấy]]
:* [[dạy]]
:* [[day]]
:* [[đầy]]
:* [[đẫy]]
:* [[đậy]]
{{giữa}}
:* [[đày]]
:* [[dậy]]
:* [[dây]]
:* [[dãy]]
:* [[đây]]
:* [[đẩy]]
:* [[đấy]]
{{cuối}}
{{-adj-}}
'''dày'''
# {{term|Vật hình khối}} Có [[khoảng cách]] bao nhiêu đó giữa [[hai mặt]] đối [[nhau]], theo [[chiều]] có [[kích thước]] nhỏ [[nhất]] (gọi là bề dày) của [[vật]].
#: ''Tấm ván dài 2 mét, rộng 0,5 mét, '''dày''' 2 centimet.''
# Có [[bề]] [[dày]] lớn [[hơn]] [[mức]] [[bình thường]] hoặc lớn [[hơn]] [[so với]] [[những]] [[vật]] khác.
#: ''Vỏ quýt '''dày''' có móng tay nhọn ([[tục ngữ]]).''
#: ''Chiếc áo bông '''dày''' cộm.''
#: ''Tường xây rất '''dày'''.''
# Có [[tương]] đối nhiều [[đơn vị]] hoặc nhiều [[thành tố]] [[sát]] vào [[nhau]].
#: ''Mái tóc '''dày'''.''
#: ''Cấy '''dày'''.''
#: ''Sương mù '''dày'''.''
# Nhiều, [[do]] được [[tích]] [[luỹ]] [[liên tục]] trong [[quá trình]] [[lâu dài]] (nói về yếu tố tinh thần).
#: '''''Dày''' kinh nghiệm.''
#: '''''Dày''' công luyện tập.''
#: ''Ơn sâu, nghĩa '''dày'''.''
{{-see also-}}
* [[giày]]
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Tính từ tiếng Việt]]
{{-tyz-}}
{{-pron-}}
{{tyz-IPA}}
{{-adj-}}
{{pn}}
# [[xấu]], [[kém]].
# [[yếu]].
{{-ref-}}
{{R:Lương Bèn}}
{{catname|Tính từ|tiếng Tày}}
1idl6ta62js9jmxgizqpzabdsters8e
bó
0
95471
2362896
2274321
2026-05-31T06:18:05Z
Trong Dang
52461
/* */
2362896
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{inh|vi|mkh-vie-pro|*pɔːʔ}}. Cùng gốc với {{cog|nuo|pỏ}}, {{cog|aem|-}} ''pɑːˀ''.
{{-pron-}}
{{vie-pron}}
{{-nôm-}}
{{top}}
*[[𣔩]]: [[bó]]
*[[咘]]: [[bó]], [[bú]], [[vú]]
*[[抪]]: [[bó]], [[phô]]
{{mid}}
*[[補]]: [[bủa]], [[vỏ]], [[bù]], [[bỏ]], [[bổ]], [[bồ]], [[bõ]], [[bò]], [[bó]]
*[[𥿠]]: [[bủa]], [[bố]], [[bó]], [[vó]]
{{bottom}}
{{-paro-}}
{{đầu}}
:* [[bộ]]
:* [[bổ]]
:* [[bô]]
:* [[bõ]]
:* [[bỏ]]
:* [[Bo]]
:* [[bờ]]
:* [[bợ]]
{{giữa}}
:* [[bố]]
:* [[bồ]]
:* [[bọ]]
:* [[bõ]]
:* [[bò]]
:* [[bơ]]
:* [[bở]]
{{cuối}}
{{-noun-}}
'''bó'''
# [[toàn bộ|Toàn bộ]] [[nói chung]] những [[vật]] [[rời]] được lại [[với nhau]].
#: ''Một '''bó''' hoa.''
#: '''''Bó''' đuốc.''
{{-verb-}}
'''bó'''
# Làm cho nhiều [[vật]] [[rời]] được [[giữ]] [[chặt]] lại [[với nhau]] bằng [[dây buộc]].
#: ''Lúa đã '''bó''' xong.''
# [[bọc|Bọc]] [[chặt]].
#: ''Chiếc áo '''bó''' sát lấy thân.''
# [[buộc|Buộc]] và [[cố định]] [[chỗ]] [[xương]] bị [[gãy]].
#: '''''Bó''' bột (thạch cao).''
# {{@|kết hợp hạn chế}} [[bao|Bao]] thành một [[vành]] [[xung quanh]].
#: ''Hàng gạch '''bó''' hè.''
#: ''Thềm nhà '''bó''' đá.''
# [[giữ lại|Giữ lại]], [[kìm]] lại trong [[phạm vi]] [[chật hẹp]], không cho [[tự do]] [[hoạt động]].
#: ''Cái khó '''bó''' cái khôn.'' (tục ngữ)
#: '''''Bó''' cẳng.''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Danh từ tiếng Việt]]
[[Thể loại:Động từ tiếng Việt]]
{{-tyz-}}
{{-pron-}}
{{tyz-IPA}}
{{-noun-}}
{{pn}}
# [[nguồn]] [[nước]].
# [[mỏ]].
# [[giếng]].
{{-ref-}}
* {{R:Lương Bèn}}
{{catname|Danh từ|tiếng Tày}}
mzqrsv7lvtubpb2u06f4rd455nr6hz0
fossilology
0
123131
2362695
2362575
2026-05-30T14:41:55Z
TheHighFighter2
42988
/* Tiếng Anh */
2362695
wikitext
text/x-wiki
=={{langname|en}}==
==={{đm|etym}}===
{{ety|en|:af|fossil|-ology|text=+|tree=1}}
==={{đm|n}}===
{{en-noun|-}}
# [[hoá thạch học|Hoá thạch học]].
===={{đm|syn}}====
* [[fossilogy]]
==={{ĐM|ref}}===
{{R:FVDP|db=ev}}
mejokb6886o4vyubj5s2kh53goaoiac
ba hoa
0
129900
2362939
2165428
2026-05-31T07:56:07Z
Trong Dang
52461
/* */
2362939
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
Từ {{bor|vi|fr|bavard}}.
{{-pron-}}
{{vie-pron}}
{{-verb-}}
'''ba hoa'''
# {{term|Tt.}} [[nói|Nói]] nhiều, [[phóng]] đại quá [[sự thật]], có ý [[khoe khoang]].
#: ''Nó chỉ '''ba hoa''' thế thôi chứ có biết gì đâu.''
#: ''Ăn nói '''ba hoa''' một tấc lên trời.''
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Động từ tiếng Việt]]
7qzsjzx7tsnizjzs90zco1kmwj9fn9d
thưởng thức
0
143093
2362947
2015837
2026-05-31T08:21:16Z
Trong Dang
52461
/* */
2362947
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|賞識}}.
{{-pron-}}
{{vie-pron}}
{{-paro-}}
:* [[thương thực]]
:* [[thường thức]]
{{-verb-}}
'''thưởng thức'''
# [[xem|Xem]] để [[hưởng]] cái [[hay]], cái [[đẹp]].
#: '''''Thưởng thức''' thơ nôm cổ.''
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Động từ tiếng Việt]]
qe7eyv6em1dklt92sfg5kruscbjmoo6
sư phụ
0
143293
2362919
2007123
2026-05-31T07:02:17Z
Trong Dang
52461
/* */
2362919
wikitext
text/x-wiki
{{-vie-}}
{{-info-}}
{{-etym-}}
{{vi-etym-sino|師父}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''sư phụ'''
# [[từ|Từ]] [[người]] đi [[học]] [[tôn xưng]] [[thầy học]] của [[mình]] (cũ). Thường thì được dùng để gọi [[thầy giáo]] [[dạy]] [[võ]]
{{-trans-}}
* {{eng}}: [[master]]
* {{zh}}: [[师傅]]
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
582t5yn4osomj4cf4qvrmc01lpyn5jj
sư đệ
0
143296
2362916
1926057
2026-05-31T07:00:44Z
Trong Dang
52461
/* */
2362916
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|師弟}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''sư đệ'''
# [[thầy trò|Thầy trò]].
#: ''Tình '''sư đệ'''.''
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
sez7670xp8zy55hqf6h359uvo7o1pvx
tửu quán
0
192463
2362910
2019093
2026-05-31T06:56:46Z
Trong Dang
52461
/* */
2362910
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|酒館}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''tửu quán'''
# [[quán|Quán]] [[bán]] [[rượu]] và đồ [[nhắm]].
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
52t8szyque9hc10p1qeq9imudq4hy4l
tế lễ
0
192841
2362909
2016618
2026-05-31T06:55:56Z
Trong Dang
52461
/* */
2362909
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|祭禮}}.
{{-pron-}}
{{vie-pron}}
{{-paro-}}
:* [[Tề Lễ]]
{{-verb-}}
'''tế lễ'''
# [[cúng bái|Cúng bái]] [[nói chung]].
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Động từ tiếng Việt]]
3ivjlntl15g3b82cj3u7jxvi0lw7qz3
khốn đốn
0
193436
2362936
1864361
2026-05-31T07:48:20Z
Trong Dang
52461
/* */
2362936
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|困頓}}.
{{-pron-}}
{{vie-pron}}
{{-adv-}}
'''khốn đốn'''
# [[cùng khổ|Cùng khổ]], [[khó khăn]].
#: ''Làm công '''khốn đốn''' lắm mới kiếm được hai bữa ăn.''
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Phó từ tiếng Việt]]
9i1it1us3qen53qmmejt2pkz5atg2jm
truyền đạt
0
194595
2362929
2202479
2026-05-31T07:16:25Z
Trong Dang
52461
/* Tiếng Việt */
2362929
wikitext
text/x-wiki
== {{langname|vi}} ==
=== {{ĐM|etym}} ===
{{vi-etym-sino|傳達}}.
=== {{ĐM|pron}} ===
{{vie-pron}}
=== {{ĐM|verb}} ===
{{vie-verb}}
# [[báo|Báo]] cho mọi người [[biết]].
#: {{ux|vi|'''Truyền đạt''' một chỉ thị của cấp trên.}}
=== {{ĐM|reference}} ===
{{R:FVDP}}
8e2chexa3pd4acxn6fzpz5y5ou0l9bq
hồ lô
0
198317
2362906
1855424
2026-05-31T06:54:07Z
Trong Dang
52461
/* */
2362906
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|葫蘆}}.
{{-pron-}}
{{vie-pron}}
{{-paro-}}
:* [[hồ lơ]]
{{-dfn-}}
'''hồ lô'''
# [[bầu|Bầu]] đựng [[rượu]].
# [[xe|Xe]] [[lăn]] đường, có [[những]] [[bánh]] [[rộng]] và [[nặng]] dùng để [[nén]] đá xuống đường cho [[phẳng]].
{{-ref-}}
{{R:FVDP}}
48ovctb6o8xh9csar6foh8vm8tao9cq
tiên tri
0
200153
2362930
2180098
2026-05-31T07:16:57Z
Trong Dang
52461
/* */
2362930
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|先知}}.
{{-pron-}}
{{vie-pron}}
{{-verb-}}
'''tiên tri'''
# [[biết|Biết]] trước [[những]] [[việc]] [[mãi]] [[về sau]] [[mới]] [[xảy ra]].
#: ''Bậc '''tiên tri'''.''
#: ''Lời '''tiên tri'''.''
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Động từ tiếng Việt]]
c3jm12ceqneiac0a7nd3c0tn4nbjmg5
nghĩa phụ
0
200260
2362911
2010352
2026-05-31T06:57:24Z
Trong Dang
52461
/* */
2362911
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|義父}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''nghĩa phụ'''
# [[bố nuôi|Bố nuôi]].
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
79fjdmvhoi9nijkh2ncd2nzsui8q4w7
pháp sư
0
200392
2362926
1892144
2026-05-31T07:12:40Z
Trong Dang
52461
/* */
2362926
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|法師}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''pháp sư'''
# [[thầy|Thầy]] [[phù thủy]] (cũ).
# Một [[chức sắc]] trong [[Phật giáo]].
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
bhz05l0en5fkwff1la8eg77s9qvke9w
sư huynh
0
200412
2362917
1926048
2026-05-31T07:01:05Z
Trong Dang
52461
/* */
2362917
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|師兄}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''sư huynh'''
# [[từ|Từ]] dùng giữa [[tăng ni]] để [[gọi]] [[thân mật]] [[người]] [[có tuổi]] đạo [[cao]] [[hơn]] [[mình]].
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Việt]]
0yzoa32hq03bg7glwzljqs33vomrutg
嗔
0
235057
2362802
2021556
2026-05-31T02:38:37Z
Hiyuune
50834
2362802
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{section|han}}===
{{Han char|rn=30|rad=口|as=10|sn=13|four=61081|canj=RJBC|ids=⿰口真,⿰口眞}}
# [[người|Người]] [[đàn bà]] [[bẳn tính]], [[người]] [[đàn bà]] [[hay]] [[gắt gỏng]]; [[người]] [[đàn bà]] [[hay]] [[chửi rủa]].
===={{section|drv}}====
* {{l|mul|[[𬉌]]}}
===={{section|ref}}====
* {{Han ref|kx=0202.300|dkj=04074|dj=0425.110|hdz=10665.090|uh=55D4}}
=={{langname|ja}}==
==={{section|kanji}}===
{{ja-kanji|grade=|rs=口10}}
===={{section|reading}}====
{{ja-readings
|goon=しん, でん
|kanon=しん, てん
|kun=いか-る}}
=={{langname|zh}}==
{{zh-forms|alt=謓,瞋,㥲}}
==={{section|glyph origin}}===
{{Han etym}}
==={{section|etym}} 1===
===={{section|pron}}====
{{zh-pron
|m=chēn
|c=can1,zan1
|mc=y
|oc=y
|cat=v
}}
===={{section|dfn}}====
{{head|zh|hanzi}}
# [[giận dữ|Giận dữ]].
# [[la mắng|La mắng]]; [[quở trách]].
# {{alt form|zh|瞋}}
====={{section|compound}}=====
{{col3|zh|嗔忿|嗔睨|嬌嗔|嗔色|嗔責|宜嗔宜喜|嗔怒|宜喜宜嗔|嗔詬|嗔怪|回嗔作喜|嗔道|嗔喝|雷嗔電怒|薄面含嗔|立眉嗔目|嗔目}}
==={{section|etym}} 2===
{{zh-see|闐|v}}
==={{section|ref}}===
* {{R:yue:mfccd}}
2nsfabhabrid3eb2vixtxutvbxe15sy
ngủ gục
0
236352
2362902
2134480
2026-05-31T06:33:20Z
~2026-32288-27
61341
2362902
wikitext
text/x-wiki
{{-vie-}}
{{-pron-}}
{{vie-pron|ngủ|gục}}
{{-verb-}}
'''ngủ gục'''
<!-- === ĐỊNH NGHĨA === -->
# Ngủ một cách [[chập chờn]] trong một hoàn cảnh không thích hợp. Là con mẹ khọm già Lupita Jones
#
#
{{-syn-}}
<!-- === TỪ ĐỒNG NGHĨA === -->
* [[ngủ gật]]
{{-trans-}}
<!-- === DỊCH === -->
* {{eng}}: [[nod]], [[rowse]], [[doze]]
* {{fra}}: [[piquer du nez]]
[[Thể loại:Động từ tiếng Việt]]
qe8zi9wvjuxlt1lbvcc0qzey54nbz3f
2362915
2362902
2026-05-31T07:00:30Z
TheHighFighter2
42988
Đã lùi lại sửa đổi của [[Special:Contributions/~2026-32288-27|~2026-32288-27]] ([[User talk:~2026-32288-27|thảo luận]]) quay về phiên bản cuối của [[User:Renamed user 3b0ac64b1d74ce1fbe5382d087ed3d0b|Renamed user 3b0ac64b1d74ce1fbe5382d087ed3d0b]]
2134480
wikitext
text/x-wiki
{{-vie-}}
{{-pron-}}
{{vie-pron|ngủ|gục}}
{{-verb-}}
'''ngủ gục'''
<!-- === ĐỊNH NGHĨA === -->
# Ngủ một cách [[chập chờn]] trong một hoàn cảnh không thích hợp.
#
#
{{-syn-}}
<!-- === TỪ ĐỒNG NGHĨA === -->
* [[ngủ gật]]
{{-trans-}}
<!-- === DỊCH === -->
* {{eng}}: [[nod]], [[rowse]], [[doze]]
* {{fra}}: [[piquer du nez]]
[[Thể loại:Động từ tiếng Việt]]
eadz8nulx1v6bukirx9ep806uoeyhyl
tại hạ
0
243662
2362920
1936679
2026-05-31T07:02:43Z
Trong Dang
52461
/* */
2362920
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|在下}}.
{{-pron-}}
{{vie-pron}}
{{-pronoun-}}
'''tại hạ'''
<!-- === ĐỊNH NGHĨA === -->
# Xem [[tôi]]
{{-trans-}}
<!-- === DỊCH === -->
* tiếng Anh: [[I]]
*
*
{{mẫu}}
[[Thể loại:Đại từ tiếng Việt]]
rt1d658wfrwfl9ys8f3gly7fcuhvx0o
臨淄
0
254264
2362679
2000789
2026-05-30T13:58:54Z
TheHighFighter2
42988
/* */
2362679
wikitext
text/x-wiki
=={{langname|zh}}==
{{zh-forms|s=临淄}}
{{wp|zh:}}
==={{ĐM|pron}}===
{{zh-pron
|m=Línzī
|c=lam4 zi1
|oc=1,2,1
|cat=pn
}}
==={{ĐM|pr-noun}}===
{{head|zh|Danh từ riêng}}
# {{lb|zh|historical}} [[Lâm Truy]] {{gloss|[[kinh đô]] nước [[Tề]] thời [[Xuân Thu]]-[[Chiến Quốc]], ngày nay thuộc [[Truy Bác]]}}.
# {{zh-div|區}} {{place|zh|quận|city/Truy Bác|p/Sơn Đông|c/Trung Quốc|t1=Lâm Truy}}.
k3embk2m7av05yf5hz4ih3g6up7kxun
let it be
0
254823
2362676
2009388
2026-05-30T13:34:03Z
TheHighFighter2
42988
/* */
2362676
wikitext
text/x-wiki
=={{langname|en}}==
==={{ĐM|pron}}===
* {{audio|en|En-au-let it be.ogg|a=AU}}
==={{ĐM|verb}}===
{{en-verb|<,,let>|head=~let:let be}}
# {{lb|en|idiomatic}} Cứ để mọi chuyện diễn ra [[tự nhiên]]; cứ [[mặc kệ]] nó đi.
#: {{ux|en|'''Let it be'''. The more you interfere, the worse it will get.|'''Cứ để vậy đi'''. Càng can thiệp mọi chuyện càng tệ hơn.}}
===={{ĐM|rel}}====
{{col|en
|let be
|so be it
}}
===={{ĐM|see}}====
{{col|en
|laissez faire
}}
==={{ĐM|anagram}}===
* {{anagrams|en|a=beeiltt|betitle}}
g75kt21hcooexysxc7ldk89r8744v9p
civil war
0
258600
2362675
2014929
2026-05-30T13:25:02Z
TheHighFighter2
42988
/* */
2362675
wikitext
text/x-wiki
{{also|Civil War}}
=={{langname|en}}==
{{wp|en:}}
==={{ĐM|pron}}===
* {{audio|en|En-us-civil war.ogg|a=US}}
==={{ĐM|noun}}===
{{en-noun}}
# [[nội chiến|Nội chiến]].
===={{ĐM|der}}====
* {{l|en|Civil War}}
{{cln|en|Phép nghịch hợp}}
{{C|en|Loại hình chiến tranh}}
jdna498777xava5q64aouiypulzq54s
guerra civile
0
258622
2362761
2043348
2026-05-31T01:53:17Z
TheHighFighter2
42988
/* */
2362761
wikitext
text/x-wiki
=={{langname|it}}==
{{wp|it:}}
==={{ĐM|noun}}===
{{it-noun|f}}
# [[nội chiến|Nội chiến]].
8pvpwspfiwc6w6t412xkrhbd1y4qpvh
2362770
2362761
2026-05-31T01:59:02Z
Hiyuune
50834
2362770
wikitext
text/x-wiki
=={{langname|it}}==
{{wp|it:}}
==={{ĐM|noun}}===
{{it-noun|f}}
# [[nội chiến|Nội chiến]].
===={{ĐM|rel}}====
{{col|it|guerra
|guerra batteriologica
|guerra biologica
|guerriglia}}
iozv8d00z7uubzucfpsx2yb81mxc8f1
guerra civil
0
258632
2362689
2040017
2026-05-30T14:17:39Z
TheHighFighter2
42988
/* */
2362689
wikitext
text/x-wiki
=={{langname|an}}==
{{wp|an:}}
==={{ĐM|pron}}===
{{an-pr}}
==={{ĐM|noun}}===
{{an-noun|f|guerras civils}}
# [[nội chiến|Nội chiến]].
=={{langname|ast}}==
{{wp|ast:}}
==={{ĐM|noun}}===
{{ast-noun|f|guerres civiles}}
# [[nội chiến|Nội chiến]].
=={{langname|ca}}==
{{wp|ca:}}
==={{ĐM|pron}}===
* {{audio|ca|LL-Q7026 (cat)-Marvives-guerra civil.wav|a=Barcelona}}
==={{ĐM|noun}}===
{{ca-noun|f}}
# [[nội chiến|Nội chiến]].
===={{ĐM|der}}====
* {{l|ca|guerracivilista}}
=={{langname|gl}}==
{{wp|gl:}}
==={{ĐM|pron}}===
{{gl-pr|guèrra civil}}
* {{hyph|gl|gue|rra ci|vil}}
==={{ĐM|noun}}===
{{gl-noun|f}}
# [[nội chiến|Nội chiến]].
===={{ĐM|der}}====
* {{l|gl|guerracivilista}}
=={{langname|pt}}==
{{wp|pt:}}
==={{ĐM|noun}}===
{{pt-noun|f}}
# [[nội chiến|Nội chiến]].
==={{ĐM|further}}===
* {{R:pt:Priberam}}
=={{langname|es}}==
{{wp|es:}}
==={{ĐM|pron}}===
{{es-pr|+<audio:LL-Q1321 (spa)-Marreromarco-guerra civil.wav<a:Venezuela>>}}
==={{ĐM|noun}}===
{{es-noun|f}}
# [[nội chiến|Nội chiến]].
#* {{quote-journal|es|title=¿Cómo funciona el Partido Comunista de China?|magazine=w:CNN en Español|url=https://cnnespanol.cnn.com/2022/10/18/partido-comunista-china-como-funciona-orix|date=2022-10-18|passage=Las fuerzas de Mao Zedong, histórico líder del PCCh, ganaron la '''guerra civil''' china contra las fuerzas del Partido Nacional (Kuomintang) de Chiang Kai-Shek y fundaron en 1949 la República Popular China, en la que el PCCh es el único partido legal. Actualmente tiene 96.700.000 miembros.}}
===={{ĐM|der}}====
{{col|es|guerracivilismo|guerracivilista}}
===={{ĐM|desc}}====
* {{desc|tl|giyera sibil|bor=1}}
==={{ĐM|further}}===
* {{R:es:DRAE}}
{{C|es|Chiến tranh}}
gtd4luove3l4s78he5k8k8fq93vqfpv
2362690
2362689
2026-05-30T14:18:21Z
TheHighFighter2
42988
2362690
wikitext
text/x-wiki
=={{langname|an}}==
{{wp|an:}}
==={{ĐM|pron}}===
{{an-pr}}
==={{ĐM|noun}}===
{{an-noun|f|guerras civils}}
# [[nội chiến|Nội chiến]].
=={{langname|ast}}==
{{wp|ast:}}
==={{ĐM|noun}}===
{{ast-noun|f|guerres civiles}}
# [[nội chiến|Nội chiến]].
=={{langname|pt}}==
{{wp|pt:}}
==={{ĐM|noun}}===
{{pt-noun|f}}
# [[nội chiến|Nội chiến]].
==={{ĐM|further}}===
* {{R:pt:Priberam}}
=={{langname|ca}}==
{{wp|ca:}}
==={{ĐM|pron}}===
* {{audio|ca|LL-Q7026 (cat)-Marvives-guerra civil.wav|a=Barcelona}}
==={{ĐM|noun}}===
{{ca-noun|f}}
# [[nội chiến|Nội chiến]].
===={{ĐM|der}}====
* {{l|ca|guerracivilista}}
=={{langname|gl}}==
{{wp|gl:}}
==={{ĐM|pron}}===
{{gl-pr|guèrra civil}}
* {{hyph|gl|gue|rra ci|vil}}
==={{ĐM|noun}}===
{{gl-noun|f}}
# [[nội chiến|Nội chiến]].
===={{ĐM|der}}====
* {{l|gl|guerracivilista}}
=={{langname|es}}==
{{wp|es:}}
==={{ĐM|pron}}===
{{es-pr|+<audio:LL-Q1321 (spa)-Marreromarco-guerra civil.wav<a:Venezuela>>}}
==={{ĐM|noun}}===
{{es-noun|f}}
# [[nội chiến|Nội chiến]].
#* {{quote-journal|es|title=¿Cómo funciona el Partido Comunista de China?|magazine=w:CNN en Español|url=https://cnnespanol.cnn.com/2022/10/18/partido-comunista-china-como-funciona-orix|date=2022-10-18|passage=Las fuerzas de Mao Zedong, histórico líder del PCCh, ganaron la '''guerra civil''' china contra las fuerzas del Partido Nacional (Kuomintang) de Chiang Kai-Shek y fundaron en 1949 la República Popular China, en la que el PCCh es el único partido legal. Actualmente tiene 96.700.000 miembros.}}
===={{ĐM|der}}====
{{col|es|guerracivilismo|guerracivilista}}
===={{ĐM|desc}}====
* {{desc|tl|giyera sibil|bor=1}}
==={{ĐM|further}}===
* {{R:es:DRAE}}
{{C|es|Chiến tranh}}
iejkovdurgli4ciccbogl09p2nfm91h
burgeroorlog
0
258652
2362674
2165982
2026-05-30T13:07:02Z
TheHighFighter2
42988
/* */
2362674
wikitext
text/x-wiki
=={{langname|af}}==
==={{ĐM|etymology}}===
Từ {{inherited|af|nl|burgeroorlog}}. Tương đương với {{compound|af|burger|oorlog}}.
==={{ĐM|pron}}===
* {{IPA4|af|/ˈbœr.χərˌʊə̯r.lɔχ/}}
* {{audio|af|LL-Q14196 (afr)-Oesjaar-burgeroorlog.wav}}
==={{ĐM|noun}}===
{{af-noun|burgeroorloë}}
# [[nội chiến|Nội chiến]].
{{C|af|Chiến tranh}}
=={{langname|nl}}==
{{wp|nl:}}
==={{ĐM|etymology}}===
Từ {{affix|nl|burger|t1=công dân, thường dân|oorlog|t2=chiến tranh}}.
==={{ĐM|pron}}===
* {{IPA4|nl|/ˈbʏr.ɣərˌoːr.lɔx/}}
* {{audio|nl|Nl-burgeroorlog.ogg}}
* {{hyph|nl|bur|ger|oor|log}}
==={{ĐM|noun}}===
{{nl-noun|m|-:en|+}}
# [[nội chiến|Nội chiến]]. {{defdate|xuất hiện từ giữa thế kỷ 17}}
#: {{syn|nl|burgerkrijg}}
===={{ĐM|der}}====
{{col|nl
|burgeroorlogachtig
}}
===={{ĐM|desc}}====
* {{desc|af|burgeroorlog}}
{{C|nl|Chiến tranh}}
93l1vjgipw7fhm40511jqz0ok4vw9pb
Bản mẫu:Tài liệu đề mục
10
260739
2362700
2302989
2026-05-30T15:18:24Z
Kateru Zakuro
34522
2362700
wikitext
text/x-wiki
<div class="documentation" style="display:block; clear:both">
----
:''[[:en:Help:Documenting templates|Tài liệu]] bên dưới được chuyển tải từ'' ''{{temp|Tài liệu đề mục}}.''
{{#invoke:documentation2|show|hr=above|notsubpage=-|nodoc=1}}
=== Cách sử dụng ===
:{{temp|{{PAGENAME}}}}
=== Xem thêm ===
*[[:Thể loại:Bản mẫu đề mục]]
*[[:Thể loại:Bản mẫu đề mục loại từ]]
*[[:Thể loại:Bản mẫu đề mục khác]]<!--
--><includeonly>{{#switch:{{{1}}}|1=[[Thể loại:Bản mẫu đề mục ngôn ngữ]]|2=[[Thể loại:Bản mẫu đề mục loại từ]]|3=[[Thể loại:Bản mẫu đề mục khác]]|[[Thể loại:Bản mẫu đề mục]]}}</includeonly><!--
--></div><noinclude>[[Thể loại:Tài liệu bản mẫu]]</noinclude>
32326wgm2llnwzazpq1r6f2hb00yvg2
Bản mẫu:-aar-
10
261469
2362698
2361282
2026-05-30T15:13:52Z
Kateru Zakuro
34522
Thay thế bản mẫu [[:en:User:Ponor/wAwB| #wAwB]]
2362698
wikitext
text/x-wiki
__NOEDITSECTION__
=={{=nn|tiếng Afar|aar}}==
<includeonly>{{Hcat-nn|[[Thể loại:Mục từ tiếng Afar]][[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]}}</includeonly><noinclude>
[[Thể loại:Bản mẫu ngôn ngữ|*{{PAGENAME}}]]
{{Tài liệu đề mục}}
</noinclude>
fqnn2ok0fhp3i0df8wmbpswi8uuxqi3
2362703
2362698
2026-05-30T15:21:31Z
Kateru Zakuro
34522
Thay thế bản mẫu [[:en:User:Ponor/wAwB| #wAwB]]
2362703
wikitext
text/x-wiki
__NOEDITSECTION__
=={{=nn|tiếng Afar|aar}}==
<includeonly>{{Hcat-nn|[[Thể loại:Mục từ tiếng Afar]][[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]}}</includeonly><noinclude>
{{Tài liệu đề mục|1}}
</noinclude>
1bwxv6fzwdk60cz77ti9899v6o27def
bối cảnh
0
261762
2362913
2039577
2026-05-31T06:58:29Z
Trong Dang
52461
/* */
2362913
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|背景}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
'''bối cảnh'''
# [[điều kiện|Điều kiện]] [[lịch sử]], hoặc [[hoàn cảnh]] [[chung]] có [[tác dụng]] [[đối]] với một [[con người]], hoặc một [[sự kiện]].
#:''trong bối cảnh hội nhập với quốc tế''
#{{like-entry|phông nền}}
{{-ref-}}
{{R:Tratu}}
[[Thể loại:Danh từ tiếng Việt]]
7ds8am9juzz5yx6p1r8qkmbf2uqhd1a
Mô đun:it-headword
828
262506
2362772
2300542
2026-05-31T02:00:00Z
TheHighFighter2
42988
2362772
Scribunto
text/plain
-- This module contains code for Italian headword templates.
-- Templates covered are:
-- * {{it-noun}}, {{it-proper noun}};
-- * {{it-verb}};
-- * {{it-adj}}, {{it-adj-comp}}, {{it-adj-sup}};
-- * {{it-det}};
-- * {{it-art}};
-- * {{it-pron-adj}};
-- * {{it-pp}};
-- * {{it-presp}};
-- * {{it-card-noun}}, {{it-card-adj}}, {{it-card-inv}};
-- * {{it-adv}};
-- * {{it-pos}};
-- * {{it-suffix form}}.
-- See [[Module:it-verb]] for Italian conjugation templates.
local export = {}
local pos_functions = {}
local force_cat = false -- for testing; if true, categories appear in non-mainspace pages
local m_links = require("Module:links")
local m_table = require("Module:table")
local en_utilities_module = "Module:en-utilities"
local headword_module = "Module:headword"
local inflection_utilities_module = "Module:inflection utilities"
local it_verb_module = "Module:it-verb"
local parse_interface_module = "Module:parse interface"
local romut_module = "Module:romance utilities"
local string_utilities_module = "Module:string utilities"
local com = require("Module:it-common")
local lang = require("Module:languages").getByCode("it")
local langname = lang:getCanonicalName()
local m_str_utils = require(string_utilities_module)
local rsubn = m_str_utils.gsub
local rsplit = m_str_utils.split
local u = m_str_utils.char
local usub = m_str_utils.sub
local GR = u(0x0300)
local V = "[aeiou]"
local NV = "[^aeiou]"
local AV = "[àèéìòóù]"
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local function track(page)
require("Module:debug/track")("it-headword/" .. page)
return true
end
local function glossary_link(entry, text)
text = text or entry
return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]"
end
local function check_all_missing(forms, plpos, tracking_categories)
for _, form in ipairs(forms) do
if type(form) == "table" then
form = form.term
end
if form then
local title = mw.title.new(form)
if title and not title.exists then
table.insert(tracking_categories,"Mục từ " .. langname .. " có liên kết đỏ trong dòng tiêu đề")
end
end
end
end
local no_split_apostrophe_words = {
["c'è"] = true,
["c'era"] = true,
["c'erano"] = true,
}
-- The main entry point.
function export.show(frame)
local poscat = frame.args[1]
or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
local parargs = frame:getParent().args
local params = {
["head"] = {list = true},
["id"] = {},
["sort"] = {},
["apoc"] = {type = "boolean"},
["splithyph"] = {type = "boolean"},
["nolinkhead"] = {type = "boolean"},
["json"] = {type = "boolean"},
["pagename"] = {}, -- for testing
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local user_specified_heads = args.head
local heads = user_specified_heads
if args.nolinkhead then
if #heads == 0 then
heads = {pagename}
end
else
local romut = require(romut_module)
local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph,
no_split_apostrophe_words)
if #heads == 0 then
heads = {auto_linked_head}
else
for i, head in ipairs(heads) do
if head:find("^~") then
head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2))
heads[i] = head
end
if head == auto_linked_head then
track("redundant-head")
end
end
end
end
local data = {
lang = lang,
pos_category = poscat,
categories = {},
heads = heads,
user_specified_heads = user_specified_heads,
no_redundant_head_cat = #user_specified_heads == 0,
genders = {},
inflections = {},
pagename = pagename,
id = args.id,
sort_key = args.sort,
force_cat_output = force_cat,
}
local is_suffix = false
if pagename:find("^%-") and poscat ~= "suffix forms" then
is_suffix = true
data.pos_category = "suffixes"
local singular_poscat = require(en_utilities_module).singularize(poscat)
table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
table.insert(data.inflections, {label = singular_poscat .. "-forming suffix"})
end
local tracking_categories = {}
if pos_functions[poscat] then
pos_functions[poscat].func(args, data, tracking_categories, frame, is_suffix)
end
if args.apoc then
-- Apocopated form of a term; do this after calling pos_functions[], because the function might modify
-- data.pos_category.
local pos = data.pos_category
if not pos:find(" forms") then
-- Apocopated forms are non-lemma forms.
local singular_poscat = require(en_utilities_module).singularize(pos)
data.pos_category = singular_poscat .. " forms"
end
-- If this is a suffix, insert label 'apocopated' after 'FOO-forming suffix', otherwise insert at the beginning.
table.insert(data.inflections, is_suffix and 2 or 1, {label = glossary_link("apocopated")})
end
if args.json then
return require("Module:JSON").toJSON(data)
end
return require(headword_module).full_headword(data)
.. (#tracking_categories > 0 and require("Module:utilities").format_categories(tracking_categories, lang, args.sort, nil, force_cat) or "")
end
local function fetch_qualifiers(qual, existing)
if not qual then
return existing
end
if not existing then
return {qual}
end
local retval = {}
for _, e in ipairs(existing) do
table.insert(retval, e)
end
table.insert(retval, qual)
return retval
end
local function process_terms_with_qualifiers(terms, quals)
local infls = {}
for i, term in ipairs(terms) do
table.insert(infls, {term = term, q = fetch_qualifiers(quals[i])})
end
return infls
end
local function replace_hash_with_lemma(term, lemma)
-- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace
-- expression.
lemma = lemma:gsub("%%", "%%%%")
-- Assign to a variable to discard second return value.
term = term:gsub("#", lemma)
return term
end
local deriv_params = {
{"dim", glossary_link("diminutive")},
{"aug", glossary_link("augmentative")},
{"pej", glossary_link("pejorative")},
{"derog", glossary_link("derogatory")},
{"end", glossary_link("endearing")},
{"dim_aug", glossary_link("diminutive") .. "-" .. glossary_link("augmentative")},
{"dim_pej", glossary_link("diminutive") .. "-" .. glossary_link("pejorative")},
{"dim_derog", glossary_link("diminutive") .. "-" .. glossary_link("derogatory")},
{"dim_end", glossary_link("diminutive") .. "-" .. glossary_link("endearing")},
{"aug_pej", glossary_link("augmentative") .. "-" .. glossary_link("pejorative")},
{"aug_derog", glossary_link("augmentative") .. "-" .. glossary_link("derogatory")},
{"aug_end", glossary_link("augmentative") .. "-" .. glossary_link("endearing")},
{"end_derog", glossary_link("endearing") .. "-" .. glossary_link("derogatory")},
}
local function insert_deriv_params(params)
local list_spec = {list = true}
for _, deriv_param in ipairs(deriv_params) do
local param, desc = unpack(deriv_param)
params[param] = list_spec
end
end
local param_mods = {
t = {
-- We need to store the <t:...> inline modifier into the "gloss" key of the parsed part, because that is what
-- [[Module:links]] expects.
item_dest = "gloss",
},
gloss = {},
-- no 'tr' or 'ts', doesn't make sense for Italian
g = {
-- We need to store the <g:...> inline modifier into the "genders" key of the parsed part, because that is what
-- [[Module:links]] expects.
item_dest = "genders",
sublist = true,
},
id = {},
alt = {},
q = {type = "qualifier"},
qq = {type = "qualifier"},
lit = {},
pos = {},
-- no 'sc', doesn't make sense for Italian
}
local function parse_term_with_modifiers(paramname, val)
local function generate_obj(term)
local decomp = com.decompose(term)
local lemma = com.remove_non_final_accents(decomp)
if lemma ~= decomp then
term = com.compose("[[" .. lemma .. "|" .. decomp .. "]]")
end
return {term = term}
end
local retval = require(parse_interface_module).parse_inline_modifiers(val, {
paramname = paramname,
param_mods = param_mods,
generate_obj = generate_obj,
splitchar = "[/;,]",
preserve_splitchar = true,
})
for _, obj in ipairs(retval) do
if obj.delimiter == ";" then
obj.separator = "; "
elseif obj.delimiter == "/" then
obj.separator = "/"
-- default to nil for comma
end
end
return retval
end
local function insert_deriv_inflections(data, args, plpos)
for _, deriv_param in ipairs(deriv_params) do
local param, desc = unpack(deriv_param)
if #args[param] > 0 then
local inflection = {label = desc}
for i, term in ipairs(args[param]) do
local parsed_terms = parse_term_with_modifiers(param, term)
for _, parsed_term in ipairs(parsed_terms) do
table.insert(inflection, parsed_term)
end
end
-- These will typically be missing for now so it doesn't help to do this.
-- check_all_missing(inflection, plpos, tracking_categories)
table.insert(data.inflections, inflection)
end
end
end
-----------------------------------------------------------------------------------------
-- Danh từ --
-----------------------------------------------------------------------------------------
local allowed_genders = m_table.listToSet(
{"m", "f", "mf", "mfbysense", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "n-p", "?", "?-p"}
)
local function process_genders(data, genders, g_qual)
for i, g in ipairs(genders) do
if not allowed_genders[g] then
error("Unrecognized gender: " .. g)
end
if g_qual[i] then
table.insert(data.genders, {spec = g, qualifiers = {g_qual[i]}})
else
table.insert(data.genders, g)
end
end
end
local function do_noun(args, data, tracking_categories, pos, is_suffix, is_proper)
local is_plurale_tantum = false
local has_singular = false
if is_suffix then
pos = "suffix"
end
local plpos = pos
data.genders = {}
local saw_m = false
local saw_f = false
local gender_for_default_plural = args[1][1]
process_genders(data, args[1], args.g_qual)
-- Check for specific genders and pluralia tantum.
for _, g in ipairs(args[1]) do
if g:find("-p$") then
is_plurale_tantum = true
else
has_singular = true
if g == "m" or g == "mf" or g == "mfbysense" then
saw_m = true
end
if g == "f" or g == "mf" or g == "mfbysense" then
saw_f = true
end
end
end
if saw_m and saw_f then
gender_for_default_plural = "mf"
end
local lemma = m_links.remove_links(data.heads[1]) -- should always be specified
local function insert_inflection(list, term, accel, qualifiers, genders, no_inv)
if genders then
for _, g in ipairs(genders) do
if g == "m" and not saw_m or g == "f" and not saw_f then
table.insert(data.categories, langname .. " " .. plpos .. " that change gender in the plural")
end
end
end
local infl = {q = qualifiers, accel = accel, genders = genders}
if term == lemma and not no_inv then
infl.label = glossary_link("bất biến")
else
infl.term = term
end
infl.term_for_further_inflection = term
table.insert(list, infl)
end
-- Plural
local plurals = {}
local args_mpl = args.mpl
local args_fpl = args.fpl
local args_pl = args[2]
if is_plurale_tantum and not has_singular then
if #args_pl > 0 then
error("Can't specify plurals of plurale tantum " .. pos)
end
table.insert(data.inflections, {label = glossary_link("plural only")})
elseif args.apoc then
-- apocopated noun
if #args_pl > 0 then
error("Can't specify plurals of apocopated " .. pos)
end
else
if is_plurale_tantum then
-- both singular and plural
table.insert(data.inflections, {label = "sometimes " .. glossary_link("plural only") .. ", in variation"})
end
-- If no plurals, use the default plural unless mpl= or fpl= explicitly given.
if #args_pl == 0 and #args_mpl == 0 and #args_fpl == 0 and not is_proper then
args_pl = {"+"}
end
-- If only ~ given (countable and uncountable), add the default plural after it.
if #args_pl == 1 and args_pl[1] == "~" then
args_pl = {"~", "+"}
end
-- Gather plurals, handling requests for default plurals
for i, pl in ipairs(args_pl) do
local function insert_pl(term)
if term == lemma and i == 1 then
-- Invariable
-- If plural forms were given explicitly, then show "usually"
if #args_pl > 1 then
table.insert(data.inflections, {label = "thường " .. glossary_link("bất biến")})
else
table.insert(data.inflections, {label = glossary_link("bất biến")})
end
table.insert(data.categories, plpos .. " " .. langname .. " không biến cách ")
else
insert_inflection(plurals, term, nil, fetch_qualifiers(args.pl_qual[i]),
args.pl_g[i] and rsplit(args.pl_g[i], "%s*,%s*") or nil)
end
table.insert(data.categories, plpos .. " đếm được " .. langname)
end
local function make_gendered_plural(form, gender, special)
if gender == "mf" then
local default_mpl = com.make_plural(lemma, "m", special)
local default_fpl = com.make_plural(lemma, "f", special)
if default_mpl then
if default_mpl == default_fpl then
insert_pl(default_mpl)
else
if #args_mpl > 0 or #args_fpl > 0 then
error("Can't specify gendered plural spec '" .. (special or "+") .. "' along with gender=" .. gender
.. " and also specify mpl= or fpl=")
end
args_mpl = {default_mpl}
args_fpl = {default_fpl}
end
end
else
local pl = com.make_plural(lemma, gender, special)
if pl then
insert_pl(pl)
end
end
end
if pl == "cap*" or pl == "cap*+" then
make_gendered_plural(lemma, gender_for_default_plural, pl)
elseif pl == "+" then
make_gendered_plural(lemma, gender_for_default_plural)
elseif pl:find("^%+") then
pl = require(romut_module).get_special_indicator(pl)
make_gendered_plural(lemma, gender_for_default_plural, pl)
elseif pl == "?" or pl == "!" then
if i > 1 or #args_pl > 1 then
error("Can't specify ? or ! with other plurals")
end
if pl == "?" then
-- Plural is unknown
table.insert(data.inflections, {label = "plural unknown or uncertain"})
table.insert(data.categories, langname .. " " .. plpos .. " with unknown or uncertain plurals")
else
-- Plural is not attested
table.insert(data.inflections, {label = "plural not attested"})
table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals")
end
elseif pl == "-" then
if i > 1 then
error("Plural specifier - must be first")
end
-- Uncountable noun; may occasionally have a plural
table.insert(data.categories, plpos .. " không đếm được " .. langname)
-- If plural forms were given explicitly, then show "usually"
if #args_pl > 1 then
table.insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")})
table.insert(data.categories, plpos .. " đếm được " .. langname)
else
table.insert(data.inflections, {label = glossary_link("không đếm được")})
end
elseif pl == "~" then
if i > 1 then
error("Plural specifier ~ must be first")
end
-- Countable and uncountable noun; will have a plural
table.insert(data.categories, plpos .. " đếm được " .. langname)
table.insert(data.categories, plpos .. " không đếm được " .. langname)
table.insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")})
else
insert_pl(replace_hash_with_lemma(pl, lemma))
end
end
end
if #plurals > 1 then
table.insert(data.categories, langname .. " " .. plpos .. " with multiple plurals")
end
-- Gather masculines/feminines. For each one, generate the corresponding plural(s).
local function handle_mf(mfs, qualifiers, gender, inflect, default_plurals)
local retval = {}
for i, mf in ipairs(mfs) do
local function insert_infl(list, term, accel, existing_qualifiers)
insert_inflection(list, term, accel, fetch_qualifiers(qualifiers[i], existing_qualifiers), nil, "no inv")
end
if mf == "+" then
-- Generate default feminine.
mf = inflect(lemma)
else
mf = replace_hash_with_lemma(mf, lemma)
end
local special = require(romut_module).get_special_indicator(mf)
if special then
mf = inflect(lemma, special)
end
insert_infl(retval, mf)
local mfpl = com.make_plural(mf, gender, special)
if mfpl then
-- Add an accelerator for each masculine/feminine plural whose lemma
-- is the corresponding singular, so that the accelerated entry
-- that is generated has a definition that looks like
-- # {{plural of|es|MFSING}}
insert_infl(default_plurals, mfpl, {form = "p", lemma = mf})
end
end
return retval
end
local default_feminine_plurals = {}
local feminine_plurals = {}
local feminines = handle_mf(args.f, args.f_qual, "f", com.make_feminine, default_feminine_plurals)
local default_masculine_plurals = {}
local masculine_plurals = {}
local masculines = handle_mf(args.m, args.m_qual, "m", com.make_masculine, default_masculine_plurals)
local function handle_mf_plural(mfpl, qualifiers, gender, default_plurals, singulars)
local new_mfpls = {}
for i, mfpl in ipairs(mfpl) do
local function insert_infl(term, accel, existing_qualifiers, no_inv)
insert_inflection(new_mfpls, term, accel, fetch_qualifiers(qualifiers[i], existing_qualifiers), nil, no_inv)
end
local accel
if #mfpl == #singulars then
-- If same number of overriding masculine/feminine plurals as singulars,
-- assume each plural goes with the corresponding singular
-- and use each corresponding singular as the lemma in the accelerator.
-- The generated entry will have # {{plural of|it|SINGULAR}} as the
-- definition.
accel = {form = "p", lemma = singulars[i].term}
else
accel = nil
end
if mfpl == "+" then
if #default_plurals > 0 then
for _, defpl in ipairs(default_plurals) do
-- defpl is a table
-- don't use "invariable" because the plural is not with respect to the lemma but
-- with respect to the masc/fem singular
insert_infl(defpl.term_for_further_inflection, defpl.accel, defpl.qualifiers, "no inv")
end
else
-- mf is a table
local default_mfpl = com.make_plural(lemma, gender)
if default_mfpl then
insert_infl(default_mfpl, accel)
end
end
elseif mfpl == "cap*" or mfpl == "cap*+" or mfpl:find("^%+") then
if mfpl:find("^%+") then
mfpl = require(romut_module).get_special_indicator(mfpl)
end
if #singulars > 0 then
for _, mf in ipairs(singulars) do
-- mf is a table
local default_mfpl = com.make_plural(mf.term_for_further_inflection, gender, mfpl)
if default_mfpl then
-- don't use "invariable" because the plural is not with respect to the lemma but
-- with respect to the masc/fem singular
insert_infl(default_mfpl, accel, mf.qualifiers, "no inv")
end
end
else
local default_mfpl = com.make_plural(lemma, gender, mfpl)
if default_mfpl then
insert_infl(default_mfpl, accel)
end
end
else
mfpl = replace_hash_with_lemma(mfpl, lemma)
-- don't use "invariable" if masc/fem singular present because the plural is not with respect to
-- the lemma but with respect to the masc/fem singular
insert_infl(mfpl, accel, nil, #singulars > 0)
end
end
return new_mfpls
end
-- FIXME: We should generate feminine plurals by default from feminine singulars given, and vice-versa.
-- To do that, eliminate the distinction between `default_feminine_plurals` and `feminine_plurals`,
-- as in [[Module:es-headword]].
if #args_fpl > 0 then
-- Set feminine plurals.
feminine_plurals = handle_mf_plural(args_fpl, args.fpl_qual, "f", default_feminine_plurals, feminines)
end
if #args_mpl > 0 then
-- Set masculine plurals.
masculine_plurals = handle_mf_plural(args_mpl, args.mpl_qual, "m", default_masculine_plurals, masculines)
end
check_all_missing(plurals, plpos, tracking_categories)
check_all_missing(feminines, plpos, tracking_categories)
check_all_missing(feminine_plurals, plpos, tracking_categories)
check_all_missing(masculines, plpos, tracking_categories)
check_all_missing(masculine_plurals, plpos, tracking_categories)
local function redundant_plural(pl)
for _, p in ipairs(plurals) do
if p.term_for_further_inflection == pl.term_for_further_inflection then
return true
end
end
return false
end
for _, mpl in ipairs(masculine_plurals) do
if redundant_plural(mpl) then
track("noun-redundant-mpl")
end
end
for _, fpl in ipairs(feminine_plurals) do
if redundant_plural(fpl) then
track("noun-redundant-fpl")
end
end
if #plurals > 0 then
plurals.label = "số nhiều"
plurals.accel = {form = "p"}
table.insert(data.inflections, plurals)
end
if #masculines > 0 then
masculines.label = "giống đực"
table.insert(data.inflections, masculines)
end
if #masculine_plurals > 0 then
masculine_plurals.label = "số nhiều giống đực"
table.insert(data.inflections, masculine_plurals)
end
if #feminines > 0 then
feminines.label = "giống cái"
feminines.accel = {form = "f"}
table.insert(data.inflections, feminines)
end
if #feminine_plurals > 0 then
feminine_plurals.label = "số nhiều giống cái"
table.insert(data.inflections, feminine_plurals)
end
insert_deriv_inflections(data, args, plpos)
-- Maybe add category 'Italian nouns with irregular gender' (or similar)
local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word
if (irreg_gender_lemma:find("o$") and (gender_for_default_plural == "f" or gender_for_default_plural == "mf"
or gender_for_default_plural == "mfbysense")) or
(irreg_gender_lemma:find("a$") and (gender_for_default_plural == "m" or gender_for_default_plural == "mf"
or gender_for_default_plural == "mfbysense")) then
table.insert(data.categories, plpos .. " " .. langname .. " có giống bất quy tắc")
end
end
local function get_noun_params(nountype)
local params = {
[1] = {list = "g", required = nountype ~= "proper", default = "?"},
[2] = {list = "pl"},
["g_qual"] = {list = "g\1_qual", allow_holes = true},
["pl_qual"] = {list = "pl\1_qual", allow_holes = true},
["pl_g"] = {list = "pl\1_g", allow_holes = true},
["m"] = {list = true},
["m_qual"] = {list = "m\1_qual", allow_holes = true},
["f"] = {list = true},
["f_qual"] = {list = "f\1_qual", allow_holes = true},
["mpl"] = {list = true},
["mpl_qual"] = {list = "mpl\1_qual", allow_holes = true},
["fpl"] = {list = true},
["fpl_qual"] = {list = "fpl\1_qual", allow_holes = true},
}
insert_deriv_params(params)
return params
end
pos_functions["Danh từ"] = {
params = get_noun_params("base"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_noun(args, data, tracking_categories, "Danh từ", is_suffix)
end,
}
pos_functions["Danh từ riêng"] = {
params = get_noun_params("proper"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_noun(args, data, tracking_categories, "Danh từ riêng", is_suffix, "is proper noun")
end,
}
pos_functions["cardinal nouns"] = {
params = get_noun_params("base"),
func = function(args, data, tracking_categories)
do_noun(args, data, tracking_categories, "numeral")
data.pos_category = "numerals"
table.insert(data.categories, 1, langname .. " cardinal numbers")
end,
}
-----------------------------------------------------------------------------------------
-- Adjectives --
-----------------------------------------------------------------------------------------
local function do_adjective(args, data, tracking_categories, pos, is_suffix, is_superlative)
local feminines = {}
local masculine_plurals = {}
local feminine_plurals = {}
if is_suffix then
pos = "suffix"
end
local plpos = pos
if not is_suffix then
data.pos_category = plpos
end
if args.sp then
local romut = require(romut_module)
if not romut.allowed_special_indicators[args.sp] then
local indicators = {}
for indic, _ in pairs(romut.allowed_special_indicators) do
table.insert(indicators, "'" .. indic .. "'")
end
table.sort(indicators)
error("Special inflection indicator beginning can only be " ..
mw.text.listToText(indicators) .. ": " .. args.sp)
end
end
local lemma = m_links.remove_links(data.heads[1]) -- should always be specified
local function insert_inflection(forms, label, accel)
if #forms > 0 then
if forms[1].term == "-" then
table.insert(data.inflections, {label = "no " .. label})
else
forms.label = label
forms.accel = {form = accel}
table.insert(data.inflections, forms)
end
end
end
if args.inv then
-- invariable adjective
table.insert(data.inflections, {label = glossary_link("bất biến")})
table.insert(data.categories, plpos .. " " .. langname .. " không biến cách ")
end
if args.noforms then
-- [[bello]] and any others too complicated to describe in headword
table.insert(data.inflections, {label = "see below for inflection"})
end
if args.inv or args.apoc or args.noforms then
if args.sp or #args.f > 0 or #args.pl > 0 or #args.mpl > 0 or #args.fpl > 0 then
error("Can't specify inflections with an invariable or apocopated adjective or with noforms=")
end
elseif args.fonly then
-- feminine-only
if #args.f > 0 then
error("Can't specify explicit feminines with feminine-only adjective")
end
if #args.pl > 0 then
error("Can't specify explicit plurals with feminine-only adjective, use fpl=")
end
if #args.mpl > 0 then
error("Can't specify explicit masculine plurals with feminine-only adjective")
end
local argsfpl = args.fpl
if #argsfpl == 0 then
argsfpl = {"+"}
end
for i, fpl in ipairs(argsfpl) do
if fpl == "+" then
local defpl = com.make_plural(lemma, "f", args.sp)
if not defpl then
error("Unable to generate default plural of '" .. lemma .. "'")
end
fpl = defpl
else
fpl = replace_hash_with_lemma(fpl, lemma)
end
table.insert(feminine_plurals, {term = fpl, q = fetch_qualifiers(args.fpl_qual[i])})
end
check_all_missing(feminine_plurals, plpos, tracking_categories)
table.insert(data.inflections, {label = "feminine-only"})
insert_inflection(feminine_plurals, "feminine plural", "f|p")
else
-- Gather feminines.
local argsf = args.f
if #argsf == 0 then
argsf = {"+"}
end
for i, f in ipairs(argsf) do
if f == "+" then
-- Generate default feminine.
f = com.make_feminine(lemma, args.sp)
else
f = replace_hash_with_lemma(f, lemma)
end
table.insert(feminines, {term = f, q = fetch_qualifiers(args.f_qual[i])})
end
local argsmpl = args.mpl
local argsmpl_qual = args.mpl_qual
local argsfpl = args.fpl
local argsfpl_qual = args.fpl_qual
if #args.pl > 0 then
if #argsmpl > 0 or #argsfpl > 0 then
error("Can't specify both pl= and mpl=/fpl=")
end
argsmpl = args.pl
argsmpl_qual = args.pl_qual
argsfpl = args.pl
argsfpl_qual = args.pl_qual
end
if #argsmpl == 0 then
argsmpl = {"+"}
end
if #argsfpl == 0 then
argsfpl = {"+"}
end
for i, mpl in ipairs(argsmpl) do
if mpl == "+" then
-- Generate default masculine plural.
local defpl = com.make_plural(lemma, "m", args.sp)
if not defpl then
error("Unable to generate default plural of '" .. lemma .. "'")
end
mpl = defpl
else
mpl = replace_hash_with_lemma(mpl, lemma)
end
table.insert(masculine_plurals, {term = mpl, q = fetch_qualifiers(argsmpl_qual[i])})
end
for i, fpl in ipairs(argsfpl) do
if fpl == "+" then
for _, f in ipairs(feminines) do
-- Generate default feminine plural; f is a table.
local defpl = com.make_plural(f.term, "f", args.sp)
if not defpl then
error("Unable to generate default plural of '" .. f.term .. "'")
end
table.insert(feminine_plurals, {term = defpl, q = fetch_qualifiers(argsfpl_qual[i], f.qualifiers)})
end
else
fpl = replace_hash_with_lemma(fpl, lemma)
table.insert(feminine_plurals, {term = fpl, q = fetch_qualifiers(argsfpl_qual[i])})
end
end
check_all_missing(feminines, plpos, tracking_categories)
check_all_missing(masculine_plurals, plpos, tracking_categories)
check_all_missing(feminine_plurals, plpos, tracking_categories)
-- Make sure there are feminines given and not same as lemma.
if not (#feminines == 1 and feminines[1].term == lemma and not feminines[1].qualifiers) then
insert_inflection(feminines, "giống cái", "f|s")
end
if #masculine_plurals > 0 and #feminine_plurals > 0 and
m_table.deepEquals(masculine_plurals, feminine_plurals) then
insert_inflection(masculine_plurals, "số nhiều", "p")
else
insert_inflection(masculine_plurals, "giống đực số nhiều", "m|p")
insert_inflection(feminine_plurals, "giống cái số nhiều", "f|p")
end
end
if args.comp and #args.comp > 0 then
local comps = process_terms_with_qualifiers(args.comp, args.comp_qual)
check_all_missing(comps, plpos, tracking_categories)
comps.label = "comparative"
table.insert(data.inflections, comps)
end
if args.sup and #args.sup > 0 then
local sups = process_terms_with_qualifiers(args.sup, args.sup_qual)
check_all_missing(sups, plpos, tracking_categories)
sups.label = "superlative"
table.insert(data.inflections, sups)
end
insert_deriv_inflections(data, args, plpos)
if args.irreg and is_superlative then
table.insert(data.categories, langname .. " irregular superlative adjectives")
end
end
local function get_adjective_params(adjtype)
local params = {
["inv"] = {type = "boolean"}, --invariable
["noforms"] = {type = "boolean"}, --too complicated to list forms except in a table
["sp"] = {}, -- special indicator: "first", "first-last", etc.
["f"] = {list = true}, --feminine form(s)
["f_qual"] = {list = "f\1_qual", allow_holes = true},
["pl"] = {list = true}, --plural override(s)
["pl_qual"] = {list = "pl\1_qual", allow_holes = true},
["fpl"] = {list = true}, --feminine plural override(s)
["fpl_qual"] = {list = "fpl\1_qual", allow_holes = true},
["mpl"] = {list = true}, --masculine plural override(s)
["mpl_qual"] = {list = "mpl\1_qual", allow_holes = true},
}
if adjtype == "base" or adjtype == "part" or adjtype == "det" then
params["comp"] = {list = true} --comparative(s)
params["comp_qual"] = {list = "comp\1_qual", allow_holes = true}
params["sup"] = {list = true} --superlative(s)
params["sup_qual"] = {list = "sup\1_qual", allow_holes = true}
params["fonly"] = {type = "boolean"} -- feminine only
end
if adjtype == "sup" then
params["irreg"] = {type = "boolean"}
end
insert_deriv_params(params)
return params
end
pos_functions["Tính từ"] = {
params = get_adjective_params("base"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "Tính từ", is_suffix)
end,
}
pos_functions["comparative adjectives"] = {
params = get_adjective_params("comp"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "adjective", is_suffix)
end,
}
pos_functions["superlative adjectives"] = {
params = get_adjective_params("sup"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "adjective", is_suffix, "is superlative")
end,
}
pos_functions["cardinal adjectives"] = {
params = get_adjective_params("card"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "numeral", is_suffix)
table.insert(data.categories, 1, langname .. " cardinal numbers")
end,
}
pos_functions["past participles"] = {
params = get_adjective_params("part"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "participle", is_suffix)
data.pos_category = "past participles"
end,
}
pos_functions["present participles"] = {
params = get_adjective_params("part"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "participle", is_suffix)
data.pos_category = "present participles"
end,
}
pos_functions["determiners"] = {
params = get_adjective_params("det"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "determiner", is_suffix)
end,
}
pos_functions["articles"] = {
params = get_adjective_params("det"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "article", is_suffix)
end,
}
pos_functions["adjective-like pronouns"] = {
params = get_adjective_params("pron"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adjective(args, data, tracking_categories, "pronoun", is_suffix)
end,
}
pos_functions["cardinal invariable"] = {
params = {},
func = function(args, data, tracking_categories)
data.pos_category = "numerals"
table.insert(data.categories, langname .. " cardinal numbers")
table.insert(data.categories, langname .. " indeclinable numerals")
table.insert(data.inflections, {label = glossary_link("invariable")})
end,
}
-----------------------------------------------------------------------------------------
-- Adverbs --
-----------------------------------------------------------------------------------------
local function do_adverb(args, data, tracking_categories, pos, is_suffix)
if is_suffix then
pos = "suffix"
end
local plpos = pos
if not is_suffix then
data.pos_category = plpos
end
if args.comp and #args.comp > 0 then
local comps = process_terms_with_qualifiers(args.comp, args.comp_qual)
check_all_missing(comps, "adverbs", tracking_categories)
comps.label = "comparative"
table.insert(data.inflections, comps)
end
if args.sup and #args.sup > 0 then
local sups = process_terms_with_qualifiers(args.sup, args.sup_qual)
check_all_missing(sups, "adverbs", tracking_categories)
sups.label = "superlative"
table.insert(data.inflections, sups)
end
end
local function get_adverb_params(advtype)
local params = {}
if advtype == "base" then
params["comp"] = {list = true} --comparative(s)
params["comp_qual"] = {list = "comp\1_qual", allow_holes = true}
params["sup"] = {list = true} --superlative(s)
params["sup_qual"] = {list = "sup\1_qual", allow_holes = true}
end
return params
end
pos_functions["Phó từ"] = {
params = get_adverb_params("base"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adverb(args, data, tracking_categories, "Phó từ", is_suffix)
end,
}
pos_functions["comparative adverbs"] = {
params = get_adverb_params("comp"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adverb(args, data, tracking_categories, "adverb", is_suffix)
end,
}
pos_functions["superlative adverbs"] = {
params = get_adverb_params("sup"),
func = function(args, data, tracking_categories, frame, is_suffix)
do_adverb(args, data, tracking_categories, "adverb", is_suffix)
end,
}
-----------------------------------------------------------------------------------------
-- Verbs --
-----------------------------------------------------------------------------------------
pos_functions["Động từ"] = {
params = {
[1] = {},
["noautolinktext"] = {type = "boolean"},
["noautolinkverb"] = {type = "boolean"},
},
func = function(args, data, tracking_categories, frame)
if args[1] then
local preses, prets, parts
local def_forms
local alternant_multiword_spec = require(it_verb_module).do_generate_forms(args, "from headword", data.heads[1])
local function do_verb_form(slot, label, rowslot, rowlabel)
local forms = alternant_multiword_spec.forms[slot]
local retval
if alternant_multiword_spec.rowprops.all_defective[rowslot] then
if not alternant_multiword_spec.rowprops.defective[rowslot] then
-- No forms, but none expected; don't display anything
return
end
retval = {label = "no " .. rowlabel}
elseif not forms then
retval = {label = "no " .. label}
elseif alternant_multiword_spec.rowprops.all_unknown[rowslot] then
retval = {label = "unknown " .. rowlabel}
elseif forms[1].form == "?" then
retval = {label = "unknown " .. label}
else
-- Disable accelerators for now because we don't want the added accents going into the headwords.
-- FIXME: We now have support in [[Module:accel]] to specify the target explicitly; we can use this
-- so we can add the accelerators back with a param to avoid the accents.
local accel_form = nil -- all_verb_slots[slot]
retval = {label = label, accel = accel_form and {form = accel_form} or nil}
local prev_footnotes = nil
-- If the footnotes for this form are the same as the footnotes for the preceding form or
-- contain the preceding footnotes, replace the footnotes that are the same with "ditto".
-- This avoids repetition on pages like [[succedere]] where the form ''succedétti'' has a long
-- footnote which gets repeated in the traditional form ''succedètti'' (which also has the
-- footnote "[traditional]").
for _, form in ipairs(forms) do
local quals, refs = require(inflection_utilities_module).
convert_footnotes_to_qualifiers_and_references(form.footnotes)
local quals_with_ditto = quals
if quals and prev_footnotes then
local quals_contains_previous = true
for _, qual in ipairs(prev_footnotes) do
if not m_table.contains(quals, qual) then
quals_contains_previous = false
break
end
end
if quals_contains_previous then
local inserted_ditto = false
quals_with_ditto = {}
for _, qual in ipairs(quals) do
if m_table.contains(prev_footnotes, qual) then
if not inserted_ditto then
table.insert(quals_with_ditto, "ditto")
inserted_ditto = true
end
else
table.insert(quals_with_ditto, qual)
end
end
end
end
prev_footnotes = quals
table.insert(retval, {term = form.form, q = quals_with_ditto, refs = refs})
end
end
table.insert(data.inflections, retval)
end
if alternant_multiword_spec.props.is_pronominal then
table.insert(data.inflections, {label = glossary_link("pronominal")})
end
if alternant_multiword_spec.props.impers then
table.insert(data.inflections, {label = glossary_link("impersonal")})
end
if alternant_multiword_spec.props.thirdonly then
table.insert(data.inflections, {label = "third-person only"})
end
local thirdonly = alternant_multiword_spec.props.impers or alternant_multiword_spec.props.thirdonly
local sing_label = thirdonly and "third-person singular" or "first-person singular"
for _, rowspec in ipairs {
{"pres", "present", true},
{"phis", "past historic", true},
{"pp", "past participle", true},
{"imperf", "imperfect"},
{"fut", "future"},
{"sub", "subjunctive"},
{"impsub", "imperfect subjunctive"},
} do
local rowslot, desc, always_show = unpack(rowspec)
local slot = rowslot .. (thirdonly and "3s" or "1s")
local must_show = alternant_multiword_spec.is_irreg[slot]
if always_show then
must_show = true
elseif rowslot == "imperf" and alternant_multiword_spec.props.has_explicit_stem_spec then
-- If there is an explicit stem spec, make sure it gets displayed; the imperfect is a good way of
-- showing this.
must_show = true
elseif not alternant_multiword_spec.forms[slot] then
-- If the principal part is unexpectedly missing, make sure we show this.
must_show = true
elseif alternant_multiword_spec.forms[slot][1].form == "?" then
-- If the principal part is unknown, make sure we show this.
must_show = true
end
if must_show then
if rowslot == "pp" then
do_verb_form(rowslot, desc, rowslot, desc)
else
do_verb_form(slot, sing_label .. " " .. desc, rowslot, desc)
end
end
end
-- Also do the imperative, but not for third-only verbs, which are always missing the imperative.
if not thirdonly and (alternant_multiword_spec.is_irreg.imp2s
or not alternant_multiword_spec.forms.imp2s) then
do_verb_form("imp2s", "second-person singular imperative", "imp", "imperative")
end
-- If there is a past participle but no auxiliary (e.g. [[malfare]]), explicitly add "no auxiliary". In
-- cases where there's no past participle and no auxiliary (e.g. [[irrompere]]), we don't do this as we
-- already get "no past participle" displayed. Don't display an auxiliary in any case if the lemma
-- consists entirely of reflexive verbs (for which the auxiliary is always [[essere]]).
if alternant_multiword_spec.props.is_non_reflexive and (
alternant_multiword_spec.forms.aux or alternant_multiword_spec.forms.pp
) then
do_verb_form("aux", "auxiliary", "aux", "auxiliary")
end
-- Add categories.
for _, cat in ipairs(alternant_multiword_spec.categories) do
table.insert(data.categories, cat)
end
-- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to
-- incorporate any links in that head into the 1= specification, use the infinitive generated by
-- [[Module:it-verb]] it in place of the user-specified or auto-generated head so that we get accents marked
-- on the verb(s). Don't do this if the user gave multiple heads or gave a head with a multiword-linked
-- verbal expression such as '[[dare esca]] [[al]] [[fuoco]]'.
if #data.user_specified_heads == 0 or (
#data.user_specified_heads == 1 and alternant_multiword_spec.incorporated_headword_head_into_lemma
) then
data.heads = {}
for _, lemma_obj in ipairs(alternant_multiword_spec.forms.inf) do
local quals, refs = require(inflection_utilities_module).
convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes)
table.insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs})
end
end
end
end
}
-----------------------------------------------------------------------------------------
-- Suffix forms --
-----------------------------------------------------------------------------------------
pos_functions["suffix forms"] = {
params = {
[1] = {required = true, list = true},
["g"] = {list = true},
["g_qual"] = {list = "g\1_qual", allow_holes = true},
},
func = function(args, data, tracking_categories, frame)
data.genders = {}
process_genders(data, args.g, args.g_qual)
local suffix_type = {}
for _, typ in ipairs(args[1]) do
table.insert(suffix_type, typ .. "-forming suffix")
end
table.insert(data.inflections, {label = "non-lemma form of " .. m_table.serialCommaJoin(suffix_type, {conj = "hoặc"})})
end,
}
-----------------------------------------------------------------------------------------
-- Arbitrary parts of speech --
-----------------------------------------------------------------------------------------
pos_functions["arbitrary part of speech"] = {
params = {
[1] = {required = true},
["g"] = {list = true},
["g_qual"] = {list = "g\1_qual", allow_holes = true},
},
func = function(args, data, tracking_categories, frame, is_suffix)
if is_suffix then
error("Can't use [[Template:it-pos]] with suffixes")
end
data.genders = {}
process_genders(data, args.g, args.g_qual)
local plpos = require(en_utilities_module).pluralize(args[1])
data.pos_category = plpos
end,
}
return export
tjuk5jihqh72q9piod1k060tsfa7vtm
công tử
0
263960
2362914
2049417
2026-05-31T06:59:07Z
Trong Dang
52461
/* */
2362914
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|公子}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
{{pn}}
# [[con trai|Con trai]] [[nhà quan]], [[nhà]] [[quyền quý]] [[thời phong kiến]] (có thể dùng để xưng gọi).
#: '''''Công tử''' Bạc Liêu.''
{{-ref-}}
{{R:Tratu|vi|vi}}
{{catname|Danh từ|tiếng Việt}}
6th0bb96adj1gsqgtcou67fyaztmjuo
oʻn
0
265560
2362835
2055468
2026-05-31T03:31:33Z
Kelly zhrm
58416
2362835
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "on"}}
=={{langname|uz}}==
{{number box|uz|10}}
{{uz-variant|a=ئون|c=ўн|r=oʻn|af=اۉن}}
==={{ĐM|etym}}===
{{inh+|uz|chg|اون|tr=ʾūn|ts=ʾōn}}, từ {{inh|uz|trk-pro|*ōn|t=mười}}.
==={{ĐM|pron}}===
* {{IPA4|uz|/ʔon/}}
* {{hyph|uz|oʻn}}
==={{ĐM|numeral}}===
{{head|uz|Số từ}}
# {{cln|uz|Số đếm}} [[mười|Mười]].
r4912ojruopfw271d8erw6wlzwzhro9
Wiktionary:GUS2Wiki
4
267278
2362677
2357393
2026-05-30T13:53:06Z
Alexis Jazz
41773
Updating gadget usage statistics from [[Special:GadgetUsage]] ([[phab:T121049]])
2362677
wikitext
text/x-wiki
{{#ifexist:Project:GUS2Wiki/top|{{/top}}|This page provides a historical record of [[Special:GadgetUsage]] through its page history. To get the data in CSV format, see wikitext. To customize this message or add categories, create [[/top]].}}
Dữ liệu dưới đây được đưa vào vùng nhớ đệm và được cập nhật lần cuối lúc 2026-05-28T23:54:15Z. Tối đa có sẵn {{PLURAL:5000|một kết quả|5000 kết quả}} trong vùng nhớ đệm.
{| class="sortable wikitable"
! Tiện ích !! data-sort-type="number" | Số người dùng !! data-sort-type="number" | Số thành viên tích cực
|-
|AcceleratedFormCreation || 6 || 3
|-
|AjaxEdit || 4 || 3
|-
|CommentsInLocalTime || 14 || 2
|-
|DejaVu Sans || 68 || 3
|-
|ShowIDs || 2 || 2
|-
|TabbedLanguages || 8 || 3
|-
|Twinkle || 7 || 4
|-
|UTCLiveClock || 11 || 2
|-
|hotcat || 74 || 7
|-
|linkify || 32 || 1
|-
|navpop || 64 || 2
|-
|purgetab || 67 || 3
|-
|removeAccessKeys || 14 || 0
|-
|tot || 5 || 0
|-
|wiked || 58 || 0
|}
* [[Đặc biệt:GadgetUsage]]
* [[m:Meta:GUS2Wiki/Script|GUS2Wiki]]
<!-- data in CSV format:
AcceleratedFormCreation,6,3
AjaxEdit,4,3
CommentsInLocalTime,14,2
DejaVu Sans,68,3
ShowIDs,2,2
TabbedLanguages,8,3
Twinkle,7,4
UTCLiveClock,11,2
hotcat,74,7
linkify,32,1
navpop,64,2
purgetab,67,3
removeAccessKeys,14,0
tot,5,0
wiked,58,0
-->
q6t078rcrexb57hy3boy87zr4ptd2i8
Thể loại:Mục từ tiếng Newa
14
268287
2362726
2065615
2026-05-31T00:08:24Z
TheHighFighter2
42988
/* */
2362726
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
yigirma
0
270019
2362834
2071119
2026-05-31T03:29:21Z
Kelly zhrm
58416
2362834
wikitext
text/x-wiki
=={{langname|uz}}==
{{number box|uz|20}}
==={{ĐM|etym}}===
Từ {{inh|uz|trk-pro|*yẹgirmi|t=hai mươi}}.
==={{ĐM|numeral}}===
{{head|uz|Số từ}}
# {{cln|uz|Số đếm}} [[hai mươi|Hai mươi]].
5cdla6m2xc0om9xoribwh0ev0yunekg
hiến tế
0
272716
2362925
2088228
2026-05-31T07:12:04Z
Trong Dang
52461
/* */
2362925
wikitext
text/x-wiki
{{-vie-}}
{{-info-}}
{{-etym-}}
{{vi-etym-sino|獻祭}}.
{{-pron-}}
{{vie-pron}}
{{-verb-}}
{{pn}}
# [[hiến tặng|Hiến tặng]], cung cấp [[đồ vật]], thực phẩm hoặc cuộc sống của con người hay động vật cho một mục đích cao hơn như đối với một [[vị thần]], [[thần linh]] như một sự ủng hộ hay [[thờ cúng]].
#: ''Lễ '''hiến tế''' động vật.''
{{-trans-}}
* {{eng}}: [[sacrifice]]
{{catname|Động từ|tiếng Việt}}
20f5vv6r28bpaspjq5mz7zl6nc2ku5y
bình thân
0
276051
2362908
2088137
2026-05-31T06:55:22Z
Trong Dang
52461
/* */
2362908
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|平身}}.
{{-pron-}}
{{vie-pron}}
{{-verb-}}
{{pn}}
# (Đang [[quỳ]] [[lạy]]) [[đứng dậy]] và [[thẳng]] [[người]] [[lên]] ([[thường dùng]] làm [[tiếng]] [[xướng]] trong [[tế lễ]] [[thời]] trước).
#: ''Người chủ tế nghe xướng '''“Bình thân”''' liền đứng thẳng lên.''
{{-ref-}}
{{R:Tratu|vi|vi}}
{{catname|Động từ|tiếng Việt}}
mbqxr30zm03cfkfu8zwhbulakehk7bi
dương thế
0
278220
2362922
2190380
2026-05-31T07:05:15Z
Trong Dang
52461
/* */
2362922
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|陽世}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
{{pn}}
# Như '''''[[dương gian]]'''''.
{{-syn-}}
* [[trần thế]]
{{mẫu}}
{{catname|Danh từ|tiếng Việt}}
{{-vi-m-}}
{{-noun-}}
{{mkh-mvi-noun}}
# {{l|vi|dương thế}}, {{l|vi|dương gian}}.
{{-desc-}}
* {{desc|vi|dương thế}}
{{-ref-}}
* {{R:VBL}}
4rlt6ovxxydjf066mbvin7uxtldgxg7
điện báo
0
282406
2362928
2103081
2026-05-31T07:15:58Z
Trong Dang
52461
/* */
2362928
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|電報}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
{{pn}}
# Phương thức truyền [[thông tin]] đi xa bằng [[tín hiệu]] điện.
{{catname|Danh từ|tiếng Việt}}
gb90gk8ln1s465axo08adbc10ea8307
ýigrimi
0
284639
2362684
2107864
2026-05-30T14:07:28Z
Kelly zhrm
58416
2362684
wikitext
text/x-wiki
=={{langname|tr}}==
{{number box|tk|20}}
==={{ĐM|etym}}===
{{inh+|tk|trk-pro|*yẹgirmi|t=hai mươi}}.
==={{ĐM|pron}}===
* {{hyph|tk|ýig|ri|mi}}
==={{ĐM|numeral}}===
{{head|tk|Số từ|cat2=Số đếm}}
# [[hai mươi|Hai mươi]].
==={{ĐM|further}}===
* {{R:tk:Enedilim}}
* {{R:tk:webonary}}
42ar12rllyd85dlasux18w3dmkd9okx
Bản mẫu:-aak-
10
288365
2362696
2361279
2026-05-30T15:13:16Z
Kateru Zakuro
34522
Thay thế bản mẫu [[:en:User:Ponor/wAwB| #wAwB]]
2362696
wikitext
text/x-wiki
__NOEDITSECTION__
=={{=nn|tiếng Ankave|aak}}==
<includeonly>{{Hcat-nn|[[Thể loại:Mục từ tiếng Ankave]][[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]}}</includeonly><noinclude>
[[Thể loại:Bản mẫu ngôn ngữ|*{{PAGENAME}}]]
{{Tài liệu đề mục}}</noinclude>
cvbz9yql5yxxajgkqqj2tqysy683dbe
2362701
2362696
2026-05-30T15:21:09Z
Kateru Zakuro
34522
Thay thế bản mẫu [[:en:User:Ponor/wAwB| #wAwB]]
2362701
wikitext
text/x-wiki
__NOEDITSECTION__
=={{=nn|tiếng Ankave|aak}}==
<includeonly>{{Hcat-nn|[[Thể loại:Mục từ tiếng Ankave]][[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]}}</includeonly><noinclude>
{{Tài liệu đề mục|1}}</noinclude>
eiape27bo54xb2abulinflvmoop0p5v
yedi
0
288532
2362680
2158530
2026-05-30T14:01:51Z
Kelly zhrm
58416
2362680
wikitext
text/x-wiki
{{also|yedí|yeᶁi|ýedi}}
=={{langname|crh}}==
{{crh-variant|c=еди}}
{{number box|crh|7}}
==={{ĐM|etym}}===
Từ {{inh|crh|trk-pro|*yẹt(t)i|t=bảy}}.
==={{ĐM|numeral}}===
{{head|crh|Số từ}}
# {{cln|crh|Số đếm}} [[bảy|Bảy]].
==={{ĐM|ref}}===
* {{R:crh:Luğatçıq}}
{{c|crh|Bảy}}
=={{langname|tr}}==
{{number box|tr|7}}
==={{ĐM|pron}}===
* {{IPA4|tr|/je.di/}}
* {{audio|tr|LL-Q256 (tur)-ToprakM-yedi.wav}}
==={{ĐM|etym}} 1===
{{inh+|tr|ota|یدی|tr=yedi}}, {{inh|tr|trk-pro|*yẹt(t)i||bảy}}. Cùng gốc với {{cog|otk|𐰘𐰃𐱅𐰃|tr=yeti|t=seven}}.<ref>{{R:otk:Bitig|jiti|110}}</ref>
===={{ĐM|numeral}}====
{{head|tr|Số từ}}
# {{cln|tr|Số đếm}} [[bảy|Bảy]].
==={{ĐM|etym}} 2===
===={{ĐM|v}}====
{{head|tr|Biến thể hình thái động từ}}
# {{tr-verb form of|yemek}}
==={{ĐM|ref}}===
<references/>
=={{langname|uz}}==
==={{ĐM|v}}===
{{head|uz|Biến thể hình thái động từ}}
# {{infl of|uz|yemoq||3|s|def|past}}
6uzmvh8x2z7ktksjduo6u49q7pkptch
2362681
2362680
2026-05-30T14:02:16Z
Kelly zhrm
58416
/* {{ĐM|etym}} 1 */
2362681
wikitext
text/x-wiki
{{also|yedí|yeᶁi|ýedi}}
=={{langname|crh}}==
{{crh-variant|c=еди}}
{{number box|crh|7}}
==={{ĐM|etym}}===
Từ {{inh|crh|trk-pro|*yẹt(t)i|t=bảy}}.
==={{ĐM|numeral}}===
{{head|crh|Số từ}}
# {{cln|crh|Số đếm}} [[bảy|Bảy]].
==={{ĐM|ref}}===
* {{R:crh:Luğatçıq}}
{{c|crh|Bảy}}
=={{langname|tr}}==
{{number box|tr|7}}
==={{ĐM|pron}}===
* {{IPA4|tr|/je.di/}}
* {{audio|tr|LL-Q256 (tur)-ToprakM-yedi.wav}}
==={{ĐM|etym}} 1===
{{inh+|tr|ota|یدی|tr=yedi}}, {{inh|tr|trk-pro|*yẹt(t)i||bảy}}. Cùng gốc với {{cog|otk|𐰘𐰃𐱅𐰃|tr=yeti|t=bảy}}.<ref>{{R:otk:Bitig|jiti|110}}</ref>
===={{ĐM|numeral}}====
{{head|tr|Số từ}}
# {{cln|tr|Số đếm}} [[bảy|Bảy]].
==={{ĐM|etym}} 2===
===={{ĐM|v}}====
{{head|tr|Biến thể hình thái động từ}}
# {{tr-verb form of|yemek}}
==={{ĐM|ref}}===
<references/>
=={{langname|uz}}==
==={{ĐM|v}}===
{{head|uz|Biến thể hình thái động từ}}
# {{infl of|uz|yemoq||3|s|def|past}}
70t8b692t9rh271tml1aew7i1qvwyo7
Bản mẫu:-aaq-
10
289065
2362697
2361280
2026-05-30T15:13:37Z
Kateru Zakuro
34522
Thay thế bản mẫu [[:en:User:Ponor/wAwB| #wAwB]]
2362697
wikitext
text/x-wiki
__NOEDITSECTION__
=={{=nn|tiếng Đông Abenaki|aaq}}==
<includeonly>{{Hcat-nn|[[Thể loại:Mục từ tiếng Đông Abenaki]][[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]}}</includeonly><noinclude>
[[Thể loại:Bản mẫu ngôn ngữ|*{{PAGENAME}}]]
{{Tài liệu đề mục}}
</noinclude>
8lgejcdr98lb6bdwryabmvv57kd0fl5
2362702
2362697
2026-05-30T15:21:20Z
Kateru Zakuro
34522
Thay thế bản mẫu [[:en:User:Ponor/wAwB| #wAwB]]
2362702
wikitext
text/x-wiki
__NOEDITSECTION__
=={{=nn|tiếng Đông Abenaki|aaq}}==
<includeonly>{{Hcat-nn|[[Thể loại:Mục từ tiếng Đông Abenaki]][[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]}}</includeonly><noinclude>
{{Tài liệu đề mục|1}}
</noinclude>
ioc92aopppuawyspfekp9hqoe5bqp3a
chư vị
0
299639
2362907
2147268
2026-05-31T06:55:05Z
Trong Dang
52461
/* */
2362907
wikitext
text/x-wiki
{{-vie-}}
{{-etym-}}
{{vi-etym-sino|諸位}}.
{{-pron-}}
{{vie-pron}}
{{-noun-}}
{{pn}}
# ''(Từ cũ, Kiểu cách)'' Từ dùng để [[xưng]] [[gọi]] [[chung]] [[tất cả]] những [[người]] đến [[dự]] cuộc [[họp]]; các vị.
#: ''Mời '''chư vị''' an toạ.''
# Các vị [[thần]] [[về]] Đạo giáo.
#: ''Thờ '''chư vị'''.''
{{catname|Danh từ|tiếng Việt}}
c0vnashhwlqg5eo62z5hr61rwr016e9
Bản mẫu:*đề mục/a
10
306553
2362708
2349664
2026-05-30T16:41:46Z
Hiyuune
50834
/* */
2362708
wikitext
text/x-wiki
{{-aak-}}
{{-aaq-}}
{{-aar-}}
{{-aas-}}
{{-aav-qal-}}
{{-aav-tam-}}
{{-abg-}}
{{-abh-}}
{{-abk-}}
{{-abq-}}
{{-abr-}}
{{-abs-}}
{{-aca-}}
{{-ace-}}
{{-ach-}}
{{-acw-}}
{{-acy-}}
{{-acz-}}
{{-adj-}}
{{-adv-}}
{{-adx-}}
{{-ady-}}
{{-adz-}}
{{-aem-}}
{{-aes-}}
{{-afr-}}
{{-agj-}}
{{-agq-}}
{{-agx-}}
{{-ahk-}}
{{-aib-}}
{{-aii-}}
{{-aij-}}
{{-aim-}}
{{-ain-}}
{{-aio-}}
{{-aiw-}}
{{-ajp-}}
{{-aka-}}
{{-akj-}}
{{-akk-}}
{{-akr-}}
{{-akv-}}
{{-akz-}}
{{-alc-}}
{{-ale-}}
{{-ali-}}
{{-alq-}}
{{-alr-}}
{{-alt-}}
{{-alu-}}
{{-alw-}}
{{-amc-}}
{{-amf-}}
{{-amh-}}
{{-aml-}}
{{-ams-}}
{{-amu-}}
{{-anagram-}}
{{-ane-}}
{{-ang-}}
{{-ani-}}
{{-anm-}}
{{-anp-}}
{{-anq-}}
{{-ant-}}
{{-any-}}
{{-aot-}}
{{-apd-}}
{{-apn-}}
{{-apq-}}
{{-apw-}}
{{-apy-}}
{{-aqc-}}
{{-ara-}}
{{-arc-}}
{{-arg-}}
{{-article-}}
{{-arz-}}
{{-asb-}}
{{-ase-}}
{{-asm-}}
{{-ast-}}
{{-atc-}}
{{-atv-}}
{{-aui-}}
{{-aux-verb-}}
{{-auz-}}
{{-ava-}}
{{-ave-}}
{{-avk-}}
{{-avu-}}
{{-awn-}}
{{-awx-}}
{{-aym-}}
{{-aze-}}
{{-azo-}}
fbfglxooevvgtc4raplqmbus2mz0zmp
Bản mẫu:gu-ndecl-table
10
306604
2362973
2286116
2026-05-31T09:52:41Z
Hiyuune
50834
2362973
wikitext
text/x-wiki
{{inflection-table-top|title=Biến cách của {{m-self|gu|{{pagename}}|tr=-}}{{#if:{{{title|}}}| {{{title}}}}}|palette=blue|tall=yes}}
|-
! class="outer" |
! class="outer" | số ít
! class="outer" | số nhiều
|-
! [[nominative|danh cách]]
| {{l-self|gu|{{{1}}}|accel-form=nom{{! }}s}}
| {{#if:{{{3<includeonly>|</includeonly>}}}|{{l-self|gu|[[{{{2}}}]], [[{{{3}}}]]|accel-form=nom{{! }}p}}|{{l-self|gu|{{{2}}}|accel-form=nom{{! }}p}}}}
|-
! [[oblique|bổ cách]]
| {{l-self|gu|{{{4}}}|accel-form=obl{{! }}s}}
| {{l-self|gu|{{{5}}}|accel-form=obl{{! }}p}}
|-
! [[vocative|hô cách]]
| {{l-self|gu|{{{6}}}|accel-form=voc{{! }}s}}
| {{l-self|gu|{{{7}}}|accel-form=voc{{! }}p}}
|-
! [[instrumental|cách công cụ]]
| {{l-self|gu|{{{8}}}|accel-form=ins{{! }}s}}
| {{l-self|gu|{{{9}}}|accel-form=ins{{! }}p}}
|-
! [[locative|định vị cách]]
| {{l-self|gu|{{{10}}}|accel-form=loc{{! }}s}}
| {{l-self|gu|{{{11}}}|accel-form=loc{{! }}p}}
{{inflection-table-bottom}}<noinclude>{{tài liệu}}</noinclude>
rcltdta9c9mze393prxi6xeqjdkunap
Mô đun:id-pron
828
307195
2362988
2223248
2026-05-31T10:53:55Z
Hiyuune
50834
2362988
Scribunto
text/plain
-- Based on [[Module:es-pronunc]] by Benwing2 and [[Module:ceb-pron]] by TagaSanPedroAko.
-- Original module by Rex Aurorum, improved by TagaSanPedroAko.
-- Partly rewritten by TagaSanPedroAko, merging code from [[Module:es-pronunc]] back into this module; {{tl-pr}} restructured
-- to take inline modifiers, like {{es-pr}}.
-- Modified for {{id-pr}}.
local export = {}
--[==[
FIXME:
1. Use apostrophe ' to mark irregular stress instead of macron (e.g 'a not ā)
2. Ability to fully detect plosives cluster with /r/ and /l/
3. Placement of stress where a word has schwas needs to be smarter (see [[w:Malay phonology]] for details). In entries and [[jenderal]], {{id-pr))/{{id-IPA}} would place the stress on wrong position (i.e. ultimate instead of penultimate) and currently needs adding a macron on vowel at syllable where stress actually applies. This rule doesn't seem to apply to affixed words with penultimate schwas such as [[menentang]] (root [[tentang]], which has ultimate stress), which should be pronounced with ultimate stress, so stress have to be applied manually.
4. Allow Q against K e.g. [[bapak]] respelled 'bapaq' with syllabification 'ba.pak', [[rakyat]] respelled 'raqyat' with syllabification
'rak.yat', . [DONE]
5. Fix syllabification of words with R followed by J e.g. [[kerja]], [[perjalanan]]. [DONE]
6. Fix syllabification of words with K pronounced as glottal stop (and respelled Q) followed by any consonant e.g. [[rakyat]], [[dakwa]], [[bakso]]. [DONE]
7. Allow syllabification of words with E respelled É and È. [DONE]
8. Diphthongs should not be split in syllabification. [DONE]
9. Final /k/ should be devoiced. [DONE]
10. "EU" found in borrowings and place names from Acehnese and Sundanese should be just rendered with schwa. [DONE]
11. Insert a /w/ or /j/ in vowel cluster beginning with /u/ or /i/ respectively. [TODO]
12. Diphthongs (ai, au, ei, ui) should be transcribed in phonemic IPA as vowel+i̯/u̯ instead of vowel+glide (j or w) [DONE]
13. Schwa insertion in pt and ps clusters as standard pronunciation and silent as nonstandard or English influenced pronunciation
]==]
local force_cat = false -- enable for testing
local m_IPA = require("Module:IPA")
local m_str_utils = require("Module:string utilities")
local m_table = require("Module:table")
local accent_qualifier_module = "Module:accent qualifier"
local audio_module = "Module:audio"
local headword_data_module = "Module:headword/data"
local hyphenation_module = "Module:hyphenation"
local labels_module = "Module:labels"
local parse_utilities_module = "Module:parse utilities"
local rhymes_module = "Module:rhymes"
local set_utilities_module = "Module:set utilities"
local lang = require("Module:languages").getByCode("id")
local rfind = m_str_utils.find
local rsubn = m_str_utils.gsub
local rsplit = m_str_utils.split
local toNFC = mw.ustring.toNFC
local toNFD = mw.ustring.toNFD
local trim = mw.text.trim
local u = m_str_utils.char
local ulen = m_str_utils.len
local ulower = m_str_utils.lower
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local AC = u(0x0301) -- acute = ́
local GR = u(0x0300) -- grave = ̀
local CFLEX = u(0x0302) -- circumflex = ̂
local MAC = u(0x0304) -- macron
local BR = u(0x0306) -- breve = ˘
local vowel = "aeéèiɨoòuəɛɔ" -- vowel
local V = "[" .. vowel .. "]"
local W = "[jw]" -- glide
local NV = "[^" .. vowel .. "]"
local accent = AC .. GR .. MAC .. BR
local accent_c = "[" .. accent .. "]"
local stress_c = "[" .. MAC .. BR .. "]"
local ipa_stress = "ˈ"
local ipa_stress_c = "[" .. ipa_stress .. "]"
local separator = accent .. ipa_stress .. "# .-"
local C = "[^" .. vowel .. separator .. "]" -- consonant
local unstressed_words = m_table.listToSet {
--prepositions
"di", "ké",
-- letter names. Excluding ones that also occur as regular words
"a", "bé", "cé", "dé", "é", "èf", "gé", "ha", "i", "jé", "èl", "èm", "èn", "o", "pé",
"ki", "èr", "té", "u", "vé", "wé", "èks", "yé", "zèt",
"dan" -- conjunction
}
local unstressed_affixes = m_table.listToSet {
-- NOTE: prefixes here aren't currently used with prefixes themselves because they are all assumed unstressed
-- in the absence of an explicit accent marker..
"-an", "-in", "ber-", "di-", "meng-", "me-", "peng-", "pe-", "per-", "-nya", "-mu", "-ku"
}
local function track(page)
require("Module:debug/track")("id-pron/" .. page)
return true
end
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
-- version of rsubn() that returns a 2nd argument boolean indicating whether
-- a substitution was made.
local function rsubb(term, foo, bar)
local retval, nsubs = rsubn(term, foo, bar)
return retval, nsubs > 0
end
-- apply rsub() repeatedly until no change
local function rsub_repeatedly(term, foo, bar)
while true do
local new_term = rsub(term, foo, bar)
if new_term == term then
return term
end
term = new_term
end
end
-- Combine two sets of qualifiers, either of which may be nil or a list of qualifiers. Remove duplicate qualifiers.
-- Return value is nil or a list of qualifiers.
local function combine_qualifiers(qual1, qual2)
if not qual1 then
return qual2
end
if not qual2 then
return qual1
end
local qualifiers = m_table.deepCopy(qual1)
for _, qual in ipairs(qual2) do
m_table.insertIfNot(qualifiers, qual)
end
return qualifiers
end
local function decompose(text)
-- decompose everything but é, è, Javanese ò
text = toNFD(text)
text = rsub(text, "." .. "[" .. AC .. CFLEX .. GR .. "]", {
["e" .. AC] = "é",
["e" .. GR] = "è",
["o" .. GR] = "ò", -- O as in the Javanese place names "Solo", "Purwokerto", "Probolinggo"
})
return text
end
local function remove_accents(str)
str = decompose(str)
str = rsub(str, "(.)" .. accent_c, "%1")
return str
end
local function split_on_comma(term)
if term:find(",%s") then
return require(parse_utilities_module).split_on_comma(term)
else
return rsplit(term, ",")
end
end
-- ĵ, ɟ and ć are used internally to represent [d͡ʒ], [j] and [t͡ʃ]
--
function export.IPA(text)
local debug = {}
text = ulower(text)
text = decompose(text)
-- convert commas and en/en dashes to IPA foot boundaries
text = rsub(text, "%s*[,–—]%s*", " | ")
-- question mark or exclamation point in the middle of a sentence -> IPA foot boundary
text = rsub(text, "([^%s])%s*[!?]%s*([^%s])", "%1 | %2")
-- canonicalize multiple spaces and remove leading and trailing spaces
local function canon_spaces(text)
text = rsub(text, "%s+", " ")
text = rsub(text, "^ ", "")
text = rsub(text, " $", "")
return text
end
text = canon_spaces(text)
-- Make prefixes unstressed unless they have an explicit stress marker; also make certain
-- monosyllabic words (e.g. [[di]], [[ke]], [[se-]], [[meng-]], etc.) without stress marks be
-- unstressed.
local words = rsplit(text, " ")
for i, word in ipairs(words) do
if rfind(word, "%-$") and not rfind(word, accent_c) or unstressed_words[word] then
-- add BR to the last vowel not the first one
-- adding the BR after the 'u'
words[i] = rsub(word, "^(.*" .. V .. ")", "%1" .. BR)
end
end
text = table.concat(words, " ")
-- Convert hyphens to spaces
text = rsub(text, "%-", " ")
-- canonicalize multiple spaces again, which may have been introduced by hyphens
text = canon_spaces(text)
-- now eliminate punctuation
text = rsub(text, "[!?']", "")
-- put # at word beginning and end and double ## at text/foot boundary beginning/end
text = rsub(text, " | ", "# | #")
text = "##" .. rsub(text, " ", "# #") .. "##"
table.insert(debug, text)
--"i" or "u" as part of diphthongs. to indicate these should be separate sounds, add a period.
text = rsub(text, "(" .. V .. ")i([#.])", "%1i̯%2")
text = rsub(text, "(" ..V.. ")u([#.])", "%1u̯%2")
-- syllable-initial X (e.g. in [[xenofobia]], [[xenon]], [[xilofon]])
text = rsub(text, "x("..V..")", "s%1")
-- handle certain combinations; eu, kh, ng, ny and sy handling needs to go first, so is word-initial ps/pt
text = rsub(text, "eu", "ə") -- as used in Acehnese and Sundanese (e.g. [[Lhokseumawe]])
text = rsub(text, "kh", "x")
text = rsub(text, "ng", "ŋ")
text = rsub(text, "ny", "ɲ")
text = rsub(text, "sy", "ʃ")
text = rsub(text, "([#])p([st])", "pə.%2") -- e.g. [[psikologi]], [[pterodaktil]]
text = rsub(text, "bh", "b") -- in terms from Sanskrit e.g. [[bhakti]], [[bhayangkara]]
table.insert(debug, text)
--alphabet-to-phoneme
text = rsub(text, "[ceéègjòqvy]",
--["g"]="ɡ": U+0067 LATIN SMALL LETTER G → U+0261 LATIN SMALL LETTER SCRIPT G
{ ["c"] = "ć", ["e"] = "ə", ["é"] = "e", ["è"] = "ɛ", ["g"] = "ɡ", ["j"] = "ĵ", ["ò"] = "ɔ", ["q"] = "ʔ", ["y"] = "j" })
-- reduce any remaining double consonants (e.g. [[massa]], [[Makassar]], [[Tallo]]);
text = rsub(text, "(" .. C .. ")%1", "%1")
--syllable division
local vowel_to_glide = { ["i"] = "j", ["o"] = "w", ["u"] = "w" }
-- i, o and u between vowels -> j and w e.g. [[rangkaian]])
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)([iou])(" .. V .. ")",
function(v1, iou, v2)
return v1 .. vowel_to_glide[iou] .. v2
end
)
table.insert(debug, text)
-- "mb", "mp", "nd", "nk", "nt" combinations
text = rsub_repeatedly(text, "(m)([bp])([^hlrɟ" .. vowel .. separator .."])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "(n)([dkt])([^hlrɟ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "(n)([s])([^lrt" .. vowel .. separator .. "])(" .. V .. ")", "%1.%2%3%4")
text = rsub_repeatedly(text, "(ŋ)([k])([^hlrɟ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "([r])([bćdfɡklmnpsʃvz])([^hlrɟ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "([r])([t])([sz]?)([^hlrɟsʃ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2%3.%4%5")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. W .. "?" .. V .. ")", "%1.%2")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. ")(" .. C .. V .. ")", "%1.%2")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2")
text = rsub_repeatedly(text, "(" .. C .. ")%.s(" .. C .. ")", "%1s.%2")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)("..V..")", "%1.%2")
--fix diphthongs before stress is applied.
text = rsub(text, "(" .. V .. ")([.])i̯([#.])", "%1i̯%3")
text = rsub(text, "(" ..V.. ")([.])u̯([#.])", "%1u̯%3")
table.insert(debug, text)
local accent_to_stress_mark = { [MAC] = "ˈ", [BR] = "" }
local function accent_word(word, syllables)
-- Now stress the word. If any accent exists in the word (including macron indicating an unaccented word),
-- put the stress mark(s) at the beginning of the indicated syllable(s). Otherwise, apply the default
-- stress rule.
if rfind(word, accent_c) then
for i = 1, #syllables do
syllables[i] = rsub(syllables[i], "^(.*)(" .. accent_c .. ")(.*)$",
function(pre, accent, post)
return accent_to_stress_mark[accent] .. pre .. post
end
)
end
else
-- Default stress rule. Words without vowels (e.g. IPA foot boundaries) don't get stress.
if #syllables == 1 and rfind(word, V) then
syllables[#syllables] = "ˈ" ..syllables[#syllables] -- Monosyllabic words with schwa don't get stress
elseif #syllables == 2 and rfind(word, "([ə])(".. C .."?)([#])") then
syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1]
elseif #syllables == 2 and rfind(word, "([ə])(".. C .."?)([.])") then
syllables[#syllables] = "ˈ" .. syllables[#syllables]
elseif #syllables >= 3 and rfind(word, "([.])(".. C .."?)([ə])(".. C .."?)([.])(".. C .."?)(".. V ..")(".. V .."?)(".. C .."?)(".. C .."?)([#])") then
syllables[#syllables] = "ˈ" .. syllables[#syllables]
elseif #syllables > 1 then
syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1]
end
end
end
local words = rsplit(text, " ")
for j, word in ipairs(words) do
-- accentuation
local syllables = rsplit(word, "%.")
accent_word(word, syllables)
-- Reconstruct the word.
words[j] = table.concat(syllables, ".")
end
text = table.concat(words, " ")
-- suppress syllable mark before IPA stress indicator
text = rsub(text, "%.(" .. ipa_stress_c .. ")", "%1")
--make all primary stresses but the last one be secondary
text = rsub_repeatedly(text, "ˈ(.+)ˈ", "ˌ%1ˈ")
table.insert(debug,text)
--correct final consonant placement before Y or W
text = rsub(text,"([.])(".. C ..")([ɟjw])(" .. V .. ")","%2%1%3%4")
table.insert(debug,text)
text = rsub_repeatedly(text, "^([#]*)([ˈˌ])([#]*)", "%1%3%2") -- Move stress inside word boundary fix at start
text = rsub_repeatedly(text, "([ ])([#]*)([ˈˌ])([#]*)", "%1%2%4%3") -- Move stress inside word boundary fix at start
local id_IPA_table = {
["phonetic"] = text,
["phonemic"] = text,
["raw"] = text
}
for key, value in pairs(id_IPA_table) do
text = id_IPA_table[key]
--phonetic transcription
if key == "phonetic" then
table.insert(debug, text)
--vowel plus glide to diphthong (to handle examples such as [[siomay]], [[Mongondow]], [[kuproy]])
text = rsub(text, "([aeou])([jɟ])([#.ˈ])", "%1i̯%3")
text = rsub(text, "([a])w([#.ˈ])", "%1u̯%2")
table.insert(debug, text)
--change i, u in closed final syllables
text = rsub(text, "(".. C .."?)i(".. C ..")([#])","%1ɪ%2%3")
text = rsub(text, "(".. C .."?)u(".. C ..")([#])","%1ʊ%2%3")
text = rsub(text, "(".. C .."?)e(".. C ..")([#])","%1ɛ%2%3")
text = rsub(text, "(".. C .."?)o(".. C ..")([#])","%1ɔ%2%3")
table.insert(debug, text)
--i, u in closed stressed syllables with nasal coda
text = rsub(text, "([ˈ])(".. C .. ")ɪ([mnŋ])([.#])","%1%2i%3%4")
text = rsub(text, "([ˈ])(" .. C .. ")ʊ([mnŋ])([.#])","%1%2u%3%4")
text = rsub(text, "([ˈ])(".. C .. ")ɛ([mnŋ])([.#])","%1%2e%3%4")
text = rsub(text, "([ˈ])(" .. C .. ")ɔ([mnŋ])([.#])","%1%2o%3%4")
table.insert(debug, text)
-- prevent unreleased plosives before syllables starting with j or w
text = rsub(text, "p([#.ˈ])([jw])", "p%1%2")
text = rsub(text, "t([#.ˈ])([jw])", "t̪%1%2")
text = rsub(text, "k([#.ˈ])([jw])", "k%1%2")
text = rsub(text, "b([#.ˈ])([jw])", "b%1%2")
text = rsub(text, "d([#.ˈ])([jw])", "d%1%2")
text = rsub(text, "ɡ([#.ˈ])([jw])", "ɡ%1%2")
-- then apply the usual final-stop unreleased rule safely
text = rsub(text, "[bp]([#.ˈ])","p̚%1")
text = rsub(text, "[dt]([#.ˈ])","t̚%1")
text = rsub(text, "[ɡk]([#.ˈ])","k̚%1")
--Indonesian /t/ is dental
text = rsub(text, "t","t̪")
--/n/ sandhi
text = rsub(text,"([n])([ˈˌ# .]*[ćĵʃ])","ɲ%2")
text = rsub(text,"([n])([ˈˌ# .]*[t])", "n̪%2")
--V to F
text = rsub(text, "v","f")
--final fix for phonetic diphthongs
text = rsub(text,"(".. V ..")ɪ̯","%1i̯") -- ai, ei
text = rsub(text,"(".. V ..")ʊ̯","%1u̯") --au
-- insert optional glottal stop between identical vowels (e.g., aa → a(ʔ)a)
text = rsub(text, "([aeiouɛɔɪʊə])%.?%1", "%1.(ʔ)%1")
mw.log(text)
end
table.insert(debug, text)
-- convert fake symbols to real ones
local final_conversions = {
["ć"] = "t͡ʃ", -- fake "c" to real "c"
["ɟ"] = "j", -- fake "i" to real "i"
["ĵ"] = "d͡ʒ" -- fake "j" to real "j"
}
text = rsub(text, "[ćɟĵ]", final_conversions)
-- Do not have multiple syllable break consecutively
text = rsub_repeatedly(text, "([.]+)", ".")
text = rsub_repeatedly(text, "([.]?)(‿)([.]?)", "%2")
-- remove # symbols at word and text boundaries
text = rsub_repeatedly(text, "([.]?)#([.]?)", "")
-- resuppress syllable mark before IPA stress indicator
text = rsub(text, "%.(" .. ipa_stress_c .. ")", "%1")
text = rsub_repeatedly(text, "([.]?)(" .. ipa_stress_c .. ")([.]?)", "%2")
id_IPA_table[key] = canon_spaces(toNFC(text))
end
return id_IPA_table
end
function export.show(frame)
local params = {
[1] = {},
["pre"] = {},
["bullets"] = {type = "number", default = 1},
}
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local results = {}
local text = args[1] or mw.loadData("Module:headword/data").pagename
local IPA_result = export.IPA(text)
table.insert(results, { pron = "/" .. IPA_result["phonemic"] .. "/" })
table.insert(results, { pron = "[" .. IPA_result["phonetic"] .. "]" })
local pre = args.pre and args.pre .. " " or ""
local bullet = (args.bullets ~= 0) and "* " or ""
return bullet .. pre .. m_IPA.format_IPA_full { lang = lang, items = results }
end
local function parse_gloss(arg)
local poses, gloss
if arg:find("%^") then
poses, gloss = arg:match("^(.-)%^(.*)$")
if gloss == "" then
gloss = nil
end
else
gloss = arg
end
if poses then
poses = split_on_comma(poses)
local m_headword_data = mw.loadData(headword_data_module)
for i, pos in ipairs(poses) do
poses[i] = m_headword_data.pos_aliases[pos] or pos
end
end
return {
poses = poses,
gloss = gloss,
}
end
-- Parse a raw accent spec, which is one or more comma-separated accent qualifiers.
local function parse_accents(arg)
return require(labels_module).split_labels_on_comma(arg)
end
-- Return the number of syllables of a phonemic or phonetic representation, which should have syllable dividers in it
-- but no hyphens.
local function get_num_syl_from_ipa(pron)
-- Maybe we should just count vowels instead of the below code.
pron = rsub(pron, "|", " ") -- remove IPA foot boundaries
local words = rsplit(pron, " +")
for i, word in ipairs(words) do
-- IPA stress marks are syllable divisions if between characters; otherwise just remove.
word = rsub(word, "(.)[ˌˈ](.)", "%1.%2")
word = rsub(word, "[ˌˈ]", "")
words[i] = word
end
-- There should be a syllable boundary between words.
pron = table.concat(words, ".")
return ulen(rsub(pron, "[^.]", "")) + 1
end
-- Get the rhyme by truncating everything up through the last stress mark + any following consonants, and remove
-- syllable boundary markers.
local function convert_phonemic_to_rhyme(phonemic)
-- NOTE: This works because the phonemic vowels are just [aeiou] possibly with diacritics that are separate
-- Unicode chars.
phonemic = rsplit(phonemic, " ")
phonemic = phonemic[#phonemic]
phonemic = rsub(rsub(phonemic, ".*[ˌˈ]", ""), "^" .. NV .. "*", ""):gsub("%.", "")
phonemic = rsub_repeatedly(phonemic, "^[iu](" .. V .. ")", "%1" )
return phonemic
end
local function split_syllabified_spelling(spelling)
spelling = "#" .. spelling .. "#"
spelling = rsub_repeatedly(spelling, "%.([ #])", "·%1")
spelling = rsub_repeatedly(spelling, "#", "")
spelling = rsplit(spelling, "%.")
for key, value in ipairs(spelling) do
spelling[key] = rsub_repeatedly(value, "·", ".")
end
return spelling
end
-- "Align" syllabified respelling `syllab` to original spelling `spelling` by matching character-by-character, allowing
-- for extra syllable and accent markers in the syllabification and certain mismatches in the consonants. The goal is to
-- produce the appropriately syllabified version of the original spelling (the pagename) by matching characters in the
-- syllabified respelling to the original spelling, putting the syllable boundaries in the appropriate places in the
-- original spelling.
--
-- If we encounter an extra syllable marker (.), we allow and keep it. If we encounter an extra accent marker in thes
-- syllabification, we drop it. We allow for mismatches in capitalization and for certain other mismatches, e.g. extra
-- glottal stops (written q), respelling of unadapted loanwords, etc. If we can't match, we return nil
-- indicating the alignment failed.
local function align_syllabification_to_spelling(syllab, spelling)
local result = {}
local function concat_result()
-- Postprocess to remove dots (syllable boundaries) next to hyphens.
return (toNFC(table.concat(result)):gsub("%.%-", "-"):gsub("%-%.", "-"))
end
-- Replace glottal stop (q) from respelling with k, as found for original
-- spelling. (FIXME: Diacritics should be removed , but they're currently removed earlier, in
-- syllabify_from_spelling(). We should probably get rid of the removal there and put it here.)
syllab = decompose(syllab:gsub("ː", "")):gsub("7", "q")
local syll_chars = rsplit(ulower(syllab), "")
local spelling_chars = rsplit(spelling, "")
local i = 1
local j = 1
local function matches(uci, ucj)
-- Return true if a syllabified respelling character (uci) matches the corresponding spelling char (ucj).
-- Both uci and ucj should be lowercase.
-- Sound is at the key, values are the letters sound can match
local matching_chars = {
["e"] = {"e", "a"},
["k"] = {"k", "q"},
["s"] = {"j", "c", "x"}
}
return uci == ucj or (matching_chars[uci] and m_table.contains(matching_chars[uci], ucj) and true) or false
end
local function silent_spelling_letter(ucj)
return ucj == "h" or ucj == "'" or ucj == "-"
end
local function syll_at(pos)
return syll_chars[pos] or ""
end
local function spell_at(pos)
return spelling_chars[pos] or ""
end
local function uspell_at(pos)
local c = spelling_chars[pos]
return c and ulower(c) or ""
end
while i <= #syll_chars or j <= #spelling_chars do
local uci = syll_at(i)
local cj = spell_at(j)
local ucj = uspell_at(j)
if uci == "g" and syll_at(i - 1) == "n" and syll_at(i + 1) == "." and matches(syll_at(i + 2), ucj) and
not matches(syll_at(i + 2), uspell_at(j + 1)) then
-- As a special case, before checking whether the corresponding characters match, we have to skip an extra
-- g in an -ng- sequence in the syllabified respelling if the corresponding spelling character matches the
-- next respelling character (taking into account the syllable boundary).
i = i + 1
elseif uci == "g" and ucj == "g" and uspell_at(j + 1) == TILDE then
table.insert(result, cj)
table.insert(result, uspell_at(j + 1))
i = i + 1
j = j + 2
elseif matches(uci, ucj) then
table.insert(result, cj)
i = i + 1
j = j + 1
elseif ucj == uspell_at(j - 1) and uci == "." and ucj ~= syll_at(i + 1) then
-- See below. We want to allow for a doubled letter in spelling that is pronounced single, and preserve the
-- doubled letter. But it's tricky in the presence of syllable boundaries on both sides of the doubled
-- letter as well as doubled letters pronounced double. Specifically, there are three possibilities,
-- exemplified by:
-- (1) syll='Ma.ka.ssar', spelling='Makassar' -> 'Ma.ka.ssar';
-- (2) syll='Ta.llo', spelling='Tallo' -> 'Ta.llo'.
table.insert(result, cj)
j = j + 1
elseif silent_spelling_letter(ucj) and uci == "." and ucj ~= syll_at(i + 1) and
not rfind(uspell_at(j + 1), V) then
-- See below for apostrophe in spelling. This condition is parallel to the one directly above
-- for silent doubled letters in spelling and handles the case of syllab='Abdurrahmān', spelling='Abdurahman',
-- which should be syllabified 'Ab.du.rrah.man'. But we need a check to see that the next spelling character
-- isn't a vowel, because in that case we want the silent letter to go after the period, e.g.
-- syllab='Jumu.ah', spelling='Jumu'ah' -> 'Ju.mu.ah'.
table.insert(result, cj)
j = j + 1
elseif uci == "." then
table.insert(result, uci)
i = i + 1
elseif ucj == uspell_at(j - 1) then
-- A doubled letter in spelling that is pronounced single. Examples:
-- * syllab='mas.sa', spelling='massa' -> 'masa' (with s)
-- * syllab='Ma.kas.sar', spelling='Makassar' -> 'Ma.ka.ssar' (with s)
-- * syllab='Ka.a.ba', spelling='Kaaba' -> 'Kaa.ba' (with a)
-- * syllab='Tal.lo', spelling='Tallo' -> 'Tal.lo' (with l)
table.insert(result, cj)
j = j + 1
elseif silent_spelling_letter(ucj) then
-- A silent h, apostrophe or hyphen in spelling. Examples:
-- * syllab='Ramadān', spelling='Ramadhan' -> 'Ra.ma.dhan'
table.insert(result, cj)
j = j + 1
elseif uci == AC or uci == GR or uci == MAC or uci == BR or
uci == "y" or uci == "w" then
-- skip character
i = i + 1
else
-- non-matching character
mw.log(("Syllabification alignment mismatch for pagename '%s' (position %s, character %s), syllabified respelling '%s' (position %s, character %s), aligned result so far '%s'"
):format(spelling, j, ucj, syllab, i, uci, concat_result()))
return nil
end
end
if i <= #syll_chars or j <= #spelling_chars then
-- left-over characters on one side or the other
mw.log(("Syllabification alignment mismatch for pagename '%s' (%s), syllabified respelling '%s' (%s), aligned result so far '%s'"
):format(
spelling, j > #spelling_chars and "end of string" or ("position %s, character %s"):format(j, uspell_at(j)),
syllab, i > #syll_chars and "end of string" or ("position %s, character %s"):format(i, syll_at(i)),
concat_result()))
return nil
end
return concat_result()
end
local function generate_syll_obj(term)
return {syllabification = term, hyph = split_syllabified_spelling(term)}
end
-- Word should already be decomposed.
local function word_has_vowels(word)
word = ulower(word)
return rfind(word, V) or word:find("y")
end
local function any_words_have_vowels(term)
local words = rsplit(decompose(term), "[ %-]")
for i, word in ipairs(words) do
-- Allow empty word; this occurs with prefixes and suffixes.
if word_has_vowels(word) then
return true
end
end
return false
end
local function should_generate_rhyme_from_respelling(term)
local words = rsplit(decompose(term), " +")
local last_word = words[#words]
local should_generate_cat = #words == 1
local should_generate_rhyme =
not last_word:find("%-$") and -- no if word is a prefix
not (last_word:find("^%-") and last_word:find(MAC)) and -- no if word is an unstressed suffix
word_has_vowels(last_word) -- no if word has no vowels (e.g. a single letter)
return should_generate_rhyme, should_generate_cat
end
local function should_generate_rhyme_from_ipa(ipa)
local should_generate_cat = not ipa:find("%s")
local should_generate_rhyme = word_has_vowels(decompose(ipa))
return should_generate_rhyme, should_generate_cat
end
local function should_generate_rhyme_from_termobj(termobj)
if termobj.raw then
return should_generate_rhyme_from_ipa(termobj.raw_phonemic or termobj.raw_phonetic)
else
return should_generate_rhyme_from_respelling(termobj.term)
end
end
local function process_specified_rhymes(rhymes, sylls, parsed_respellings)
local rhyme_ret = {}
for _, rhyme in ipairs(rhymes) do
local num_syl = rhyme.num_syl
local no_num_syl = false
-- If user explicitly gave the rhyme but didn't explicitly specify the number of syllables, try to take it from
-- the syllabification.
if not num_syl then
num_syl = {}
for _, syll in ipairs(sylls) do
if should_generate_rhyme_from_respelling(syll.syllabification) then
local this_num_syl = 1 + ulen(rsub(syll.syllabification, "[^.]", ""))
m_table.insertIfNot(num_syl, this_num_syl)
else
no_num_syl = true
break
end
end
if no_num_syl or #num_syl == 0 then
num_syl = nil
end
end
-- If that fails and term is single-word, try to take it from the phonemic.
if not no_num_syl and not num_syl then
for _, parsed in ipairs(parsed_respellings) do
for _, pronun in ipairs(parsed.pronuns) do
-- Check that pronun.phonemic exists (it may not if raw phonetic-only pronun is given), and rhyme
-- isn't suppressed (which may happen if the term has a qualifier "colloquial", "obsolete" or the
-- like or is an auto-generated "glottal stop elision" pronunciation).
if pronun.phonemic and not pronun.no_rhyme then
if not should_generate_rhyme_from_ipa(pronun.phonemic) then
no_num_syl = true
break
end
-- Count number of syllables by looking at syllable boundaries (including stress marks).
local this_num_syl = get_num_syl_from_ipa(pronun.phonemic)
m_table.insertIfNot(num_syl, this_num_syl)
end
end
if no_num_syl then
break
end
end
if no_num_syl or #num_syl == 0 then
num_syl = nil
end
end
local rhymeobj = m_table.shallowCopy(rhyme)
rhymeobj.num_syl = num_syl
table.insert(rhyme_ret, rhymeobj)
end
end
-- Parse a pronunciation modifier in `arg`, the argument portion in an inline modifier (after the prefix), which
-- specifies a pronunciation property such as rhyme, syllabification, homophones or audio. The argument can itself have
-- inline modifiers, e.g. <audio:Foo.ogg<a:Jakarta>>. The allowed inline modifiers are specified by `param_mods` (of
-- the format expected by `parse_inline_modifiers()`); in addition to any modifiers specified there, the modifiers
-- <q:...>, <qq:...>, <a:...> and <aa:...> are always accepted (and can be repeated). `generate_obj` and `parse_err` are
-- like in `parse_inline_modifiers()` and specify respectively a function to generate the object into which modifier
-- properties are stored given the non-modifier part of the argument, and a function to generate an error message (given
-- the message). Normally, a comma-separated list of pronunciation properties is accepted and parsed, where each element
-- in the list can have its own inline modifiers and where no spaces are allowed next to the commas in order for them to
-- be recognized as separators. If `no_split_on_comma` is given, only a single pronunciation property is accepted. If
-- `has_outer_container` is given, the list of pronunciation properties is embedded in the `terms` property of an outer
-- container, into which other list-level modifiers can also be stored (by setting `overall = "true"` in the respective
-- spec in `param_mods`). The return value is a list if neither `no_split_on_comma` nor `has_outer_container` are given,
-- otherwise a container object (which, in the case of `has_outer_container`, will contain a list inside of it, in the
-- `terms` property).
local function parse_pron_modifier(arg, parse_err, generate_obj, param_mods, no_split_on_comma, has_outer_container)
if arg:find("<") then
local insert = { store = "insert" }
param_mods.q = insert
param_mods.qq = insert
param_mods.a = insert
param_mods.aa = insert
return require(parse_utilities_module).parse_inline_modifiers(arg, {
param_mods = param_mods,
generate_obj = generate_obj,
parse_err = parse_err,
splitchar = not no_split_on_comma and "," or nil,
outer_container = has_outer_container and {} or nil,
})
elseif no_split_on_comma then
return generate_obj(arg)
else
local retval = {}
for _, term in ipairs(split_on_comma(arg)) do
table.insert(retval, generate_obj(term))
end
if has_outer_container then
retval = {
terms = retval,
}
end
return retval
end
end
local function parse_rhyme(arg, parse_err)
local function generate_obj(term)
return {rhyme = term}
end
local param_mods = {
s = {
item_dest = "num_syl",
type = "number",
sublist = true,
},
}
return parse_pron_modifier(arg, parse_err, generate_obj, param_mods)
end
local function parse_syll(arg, parse_err)
local param_mods = {
cap = { overall = true},
}
-- We need to pass in has_outer_container because we have an overall property <cap:...> (the caption, defaulting
-- to "Syllabification") applying to the whole set of syllabifications.
return parse_pron_modifier(arg, parse_err, generate_syll_obj, param_mods, nil, "has outer container")
end
local function parse_homophone(arg, parse_err)
local function generate_obj(term)
return {term = term}
end
local param_mods = {
t = {
-- [[Module:links]] (called from [[Module:homophones]]) expects the gloss in "gloss".
item_dest = "gloss",
},
gloss = {},
pos = {},
alt = {},
lit = {},
id = {},
g = {
-- [[Module:links]] (called from [[Module:homophones]]) expects the genders in "genders".
item_dest = "genders",
sublist = true,
},
}
return parse_pron_modifier(arg, parse_err, generate_obj, param_mods)
end
local function generate_audio_obj(arg)
local file, gloss = arg:match("^(.-)%s*#%s*(.*)$")
if not file then
file = arg
gloss = "Audio"
end
return {file = file, gloss = gloss}
end
local function parse_audio(arg, parse_err)
-- None other than qualifiers
local param_mods = {}
-- Don't split on comma because some filenames have embedded commas not followed by a space (typically followed by
-- an underscore).
return parse_pron_modifier(arg, parse_err, generate_audio_obj, param_mods, "no split on comma")
end
local function syllabify_from_spelling(text, pagename)
-- Auto syllabifications start --
local vowel = vowel .. "ẃý" -- vowel
local V = "[" .. vowel .. "]"
local NV = "[^" .. vowel .. "]"
local C = "[^" .. vowel .. separator .."]" -- consonant
text = decompose(text)
local origtext = remove_accents(text)
text = string.lower(text)
text = rsub(text, "[.] ", "․ ")
text = rsub(text, "[.]$", "․")
-- put # at word beginning and end and double ## at text/foot boundary beginning/end
text = rsub(text, " | ", "# | #")
text = "##" .. rsub(text, " ", "# #") .. "##"
text = rsub_repeatedly(text, "([.]?)#([.]?)", "#")
text = rsub(text, "bh", "β")
text = rsub(text, "eu", "ɨ")
text = rsub(text, "ng", "ŋ")
text = rsub(text, "ny", "ɲ")
text = rsub(text, "c", "ć")
text = rsub(text, "j", "ĵ")
text = rsub(text, "kh", "x")
text = rsub(text, "sy", "ʃ")
text = rsub(text, "ʔ(["..separator.."])", "q%1")
text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ẃ([bdfgkpt])([r" .. vowel .. separator .."])" ,"%1%2w%3%4")
text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ẃ([bfgkp])([l" .. vowel .. separator .."])" ,"%1%2w%3%4")
text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ý([bdfgkpt])([r" .. vowel .. separator .."])" ,"%1%2y%3%4")
text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ý([bfgkp])([l" .. vowel .. separator .."])" ,"%1%2y%3%4")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. V .. ")", "%1.%2")
-- "mb", "mp", "nd", "nk", "nt" combinations
text = rsub_repeatedly(text, "(m)([bp])([^lrɟy" .. vowel .. separator .."])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "(n)([dk])([^lrɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "(n)([s])([^ɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "(n)([t])([^lrɟys" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "(ŋ)([k])([^lrɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "([r])([bćdfgklmnpsʃvz])([^lrɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4")
text = rsub_repeatedly(text, "([r])([t])([sz]?)([^lrɟysʃ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2%3.%4%5")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. W .. "?" .. V .. ")", "%1.%2")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. ")(" .. C .. V .. ")", "%1.%2")
text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2")
text = rsub_repeatedly(text, "(" .. C .. ")%.s(" .. C .. ")", "%1s.%2")
-- Any aeéèo, or stressed iu, should be syllabically divided from a following aeéèo or stressed iu.
text = rsub_repeatedly(text, "([aeéèo]" .. accent_c .. "*)([aeéèo])", "%1.%2")
text = rsub_repeatedly(text, "([aeéèo]" .. accent_c .. "*)(" .. V .. accent_c .. ")", "%1.%2")
text = rsub(text, "([iu]" .. accent_c .. ")([aeéèo])", "%1.%2")
text = rsub_repeatedly(text, "([iu]" .. accent_c .. ")(" .. V .. accent_c .. ")", "%1.%2")
text = rsub_repeatedly(text, "i(" .. accent_c .. "*)i", "i%1.i")
text = rsub_repeatedly(text, "u(" .. accent_c .. "*)u", "u%1.u")
text = rsub_repeatedly(text, "i([aeéèou])", "i.%1")
text = rsub_repeatedly(text, "u([aeéèio])", "u.%1")
--correct final consonant placement before any glides (e.g. in [[rakyat]], [[dakwa]] [[jadwal]])
text = rsub(text,"([.])(".. C .. ")(".. W ..")(" .. V .. ")","%2%1%3%4")
text = rsub(text, "β", "bh")
text = rsub(text, "ć", "c")
text = rsub(text, "ĵ", "j")
text = rsub(text, "x", "kh")
text = rsub(text, "ŋ", "ng")
text = rsub(text, "ɲ", "ny")
text = rsub(text, "ʃ", "sy")
text = rsub(text, "q", "k")
text = rsub(text, "ɨ", "eu")
text = rsub(text, "([éè])", "e")
text = rsub(text, "ò", "o")
text = remove_accents(text)
text = rsub_repeatedly(text, "([.]+)", ".")
text = rsub(text, "[.]?-[.]?", "-")
text = rsub(text, "[‿]([^ ])", "|%1")
text = rsub(text, "[.]([^ ])", "|%1")
text = rsub(text, "([|])+", "%1")
-- remove # symbols at word and text boundaries
text = rsub_repeatedly(text, "([.]?)#([.]?)", "")
text = rsub(text, "․", ".")
-- Fix Capitalization --
local syllbreak = 0
for i=1, #text do
if text:sub(i,i) == "|" and origtext:sub(i-syllbreak, i-syllbreak) ~= "." and origtext:sub(i-syllbreak, i-syllbreak) ~= "7" then
syllbreak = syllbreak + 1
elseif origtext:sub(i-syllbreak, i-syllbreak) == text:sub(i,i):upper() then
text = table.concat({text:sub(1, i-1), text:sub(i,i):upper(), text:sub(i+1)})
end
end
-- Fix hyphens --
-- FIXME!!! Why are we relying on looking at the pagename here? This should not be happening.
origtext = pagename
if (table.concat(rsplit(origtext, "-")) == table.concat(rsplit(table.concat(rsplit(text, "|")), "-"))) then
syllbreak = 0
for i=1, #text do
if text:sub(i,i) == "|" then
if origtext:sub(i-syllbreak, i-syllbreak) == "-" then
text = table.concat({text:sub(1, i-1), "-", text:sub(i+1)})
else
syllbreak = syllbreak + 1
end
end
end
end
-- FIXME! Hack -- up above we changed periods to vertical bars. The rest of the code expects periods so change
-- them back. We should clean up the code above to leave the periods alone.
return (text:gsub("|", "%."))
end
function export.syllabify_and_align(respelling, pagename)
local syllabification = syllabify_from_spelling(respelling, pagename)
return align_syllabification_to_spelling(syllabification, pagename)
end
local function css_wrap(text, classes)
return ('<span class="%s">%s</span>'):format(classes, text)
end
local function format_glosses(glosses)
if not glosses then
return ""
end
local formatted_glosses = {}
for _, glossobj in ipairs(glosses) do
local gloss_parts = {}
if glossobj.gloss then
table.insert(gloss_parts, css_wrap("“", "mention-gloss-double-quote") ..
css_wrap(glossobj.gloss, "mention-gloss") .. css_wrap("”", "mention-gloss-double-quote"))
end
if glossobj.poses then
for _, pos in ipairs(glossobj.poses) do
table.insert(gloss_parts, css_wrap(pos, "ann-pos"))
end
end
table.insert(formatted_glosses, table.concat(gloss_parts, css_wrap(",", "mention-gloss-comma") .. " "))
end
return " " .. css_wrap("(", "mention-gloss-paren annotation-paren") ..
table.concat(formatted_glosses, css_wrap(";", "mention-gloss-semicolon") .. " ") ..
css_wrap(")", "mention-gloss-paren annotation-paren")
end
local function format_pronuns(pronuns)
local pronunciations = {}
-- Loop through each pronunciation. For each one, add the phonemic and phonetic versions to `pronunciations`,
-- for formatting by [[Module:IPA]].
for j, pronun in ipairs(pronuns) do
local qs = pronun.q
local first_pronun = #pronunciations + 1
if not pronun.phonemic and not pronun.phonetic then
error("Internal error: Saw neither phonemic nor phonetic pronunciation")
end
if pronun.phonemic then -- missing if 'raw:[...]' given
-- don't display syllable division markers in phonemic
local slash_pron = "/" .. pronun.phonemic:gsub("%.", "") .. "/"
table.insert(pronunciations, {
pron = slash_pron,
})
end
if pronun.phonetic then -- missing if 'raw:/.../' given
local bracket_pron = "[" .. pronun.phonetic .. "]"
table.insert(pronunciations, {
pron = bracket_pron,
})
end
local last_pronun = #pronunciations
if pronun.q then
pronunciations[first_pronun].q = pronun.q
end
if j > 1 then
pronunciations[first_pronun].separator = ", "
end
if pronun.qq then
pronunciations[last_pronun].qq = pronun.qq
end
if pronun.refs then
pronunciations[last_pronun].refs = pronun.refs
end
if first_pronun ~= last_pronun then
pronunciations[last_pronun].separator = " "
end
end
return m_IPA.format_IPA_full { lang = lang, items = pronunciations, separator = "" }
end
local function format_pronun_line(parsed)
local formatted_pronuns = format_pronuns(parsed.pronuns)
local pre = is_first and parsed.pre and parsed.pre .. " " or ""
local post = is_first and parsed.post and " " .. parsed.post or ""
return pre .. formatted_pronuns .. format_glosses(parsed.t) .. post
end
local function parse_respelling(respelling, pagename, parse_err)
local raw_respelling = respelling:match("^raw:(.*)$")
if raw_respelling then
local raw_phonemic, raw_phonetic = raw_respelling:match("^/(.*)/ %[(.*)%]$")
if not raw_phonemic then
raw_phonemic = raw_respelling:match("^/(.*)/$")
end
if not raw_phonemic then
raw_phonetic = raw_respelling:match("^%[(.*)%]$")
end
if not raw_phonemic and not raw_phonetic then
parse_err(("Unable to parse raw respelling '%s', should be one of /.../, [...] or /.../ [...]")
:format(raw_respelling))
end
return {
raw = true,
raw_phonemic = raw_phonemic,
raw_phonetic = raw_phonetic,
}
end
if respelling == "+" then
respelling = pagename
end
return {term = respelling}
end
-- External entry point for {{id-pr}}.
function export.show_full(frame)
--------------------------------- 1. Parse the arguments. ------------------------------------
local params = {
[1] = {list = true},
["rhyme"] = {},
["syll"] = {},
["hmp"] = {},
["audio"] = {list = true},
["pagename"] = {},
}
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.loadData("Module:headword/data").pagename
local respellings = #args[1] > 0 and args[1] or {"+"}
local parsed_respellings = {}
local function overall_parse_err(msg, arg, val)
error(msg .. ": " .. arg .. "=" .. val)
end
local overall_rhyme = args.rhyme and
parse_rhyme(args.rhyme, function(msg) overall_parse_err(msg, "rhyme", args.rhyme) end) or nil
local overall_syll = args.syll and
parse_syll(args.syll, function(msg) overall_parse_err(msg, "syll", args.syll) end) or nil
local overall_hmp = args.hmp and
parse_homophone(args.hmp, function(msg) overall_parse_err(msg, "hmp", args.hmp) end) or nil
local overall_audio
if #args.audio > 0 then
overall_audio = {}
for _, audio in ipairs(args.audio) do
local parsed_audio = parse_audio(audio, function(msg) overall_parse_err(msg, "audio", audio) end)
table.insert(overall_audio, parsed_audio)
end
end
-- Parse each respelling. Individual arguments in 1=, 2=, etc. can consist of one or more comma-separated
-- respellings, each of which can have inline modifiers <q:...>, <qq:...>, <a:...>, <aa:...> or <ref:...>.
-- In addition, the respellings as a whole of a given argument can be followed by various inline modifiers,
-- such as <t:...>, <rhyme:...>, <syll:...>, etc. The result of parsing goes into `parsed_respellings`, which
-- is a list of objects (one per numbered argument), each of which is a table of the form
--
-- {
-- terms = {TERM, TERM, ...},
-- audio = {AUDIO, AUDIO, ...},
-- rhyme = {RHYME, RHYME, ...},
-- syll = {SYLL, SYLL, ...},
-- hmp = {HMP, HMP, ...},
-- t = {GLOSS, GLOSS, ...},
-- pre = "PRE-TEXT" or nil,
-- post = "POST-TEXT" or nil,
-- bullets = NUM_BULLETS,
-- accents = {"ACCENT", "ACCENT", ...},
-- }
--
-- In this structure, TERM is an object that usually has the form
--
-- {
-- term = "RESPELLING",
-- ref = {"REF-SPEC", "REF-SPEC", ...},
-- q = {"QUALIFIER", "QUALIFIER", ...},
-- qq = {"QUALIFIER", "QUALIFIER", ...},
-- }
--
-- Note that in this structure, "REF-SPEC" of the form parsable by parse_references() in [[Module:references]].
--
-- Alternatively, if phonemic or phonetic IPA is given in place of a respelling, TERM will have the form
--
-- {
-- raw = true,
-- phonemic = "PHONEMIC",
-- phonetic = "PHONETIC",
-- ref = {"REF-SPEC", "REF-SPEC", ...},
-- q = {"QUALIFIER", "QUALIFIER", ...},
-- qq = {"QUALIFIER", "QUALIFIER", ...},
-- }
--
-- AUDIO is a table of the form
--
-- {
-- file = "FILE",
-- gloss = "GLOSS",
-- q = {"QUALIFIER", "QUALIFIER", ...},
-- qq = {"QUALIFIER", "QUALIFIER", ...},
-- a = {"ACCENT-QUALIFIER", "ACCENT-QUALIFIER", ...},
-- aa = {"ACCENT-QUALIFIER", "ACCENT-QUALIFIER", ...},
-- }
--
-- RHYME is a table of the form
--
-- {
-- rhyme = "RHYME",
-- num_syl = {NUM_SYL, NUM_SYL, ...},
-- q, qq, a, aa = (as for AUDIO),
-- }
--
-- SYLL is a table of the form (where `hyph` is required to be named this way for [[Module:hyphenation]])
--
-- {
-- syllabification = "SYL.LAB.LES",
-- hyph = {"SYL", "LAB", "LES"},
-- q, qq, a, aa = (as for AUDIO),
-- }
--
-- HMP is a table of the form
--
-- {
-- term = "HOMOPHONE",
-- gloss = "GLOSS" or nil,
-- pos = "POS" or nil,
-- alt = "ALT" or nil,
-- lit = "LIT" or nil,
-- id = "ID" or nil,
-- g = {"G", "G", ...},
-- q, qq, a, aa = (as for AUDIO),
-- }
--
-- GLOSS is a table of the form
--
-- {
-- poses = {"POS", "POS", ...} or nil,
-- gloss = "GLOSS" or nil,
-- }
for i, respelling in ipairs(respellings) do
if respelling:find("<") then
local param_mods = {
pre = { overall = true },
post = { overall = true },
bullets = {
overall = true,
type = "number",
},
t = {
overall = true,
store = "insert",
convert = parse_gloss,
},
rhyme = {
overall = true,
store = "insert-flattened",
convert = parse_rhyme,
},
syll = {
overall = true,
-- Not `store = "insert-flattened"`. parse_syll() does not generates a list but a structure where
-- the syllabifications are in `terms` and there's an additional overall property `cap` for the
-- caption (defaulting to "Syllabification"). FIXME: Rethink whether we even want "insert-flattened"
-- or just "insert" for the remaining pronunciation properties.
convert = parse_syll,
},
hmp = {
overall = true,
store = "insert-flattened",
convert = parse_homophone,
},
audio = {
overall = true,
store = "insert", -- not "insert-flattened" because parse_audio returns a single object
convert = parse_audio,
},
ref = { store = "insert" },
q = { store = "insert" },
qq = { store = "insert" },
a = {
item_dest = "accents",
overall = true,
convert = parse_accents,
},
}
local parsed = require(parse_utilities_module).parse_inline_modifiers(respelling, {
paramname = i,
param_mods = param_mods,
generate_obj = function(term, parse_err)
return parse_respelling(term, pagename, parse_err)
end,
pre_normalize_modifiers = function(data)
local modtext = data.modtext
modtext = modtext:match("^<(.*)>$")
if not modtext then
error(("Internal error: Passed-in modifier isn't surrounded by angle brackets: %s"):format(
data.modtext))
end
if modtext:find("%^") and not modtext:find("^t:") then
modtext = "t:" .. modtext
end
return "<" .. modtext .. ">"
end,
splitchar = ",",
outer_container = {},
})
if not parsed.bullets then
parsed.bullets = 1
end
table.insert(parsed_respellings, parsed)
else
local termobjs = {}
local function parse_err(msg)
error(msg .. ": " .. i .. "=" .. respelling)
end
for _, term in ipairs(split_on_comma(respelling)) do
table.insert(termobjs, parse_respelling(term, pagename, parse_err))
end
table.insert(parsed_respellings, {
terms = termobjs,
bullets = 1,
})
end
end
--------------------------------- 2. Generate IPA, rhymes and syllabification. ------------------------------------
-- Used for categorization below.
local syllabification_alignment_failed = false
-- Canonicalize syllabifications in `sylls` by convering '+' to the default syllabification of the pagename, '#' to
-- the pagename itself, and '-' to no syllabification (return `null_syll`). If '-' not seen, return `sylls`.
local function canonicalize_syllabification(sylls, null_syll)
for _, syll in ipairs(sylls.terms) do
if syll.syllabification == "+" then
syll.syllabification = syllabify_from_spelling(pagename, pagename)
syll.hyph = split_syllabified_spelling(syll.syllabification)
elseif syll.syllabification == "#" then
syll.syllabification = pagename
syll.hyph = {syll.syllabification}
elseif syll.syllabification == "-" then
return null_syll
end
end
return sylls
end
if overall_syll then
overall_syll = canonicalize_syllabification(overall_syll, {})
end
local function doesnt_count_for_rhyme(list)
if not list then
return false
end
local accent_no_count = {"thông tục", "không còn dùng", "không tiêu chuẩn"}
for _, item in ipairs(list) do
for _, word_no_count in ipairs(accent_no_count) do
if item:find("%f[%w]" .. word_no_count .. "%f[%W]") then
return true
end
end
end
return false
end
-- Loop over individual respellings, processing each.
for _, parsed in ipairs(parsed_respellings) do
-- First, sort the specified accents and default to "Standard Indonesian".
local default_accent = "tiếng Indonesia tiêu chuẩn"
if not parsed.accents then
parsed.accents = {default_accent}
end
-- If more than one respelling given, then if any accent or qualifier has the words 'colloquial', 'obsolete' or
-- 'nonstandard' in them, don't generate a rhyme or a '#-syllable word' category.
local more_than_one_respelling = #parsed.terms > 1 or #parsed_respellings > 1
local is_standard = m_table.contains(parsed.accents, default_accent) and true or false
local all_terms_no_rhyme = more_than_one_respelling and doesnt_count_for_rhyme(parsed.accents)
parsed.pronuns = {}
for i, term in ipairs(parsed.terms) do
local phonemic, phonetic
if term.raw then
phonemic = term.raw_phonemic
phonetic = term.raw_phonetic
else
local ret = export.IPA(term.term)
phonemic = ret.phonemic
phonetic = ret.phonetic
end
local refs
if not term.ref then
refs = nil
else
refs = {}
for _, refspec in ipairs(term.ref) do
local this_refs = require("Module:references").parse_references(refspec)
for _, this_ref in ipairs(this_refs) do
table.insert(refs, this_ref)
end
end
end
local no_rhyme, rhyme_with_cat
-- Same check as above for colloquial/obsolete/relaxed but check the qualifiers, which are attached to
-- individual respellings rather than a single-line set of respellings.
no_rhyme = all_terms_no_rhyme or more_than_one_respelling and (
doesnt_count_for_rhyme(term.q) or doesnt_count_for_rhyme(term.qq)
)
if not no_rhyme then
local should_generate_rhyme, should_generate_cat = should_generate_rhyme_from_termobj(term)
no_rhyme = not should_generate_rhyme
rhyme_with_cat = should_generate_cat
end
local pronobj = {
raw = term.raw,
phonemic = phonemic,
phonetic = phonetic,
refs = refs,
q = term.q,
qq = term.qq,
no_rhyme = no_rhyme,
rhyme_with_cat = rhyme_with_cat,
}
table.insert(parsed.pronuns, pronobj)
end
if not parsed.syll then
if not overall_syll and any_words_have_vowels(pagename) then
for _, term in ipairs(parsed.terms) do
if not term.raw then
local syllabification = syllabify_from_spelling(term.term, pagename)
local aligned_syll = align_syllabification_to_spelling(syllabification, pagename)
if aligned_syll then
if not parsed.syll then
parsed.syll = {terms = {}}
end
m_table.insertIfNot(parsed.syll.terms, generate_syll_obj(aligned_syll))
else
syllabification_alignment_failed = true
end
end
end
end
else
parsed.syll = canonicalize_syllabification(parsed.syll, nil)
end
if not parsed.rhyme then
if overall_rhyme then
parsed.rhyme = nil
else
-- Generate the rhymes.
for _, pronun in ipairs(parsed.pronuns) do
-- We should have already excluded multiword terms and terms without vowels from rhyme generation
-- (see `no_auto_rhyme` below). But make sure to check that pronun.phonemic exists (it may not if
-- raw phonetic-only pronun is given), and rhyme isn't suppressed (which may happen if the term has
-- a qualifier "colloquial", "obsolete" or the like ).
if pronun.phonemic and not pronun.no_rhyme then
-- Count number of syllables by looking at syllable boundaries (including stress marks).
local num_syl = get_num_syl_from_ipa(pronun.phonemic)
-- Get the rhyme by truncating everything up through the last stress mark + any following
-- consonants, and remove syllable boundary markers.
local rhyme = convert_phonemic_to_rhyme(pronun.phonemic)
-- Copying qualifiers to rhymes:
-- (1) If there's only one pronunciation, displaying any associated qualifier on the rhyme is
-- is redundant, so don't do it.
-- (2) If there are multiple pronunciations, then we generally do want to copy the qualifier(s)
-- from pronunciation to rhyme, but only if a given rhyme either derives from a single
-- pronunciation, or derives from multiple pronunciations all of which share the same
-- qualifier(s). We do NOT want to combine two different qualifiers from two different
-- pronunciations.
-- (3) If there are multiple pronunciations that map to a single rhyme, and all pronunciations
-- share qualifiers, then we might consider omitting the qualifiers as redundant; but this
-- case will rarely happen so it might not be worth worrying about.
-- (4) Similarly, if there are multiple pronunciations where some have the rhyme suppressed (see
-- above), and all pronunciations share qualifiers, then we might consider omitting the
-- qualifiers as redundant; but again, this case will rarely happen (especially since in
-- almost all cases the suppressed-rhyme pronunciation will have distinctive qualifiers) so
-- it probably isn't worth worrying about. Note that in the common case where the qualifiers
-- of the rhyme-suppressed pronunciation differ from those of the rhyme-included
-- pronunciation, we do want to include the qualifiers of the rhyme-included pronunciation
-- (imagine e.g. there are two pronunciations marked "standard" and "colloquial"; we want to
-- mark the rhyme as "standard").
-- (4) There are two different types of qualifiers (left and right); when comparing qualifiers,
-- we need to compare the entire set of both qualifiers and make sure they both match
-- (although it will be rare to have both left and right qualifiers on a single
-- pronunciation).
local saw_already = false
if not parsed.rhyme then
parsed.rhyme = {}
end
for _, existing in ipairs(parsed.rhyme) do
if existing.rhyme == rhyme then
saw_already = true
-- We already saw this rhyme but possibly with a different number of syllables,
-- e.g. if the user specified two pronunciations 'biologi' (4 syllables) and
-- 'biologi' (5 syllables), both of which have the same rhyme /ogi/.
m_table.insertIfNot(existing.num_syl, num_syl)
if not m_table.deepEquals(existing.q, pronun.q) or not
m_table.deepEquals(existing.qq, pronun.qq) then
existing.q = nil
existing.qq = nil
end
break
end
end
if not saw_already then
table.insert(parsed.rhyme, {
rhyme = rhyme,
num_syl = {num_syl},
q = #parsed.pronuns > 1 and pronun.q or nil,
qq = #parsed.pronuns > 1 and pronun.qq or nil,
nocat = not pronun.rhyme_with_cat,
})
end
end
end
end
else
local no_rhyme = false
for _, rhyme in ipairs(parsed.rhyme) do
if rhyme.rhyme == "-" then
no_rhyme = true
break
end
end
if no_rhyme then
parsed.rhyme = nil
else
parsed.rhyme = process_specified_rhymes(parsed.rhyme, parsed.syll and parsed.syll.terms or {}, {parsed})
end
end
end
if overall_rhyme then
local no_overall_rhyme = false
for _, orhyme in ipairs(overall_rhyme) do
if orhyme.rhyme == "-" then
no_overall_rhyme = true
break
end
end
if no_overall_rhyme then
overall_rhyme = nil
else
local all_sylls
if overall_syll then
all_sylls = overall_syll
else
all_sylls = {}
for _, parsed in ipairs(parsed_respellings) do
if parsed.syll then
for _, syll in ipairs(parsed.syll.terms) do
m_table.insertIfNot(all_sylls, syll)
end
end
end
end
overall_rhyme = process_specified_rhymes(overall_rhyme, all_sylls, parsed_respellings)
end
end
-- Determine whether all sets of pronunciations have the same value for a pronunciation property (rhymes,
-- syllabifications or homophones). If so, we display them them only once at the bottom, otherwise beneath each set,
-- indented. This function takes one argument, the name of a slot specifying the pronunciation property, and
-- returns two values, a boolean indicating whether all values are the same and the first value seen (which will
-- be the only value seen if all values are the same).
local function all_sets_equal(parsed_slot)
local first_set
local all_sets_eq = true
for j, parsed in ipairs(parsed_respellings) do
if j == 1 then
first_set = parsed[parsed_slot]
elseif not m_table.deepEquals(first_set, parsed[parsed_slot]) then
all_sets_eq = false
break
end
end
return all_sets_eq, first_set
end
local all_rhyme_sets_eq, first_rhyme_ret = all_sets_equal("rhyme")
local all_syll_sets_eq, first_sylls = all_sets_equal("syll")
local all_hmp_sets_eq, first_hmps = all_sets_equal("hmp")
------------------------------ 3. Insert categories as appropriate. ---------------------------------
local categories = {}
local function get_rhymes_categories(rhymes)
if not rhymes then
return
end
end
get_rhymes_categories(overall_rhyme)
for _, parsed in ipairs(parsed_respellings) do
get_rhymes_categories(parsed.rhyme)
end
local function get_syll_categories(sylls)
if not sylls then
return
end
for _, syll in ipairs(sylls.terms) do
local syll_no_dot = "#" .. syll.syllabification .. "#"
syll_no_dot = syll.syllabification:gsub("%.([^ #])", "%1"):gsub("#", "")
if syll_no_dot ~= pagename then
mw.log(("For page '%s', saw syllabification '%s' not matching pagename"):format(
pagename, syll.syllabification))
m_table.insertIfNot(categories, ("%s terms with syllabification not matching pagename"):format(
lang:getCanonicalName()))
end
end
end
get_syll_categories(overall_syll)
for _, parsed in ipairs(parsed_respellings) do
get_syll_categories(parsed.syll)
end
if syllabification_alignment_failed then
table.insert(categories, ("%s terms where syllabification alignment failed"):format(lang:getCanonicalName()))
end
---------------------------- 4. Format IPA, rhymes and syllabification for display. -------------------------------
local function bullet_prefix(num_bullets)
return string.rep("*", num_bullets) .. " "
end
local function format_rhyme(rhymes)
return require(rhymes_module).format_rhymes {
lang = lang,
rhymes = rhymes,
force_cat = force_cat,
}
end
local function format_syllabifications(syllobj)
return require(hyphenation_module).format_hyphenations {
lang = lang,
hyphs = syllobj.terms,
caption = syllobj.cap or "Tách âm"
}
end
local function format_homophones(hmps)
return require("Module:homophones").format_homophones { lang = lang, homophones = hmps }
end
local function format_audio(audios, num_bullets)
local ret = {}
for i, audio in ipairs(audios) do
local text = require(audio_module).format_audio {
lang = lang,
file = audio.file,
caption = audio.gloss,
q = audio.q,
qq = audio.qq,
a = audio.a,
aa = audio.aa,
}
table.insert(ret, bullet_prefix(num_bullets) .. text)
end
return table.concat(ret, "\n")
end
-- Implement grouping by accent. If there is a run of more than one consecutive set of pronunciations with the
-- same accent, the accent goes on its own line and the pronunciations with this accent go below with an extra
-- bullet.
local prev_accents
local num_seen_with_these_accents
for j, parsed in ipairs(parsed_respellings) do
if m_table.deepEquals(prev_accents, parsed.accents) then
parsed.of_several_accents = "continuation"
num_seen_with_these_accents = num_seen_with_these_accents + 1
if num_seen_with_these_accents == 2 then
parsed_respellings[j - 1].of_several_accents = "first"
end
else
prev_accents = parsed.accents
num_seen_with_these_accents = 1
end
end
-- Pull out autogenerated pronunciations and move to the next line, indented.
for _, parsed in ipairs(parsed_respellings) do
local saw_next_line_pronuns = false
for _, pronun in ipairs(parsed.pronuns) do
if pronun.move_to_next_line then
saw_next_line_pronuns = true
break
end
end
if saw_next_line_pronuns then
local this_line_pronuns = {}
local next_line_pronuns = {}
for _, pronun in ipairs(parsed.pronuns) do
if pronun.move_to_next_line then
table.insert(next_line_pronuns, pronun)
else
table.insert(this_line_pronuns, pronun)
end
end
-- Now see if there are qualifiers shared among all elements of the next-line pronuns and deduplicate if so.
local function deduplicate_qualifiers(field, keepfirst)
local saw_nil = false
for _, pronun in ipairs(next_line_pronuns) do
if not pronun[field] then
saw_nil = true
break
end
end
if not saw_nil then
local m_setutil = require(set_utilities_module)
local qualifiers = {}
for _, pronun in ipairs(next_line_pronuns) do
table.insert(qualifiers, m_setutil.list_to_set(pronun[field]))
end
local all_shared = m_setutil.intersect(unpack(qualifiers))
if next(all_shared) then
local first_index, last_index
if keepfirst then
first_index = 2
last_index = #pronun
else
first_index = 1
last_index = #pronun - 1
end
for i = first_index, last_index do
local pronun = next_line_pronuns[i]
local new_qualifiers = {}
for _, q in ipairs(pronun[field]) do
if not all_shared[q] then
table.insert(new_qualifiers, q)
end
end
pronun[field] = new_qualifiers
end
end
end
end
parsed.pronuns = this_line_pronuns
parsed.next_line_pronuns = next_line_pronuns
end
end
-- Now actually format the pronunciations.
local textparts = {}
local first_line = true
local function ins_line(linetext, num_bullets)
if not first_line then
table.insert(textparts, "\n")
end
first_line = false
table.insert(textparts, bullet_prefix(num_bullets) .. linetext)
end
local min_num_bullets = math.huge
for j, parsed in ipairs(parsed_respellings) do
if parsed.bullets < min_num_bullets then
min_num_bullets = parsed.bullets
end
local accent_grouping_offset = 0
if parsed.of_several_accents == "first" then
ins_line(require(accent_qualifier_module).format_qualifiers(lang, parsed.accents), parsed.bullets)
end
local pronuns = format_pronun_line(parsed)
local accent_prefix
if not parsed.of_several_accents then
accent_prefix = require(accent_qualifier_module).format_qualifiers(lang, parsed.accents) .. " "
else
accent_prefix = ""
accent_grouping_offset = 1
end
ins_line(accent_prefix .. pronuns, parsed.bullets + accent_grouping_offset)
if parsed.next_line_pronuns then
ins_line(format_pronuns(parsed.next_line_pronuns), parsed.bullets + accent_grouping_offset + 1)
end
if parsed.audio then
-- format_audio() inserts multiple lines and handles bullets by itself.
table.insert(textparts, "\n")
-- If only one pronunciation set, add the audio with the same number of bullets, otherwise indent audio by
-- one more bullet.
table.insert(textparts, format_audio(parsed.audio,
(#parsed_respellings == 1 and parsed.bullets or parsed.bullets + 1) + accent_grouping_offset))
end
if not all_rhyme_sets_eq and parsed.rhyme then
ins_line(format_rhyme(parsed.rhyme), parsed.bullets + 1 + accent_grouping_offset)
end
if not all_syll_sets_eq and parsed.syll then
ins_line(format_syllabifications(parsed.syll), parsed.bullets + 1 + accent_grouping_offset)
end
if not all_hmp_sets_eq and parsed.hmp then
ins_line(format_homophones(parsed.hmp), parsed.bullets + 1 + accent_grouping_offset)
end
end
if overall_audio then
-- format_audio() inserts multiple lines and handles bullets by itself.
table.insert(textparts, "\n")
table.insert(textparts, format_audio(overall_audio, min_num_bullets))
end
if all_rhyme_sets_eq and first_rhyme_ret then
ins_line(format_rhyme(first_rhyme_ret), min_num_bullets)
end
if overall_rhyme then
ins_line(format_rhyme(overall_rhyme), min_num_bullets)
end
if all_syll_sets_eq and first_sylls then
ins_line(format_syllabifications(first_sylls), min_num_bullets)
end
if overall_syll then
ins_line(format_syllabifications(overall_syll), min_num_bullets)
end
if all_hmp_sets_eq and first_hmps then
ins_line(format_homophones(first_hmps), min_num_bullets)
end
if overall_hmp then
ins_line(format_homophones(overall_hmp), min_num_bullets)
end
return table.concat(textparts) ..
require("Module:utilities").format_categories(categories, lang, nil, nil, force_cat)
end
-- Meant to be called from a bot.
function export.pron_json(frame)
local iparams = {
[1] = {list = true, required = true},
["pagename"] = {required = true},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local data = {}
local syllabification_from_pagename = syllabify_from_spelling(iargs.pagename, iargs.pagename)
for _, respelling in ipairs(iargs[1]) do
local pronun = export.IPA(respelling)
local syllabification = export.syllabify_and_align(respelling, iargs.pagename)
local num_syl = get_num_syl_from_ipa(pronun.phonemic)
local rhyme = convert_phonemic_to_rhyme(pronun.phonemic)
table.insert(data, {
respelling = respelling,
phonemic = pronun.phonemic,
phonetic = pronun.phonetic,
syllabification = syllabification,
num_syl = num_syl,
rhyme = rhyme,
})
end
local retval = {
pagename = iargs.pagename,
syllabification_from_pagename = syllabification_from_pagename,
data = data,
}
return require("Module:JSON").toJSON(retval)
end
return export
rtpl50eyzjl9fq1u6g8dno1yva65fr1
Thể loại:Danh từ đếm được tiếng Ý
14
316013
2362774
2184795
2026-05-31T02:02:14Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Danh từ tiếng Ý đếm được]] thành [[Thể loại:Danh từ đếm được tiếng Ý]] (đã tắt đổi hướng)
2184795
wikitext
text/x-wiki
[[Thể loại:Danh từ tiếng Ý]]
[[Thể loại:Danh từ đếm được theo ngôn ngữ]]
rgvghxs6f5b4nvv9ms5k0wlcbnz2e2g
2362777
2362774
2026-05-31T02:02:51Z
TheHighFighter2
42988
/* */
2362777
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
askeleessa
0
316964
2362691
2194111
2026-05-30T14:21:27Z
Kelly zhrm
58416
2362691
wikitext
text/x-wiki
=={{langname|fi}}==
==={{ĐM|pron}}===
* {{fi-p}}
==={{ĐM|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|askel||ine|s}}
ntbznwbc3o21qw7cnixegnk9cnc3hej
2362692
2362691
2026-05-30T14:21:45Z
Kelly zhrm
58416
2362692
wikitext
text/x-wiki
=={{langname|fi}}==
==={{ĐM|pron}}===
{{fi-p}}
==={{ĐM|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|askel||ine|s}}
hs4qt29j0chrb800ow6ofwvytndm4l9
Faatuma
0
317678
2362792
2187798
2026-05-31T02:10:09Z
Hiyuune
50834
2362792
wikitext
text/x-wiki
=={{langname|aa}}==
==={{section|etym}}===
Từ {{derived|aa|ar|فَاطِمَة}}.
==={{section|pron}}===
* {{aa-IPA|Faatumá}}
==={{section|pr-noun}}===
{{head|aa|Danh từ riêng|head=Faatumá}}
# [[Fatima]].
# {{given name|aa|nữ}}
===={{section|decl}}====
{{aa-decl|Faatumá|voc=Faatumáy}}
==={{section|ref}}===
* {{R:aa:Hassan Kamil:2015}}
{{C|aa|Hồi giáo|Cá nhân}}
exj3tm3oe9ycywxivnc99yxnzqxswu6
Lico
0
317778
2362707
2187950
2026-05-30T16:40:13Z
Hiyuune
50834
2362707
wikitext
text/x-wiki
=={{langname|akm}}==
==={{section|pr-noun}}===
{{head|akm|Danh từ riêng}}
# {{given name|akm|nữ}}
fkjaqtuvq5yhs9p1b283xt2m505r0dc
Thể loại:Mục từ tiếng Aka-Bo
14
317980
2362710
2188273
2026-05-30T16:43:48Z
Hiyuune
50834
/* */
2362710
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
アビシニアジャッカル
0
324108
2362799
2307729
2026-05-31T02:36:07Z
WhoAlone
40420
2362799
wikitext
text/x-wiki
=={{langname|ja}}==
{{slim-wikipedia|lang=ja}}
==={{section|etym}}===
{{com+|ja|アビシニア|ジャッカル|tr1=Abishinia|tr2=jakkaru|t1=[[Abyssinia]]|t2=[[chó rừng]]}}
==={{section|n}}===
{{ja-noun|^アビシニア ジャッカル}}
# [[sói|Sói]] [[Ethiopia]]
===={{section|syn}}====
* {{jpn-r|アビシニア狼|^アビシニア オオカミ}}
* {{jpn-r|エチオピア狼|^エチオピア オオカミ}}
* {{jpn-r|^シミエン ジャッカル}}
{{C|ja|Họ Chó}}
ri81eci9zzr3sn5trebvzf0aes80knd
Mô đun:ltg-IPA
828
354331
2362992
2256349
2026-05-31T11:00:32Z
Hiyuune
50834
2362992
Scribunto
text/plain
local export = {}
local m_IPA = require("Module:IPA")
local lang = require("Module:languages").getByCode("ltg")
local rsub = mw.ustring.gsub
local rlower = mw.ustring.lower
local c = mw.ustring.char(0x0302)
local g = mw.ustring.char(0x0300)
local s = mw.ustring.char(0x032F)
local V = "[aeėiouy]"
local R = "[lļr]"
local F = "[iìîɛæ]" .. c .. "?" .. g .. "?u?" .. s .. "?ː?"
local C = "[bdfɡxjklmnprvʃʒz]"
local X = "ˈ?[bcdfghjklmnprstvzčģķļņšž]"
local di = {
["aî"]="aqi̯", ["ai"]="awi̯",
["eî"]="æqi̯", ["ei"]="æwi̯",
["ėî"]="ɛqi̯", ["ėi"]="ɛwi̯",
["oî"]="ɔqi̯", ["oi"]="ɔwi̯",
["uî"]="uqi̯", ["ui"]="uwi̯",
["aû"]="aqu̯", ["au"]="awu̯",
["iû"]="iqu̯", ["iu"]="iwu̯",
["yû"]="ɨqu̯", ["yu"]="ɨwu̯",
["oû"]="ɔqu̯", ["ou"]="ɔwu̯",
["uô"]="uqɔ̯", ["uo"]="uwɔ̯",
["iê"]="iqɛ̯", ["ie"]="iwɛ̯",
}
local phon = {
-- non-tonal
["a"]="a", ["b"]="b", ["c"]="ts", ["d"]="d",
["e"]="æ", ["ė"]="ɛ", ["f"]="f", ["g"]="ɡ",
["h"]="x", ["i"]="i", ["j"]="j", ["k"]="k",
["l"]="l", ["m"]="m", ["n"]="n", ["o"]="ɔ",
["p"]="p", ["r"]="r", ["s"]="s", ["t"]="t",
["u"]="u", ["v"]="v", ["y"]="ɨ", ["č"]="tʃ",
["ģ"]="ɡʲ", ["ķ"]="kʲ", ["ļ"]="lʲ", ["ņ"]="nʲ",
["š"]="ʃ", ["ž"]="ʒ", ["'"]="ʲ",
-- tonal
["â"]="âː", ["ê"]="æ̂ː", ["î"]="îː", ["û"]="ûː",
["ā"]="àː", ["ē"]="æ̀ː", ["ī"]="ìː", ["ū"]="ùː",
}
local function phonetic(text)
text = rlower(text)
-- basic phonology
text = rsub(text, "..", di)
text = rsub("1" .. text, "..", di)
text = rsub(text, "1", "")
text = rsub(text, "(" .. V .. ")(" .. R .. ")" .. c, "%1q%2")
text = rsub(text, "(" .. V .. ")(" .. R .. X .. ")", "%1w%2")
text = rsub(text, "(" .. V .. ")(" .. R .. ")$", "%1w%2")
text = rsub(text, ".", phon)
text = rsub(text, "q", c)
text = rsub(text, "w", g)
-- palatalisation
text = rsub(text, "([pbfvtdszkɡmnl])(" .. F .. ")", "%1ʲ%2")
local i = 0
while i <= 3 do
text = rsub(text, "([ts])ʲ([ts])", "%1ʲ%2ʲ")
i = i + 1
end
i = 0
while i <= 5 do
text = rsub(text, "([pbvtdszkɡmnl])(.)ʲ", "%1ʲ%2ʲ")
i = i + 1
end
i = 0
-- v > w
text = rsub(text, "vʲ?(" .. X .. ")", "w%1")
-- devoicing
text = rsub(text, "b$", "p")
text = rsub(text, "d$", "t")
text = rsub(text, "ɡ(ʲ?)$", "k%1")
text = rsub(text, "z$", "s")
text = rsub(text, "v$", "f")
text = rsub(text, "ʒ$", "ʃ")
while i <= 5 do
text = rsub(text, "b(ʲ?)([pstkxfʃ])", "p%1%2")
text = rsub(text, "d(ʲ?)([pstkxfʃ])", "t%1%2")
text = rsub(text, "ɡ(ʲ?)([pstkxfʃ])", "k%1%2")
text = rsub(text, "z(ʲ?)([pstkxfʃ])", "s%1%2")
text = rsub(text, "v(ʲ?)([pstkxfʃ])", "f%1%2")
text = rsub(text, "ʒ(ʲ?)([pstkxfʃ])", "ʃ%1%2")
text = rsub(text, "p(ʲ?)([bzdɡʒ])", "b%1%2")
text = rsub(text, "t(ʲ?)([bzdɡʒ])", "d%1%2")
text = rsub(text, "k(ʲ?)([bzdɡʒ])", "ɡ%1%2")
text = rsub(text, "s(ʲ?)([bzdɡʒ])", "z%1%2")
text = rsub(text, "ʃ(ʲ?)([bzdɡʒ])", "ʒ%1%2")
i = i + 1
end
i = 0
-- affrication
text = rsub(text, "n(ʲ?)([sʃzʒ]ʲ?)$", "n%1t%2%1")
text = rsub(text, "tʲ?([sʃ])", "t͡%1")
text = rsub(text, "dʲ?([zʒ])", "d͡%1")
text = rsub(text, "([ʃʒ])ʲ", "%1")
text = rsub(text, "ʃsʲ?", "ʃs")
text = rsub(text, "ʒzʲ?", "ʒz")
-- stress
if mw.ustring.find(text, "ˈ") == nil then
text = "ˈ" .. text
end
text = rsub(text, "^ˈ%f[-]", "")
text = rsub(text, "%.", "")
text = rsub(text, "ʲʲ+", "ʲ")
return text
end
function export.IPA(frame)
local words = {}
for _, word in ipairs(frame:getParent().args) do
table.insert(words, word)
end
if #words == 0 then
words = {mw.loadData("Module:headword/data").pagename}
end
local IPA_results = {}
for _, word in ipairs(words) do
table.insert(IPA_results, { pron = "[" .. phonetic(word) .. "]" })
end
return m_IPA.format_IPA_full { lang = lang, items = IPA_results }
end
return export
gff7er7nym10tzna3s5ozcd1ev4mpgx
wóbá
0
356126
2362711
2328669
2026-05-30T16:44:45Z
Hiyuune
50834
/* Tiếng Abanyom */
2362711
wikitext
text/x-wiki
=={{langname|abm}}==
==={{ĐM|alt}}===
* {{alter|abm|wùbà}}
==={{ĐM|num}}===
{{head|abm|Số từ|cat2=Số đếm}}
# [[mười|Mười]]
==={{ĐM|ref}}===
* R. Blench, ''[https://web.archive.org/web/20250528144729/https://www.rogerblench.info/Language/Niger-Congo/Bantoid/Ekoid/Comparative%20Ekoid.pdf Comparative Ekoid]''
64rcnxzzblbubwbgm5ird1bs5k01xod
Thể loại:Mục từ tiếng Abanyom
14
356127
2362713
2260597
2026-05-30T16:45:37Z
Hiyuune
50834
/* */
2362713
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
wùbà
0
356128
2362712
2260598
2026-05-30T16:45:12Z
Hiyuune
50834
/* Tiếng Abanyom */
2362712
wikitext
text/x-wiki
{{also|WUBA}}
=={{langname|abm}}==
==={{ĐM|num}}===
{{head|abm|Số từ}}
# {{alternative form of|abm|wóbá}}
==={{ĐM|ref}}===
* [http://www.sil.org/system/files/reapdata/71/84/01/71840126659330200075289971273378658475/Bakor_Wordlists.pdf Bakor wordlists]
05pgis66fczxpuljw835lnv5uti1y36
Thành viên:Kateru Zakuro/common.js
2
362625
2362714
2361377
2026-05-30T16:56:30Z
Kateru Zakuro
34522
2362714
javascript
text/javascript
mw.loader.load( '//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript' ); // Backlink: [[en:User:Joeytje50/JWB.js/load.js]]
k5hcwxmq8fgo4tijmlfo1g1xo1p6906
あどぅ
0
379589
2362867
2323118
2026-05-31T04:18:08Z
WhoAlone
40420
2362867
wikitext
text/x-wiki
=={{langname|kzg}}==
==={{ĐM|noun}}===
{{kzg-head|noun}}
# {{kzg-def|蟻}} [[gót chân]].
=={{langname|mvi}}==
==={{ĐM|pron}}===
* {{IPA4|mvi|/adu/}}
==={{ĐM|noun}}===
{{mvi-head|noun}}
# {{mvi-def|踵}} [[gót chân]].
==={{ĐM|ref}}===
* {{R:Miyako Dialect Dictionary|アドゥ|MY01050}}
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|踵}} [[gót chân]].
gpgeyxjx8dvlqg2fv67tl65eokhkrbl
うい
0
380964
2362875
2323120
2026-05-31T04:32:01Z
WhoAlone
40420
2362875
wikitext
text/x-wiki
=={{langname|kzg}}==
==={{ĐM|noun}}===
{{kzg-head|noun}}
# {{kzg-def|瓜}} Quả [[bầu]].
=={{langname|ja}}==
===Từ nguyên 1===
{{ja-kanjitab|alt=憂い}}
{{IPAchar|⟨usi⟩}} → {{IPAchar|/uɕi/}} → {{IPAchar|/uki/}} → {{IPAchar|/ui/}}
{{ja-adj-ku|[[うし|憂し]]|u}}<ref name="KDJ">{{R:Kokugo Dai Jiten}}</ref><ref name="DJS">{{R:Daijisen}}</ref><ref name="DJR"/>
===={{ĐM|pron}}====
{{ja-pron|acc=1|acc_ref=DJR,SMK5}}
===={{ĐM|adj}}====
{{ja-adj|infl=i}}
# [[buồn]], [[u ám]].
====={{ĐM|inflection}}=====
{{ja-i|う}}
====={{ĐM|derived}}=====
* {{ja-r|愛い|うい}}
* {{ja-r|物%憂い|もの%.うい}}
* {{ja-r|うきめ}}
====={{ĐM|proverb}}=====
* {{ja-r|旅は憂いもの辛いもの|たび は うい も の つらい も の}}
===Từ nguyên 2===
{{ja-kanjitab|alt=愛い}}
===={{ĐM|pron}}====
{{ja-pron}}
===={{ĐM|adj}}====
{{ja-adj}}
# {{q|nói về ai đó có địa vị thấp hơn}} [[tốt bụng]], [[tuyệt vời]], đáng [[ngưỡng mộ]].
===Từ nguyên 3===
{{ja-see|初|愛|有為|羽衣|雨衣|雨意|烏衣}}
==={{ĐM|ref}}===
<references />
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|瓜}} [[dưa]].
0fxue20w7l8uhz5eu0tet49pq1etg04
ターチ
0
381200
2362822
2323602
2026-05-31T02:58:27Z
WhoAlone
40420
2362822
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[hai]].
=={{langname|yoi}}==
==={{ĐM|num}}===
{{yoi-head|numeral}}
# [[hai]].
==={{ĐM|ref}}===
* [https://www.omniglot.com/language/numbers/yonaguni.htm Số đếm tiếng Yonaguni] trên ''Omniglot''.
c26quwj6mu5l8ooxtudxe0rpvk0ej7w
ミーチ
0
381201
2362838
2323603
2026-05-31T03:35:09Z
WhoAlone
40420
2362838
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[ba]].
=={{langname|yoi}}==
==={{ĐM|num}}===
{{yoi-head|numeral}}
# [[ba]].
==={{ĐM|ref}}===
* [https://www.omniglot.com/language/numbers/yonaguni.htm Số đếm tiếng Yonaguni] trên ''Omniglot''.
aal7udy72dy3451b9hqc61cg7vielac
イチチ
0
381203
2362840
2352740
2026-05-31T03:35:47Z
WhoAlone
40420
2362840
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[năm]].
=={{langname|yoi}}==
==={{ĐM|num}}===
{{yoi-head|numeral}}
# [[năm|Năm]].
==={{ĐM|ref}}===
* [https://www.omniglot.com/language/numbers/yonaguni.htm Số đếm tiếng Yonaguni] trên ''Omniglot''.
stl4rupntwgcuoaa0m1qz64ofs9bmjz
ムーチ
0
381204
2362841
2323606
2026-05-31T03:36:03Z
WhoAlone
40420
2362841
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[sáu]].
=={{langname|yoi}}==
==={{ĐM|num}}===
{{yoi-head|numeral}}
# [[sáu]].
==={{ĐM|ref}}===
* [https://www.omniglot.com/language/numbers/yonaguni.htm Số đếm tiếng Yonaguni] trên ''Omniglot''.
rehp4bc2rlya8h561eugivant0epqze
ナナチ
0
381205
2362842
2323607
2026-05-31T03:36:17Z
WhoAlone
40420
2362842
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[bảy]].
=={{langname|yoi}}==
==={{ĐM|num}}===
{{yoi-head|numeral}}
# [[bảy]].
==={{ĐM|ref}}===
* [https://www.omniglot.com/language/numbers/yonaguni.htm Số đếm tiếng Yonaguni] trên ''Omniglot''.
eh7ovfiqphjytq15c6om8mi3yqonx7p
あわ
0
384719
2362868
2330134
2026-05-31T04:20:17Z
WhoAlone
40420
2362868
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|泡|粟|安房|阿波}}
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|粟}} {{w|Kê vàng}}.
ckin3kc5d6vfx782epjq418x16loxuj
khu djâ troăng a hdrối
0
392955
2362719
2345247
2026-05-30T23:01:05Z
TheHighFighter2
42988
/* Tham khảo */
2362719
wikitext
text/x-wiki
=={{langname|sed}}==
==={{ĐM|etym}}===
Từ {{ghép|sed|khu<t:bọn, nhóm>|djâ troăng ahdrối<t:tiên phong>|alt2=djâ troăng a hdrối}}.
==={{ĐM|noun}}===
{{head|sed|Danh từ|head=[[khu]] [[djâ troăng ahdrối|djâ troăng a hdrối]]}}
# [[lá cờ đầu|Lá cờ đầu]].
#: {{ux|sed|vâi mê cho '''khu djâ troăng a hdrối'''|Bọn này là '''lá cờ đầu''' trong cách làm ăn mới}}
==={{đm|ref}}===
* {{R:VOV}}
0k2ygd13qzvwtgbw5n6n0wpk2xv5beq
Mô đun:lt-pron
828
396574
2362990
2352183
2026-05-31T10:58:13Z
Hiyuune
50834
cập nhật để mô đun nhúng với [[Mô đun:lt-common]].
2362990
Scribunto
text/plain
--[==[
Backend for {{lt-pr}}: IPA, hyphenation, and rhyme generation.
Author: TongcyDai
]==]
local export = {}
local m_debug = require("Module:debug")
local m_str = require("Module:string utilities")
local m_lt_common = require("Module:lt-common")
local u = m_str.char
local ulower = m_str.lower
local uupper = m_str.upper
local usub = m_str.sub
local ulen = m_str.len
local ugsub = m_str.gsub
local ufind = m_str.find
local umatch = m_str.match
local rsplit = m_str.split
-- Accent mark constants (re-exported from Module:lt-common to keep all
-- Lithuanian modules in sync).
local GRAVE = m_lt_common.GRAVE -- U+0300
local ACUTE = m_lt_common.ACUTE -- U+0301
local TILDE = m_lt_common.TILDE -- U+0303
local DOTABOVE = m_lt_common.DOTABOVE -- U+0307
local OGONEK = m_lt_common.OGONEK -- U+0328
-- M4: Reuse Module:lt-common's display formatter directly instead of
-- maintaining a parallel local copy.
local makeDisplayText = m_lt_common.makeDisplayText
-- Liaison marker: U+203F UNDERTIE — separates clitics from their stressed host
-- in input. The phonological grammar treats it like a "soft" word boundary that
-- is transparent to several cross-word processes (palatalization spread,
-- geminate / fricative simplification, place assimilation), per VLKK §19–§23.
local LIAISON = u(0x203F)
-- Lazy-loaded external modules
local m_IPA
local audio_module = "Module:audio"
local homophones_module = "Module:homophones"
local hyphenation_module = "Module:hyphenation"
local rhymes_module = "Module:rhymes"
local parameters_module = "Module:parameters"
local parse_util_module = "Module:parse utilities"
local concat = table.concat
local insert = table.insert
local lang_obj
local function get_lang()
if not lang_obj then
lang_obj = require("Module:languages").getByCode("lt")
end
return lang_obj
end
local function track(reason)
m_debug.track("lt-pron/" .. reason)
end
-- ============================================================================
-- SECTION 1: Orthography & Phonology Definitions
-- ============================================================================
-- Suffix table for automatic phonetic adjustments (currently disabled)
-- Exact matching lists (must include precomposed normalized tone markers)
--[[
local SUFFIX_LOAN = {
["fòbas"]=true, ["fòbė"]=true, ["fòbija"]=true, ["fònas"]=true, ["fònė"]=true,
["lògas"]=true, ["lògija"]=true, ["skòpas"]=true
}
--]]
-- Consonant classes for syllabification (Sonority Hierarchy)
local CLASS = {
R = {["l"]=true, ["m"]=true, ["n"]=true, ["r"]=true, ["v"]=true, ["j"]=true},
S = {["s"]=true, ["z"]=true, ["š"]=true, ["ž"]=true, ["f"]=true, ["x"]=true, ["h"]=true, ["ch"]=true},
T = {["p"]=true, ["b"]=true, ["t"]=true, ["d"]=true, ["k"]=true, ["g"]=true, ["c"]=true, ["dz"]=true, ["č"]=true, ["dž"]=true}
}
-- Front vowels trigger palatalization
local FRONT_V = {
["e"]=true, ["ę"]=true, ["ė"]=true, ["i"]=true, ["į"]=true, ["y"]=true, ["ie"]=true, ["ei"]=true, ["eu"]=true
}
-- Vowel -> Base IPA mapping (Unstressed short/inherent)
local V_IPA = {
["a"] = "ɐ", ["ą"] = "ɑː", ["e"] = "ɛ", ["ę"] = "æː", ["ė"] = "eː",
["i"] = "ɪ", ["į"] = "iː", ["y"] = "iː",
["u"] = "ʊ", ["ų"] = "uː", ["ū"] = "uː", ["o"] = "oː",
["ie"] = "iɛ", ["uo"] = "uɔ",
-- Unstressed simple diphthongs
["ai"] = "ɐɪ", ["au"] = "ɒʊ", ["ei"] = "ɛɪ", ["eu"] = "ɛʊ",
["ui"] = "ʊɪ", ["oi"] = "ɔɪ", ["ou"] = "ɔʊ"
}
-- Consonant -> Base IPA mapping (Unpalatalized)
local CONS_IPA = {
["b"] = "b", ["c"] = "t͡s", ["č"] = "t͡ʃ", ["d"] = "d",
["dz"] = "d͡z", ["dž"] = "d͡ʒ", ["ch"] = "x",
["f"] = "f", ["g"] = "ɡ", ["h"] = "ɣ", ["j"] = "j",
["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n",
["p"] = "p", ["r"] = "r", ["s"] = "s", ["š"] = "ʃ",
["t"] = "t", ["v"] = "ʋ", ["z"] = "z", ["ž"] = "ʒ",
}
-- Voicing pairs for Voicing Assimilation
local VOICING_PAIRS = {
["p"]="b", ["b"]="p", ["t"]="d", ["d"]="t", ["k"]="g", ["g"]="k",
["c"]="dz", ["dz"]="c", ["č"]="dž", ["dž"]="č",
["s"]="z", ["z"]="s", ["š"]="ž", ["ž"]="š", ["x"]="ɣ", ["ɣ"]="x"
}
local function is_voiced(c)
local voiced_set = {["b"]=true, ["d"]=true, ["g"]=true, ["dz"]=true, ["dž"]=true, ["z"]=true, ["ž"]=true, ["ɣ"]=true}
return voiced_set[c] == true
end
-- Accent pairs for conjugation module support
-- Maps base vowel/diphthong to accented forms (falling/rising)
local ACCENT_PAIRS = {
-- Long vowels (acute or tilde)
["ą"] = {acute="ą"..ACUTE, tilde="ą"..TILDE},
["ę"] = {acute="ę"..ACUTE, tilde="ę"..TILDE},
["ė"] = {acute="ė"..ACUTE, tilde="ė"..TILDE},
["y"] = {acute="y"..ACUTE, tilde="y"..TILDE},
["į"] = {acute="į"..ACUTE, tilde="į"..TILDE},
["ū"] = {acute="ū"..ACUTE, tilde="ū"..TILDE},
["ų"] = {acute="ų"..ACUTE, tilde="ų"..TILDE},
-- a/e can be short (grave) or long (tilde)
["a"] = {grave="a"..GRAVE, tilde="a"..TILDE},
["e"] = {grave="e"..GRAVE, tilde="e"..TILDE},
-- o: ó/õ/o are long, ò is short
["o"] = {acute="o"..ACUTE, grave="o"..GRAVE, tilde="o"..TILDE},
-- Short vowels i/u (only grave)
["i"] = {grave="i"..GRAVE},
["u"] = {grave="u"..GRAVE},
-- Simple diphthongs
["ai"] = {acute="a"..ACUTE.."i", tilde="a".."i"..TILDE},
["au"] = {acute="a"..ACUTE.."u", tilde="a".."u"..TILDE},
["ei"] = {acute="e"..ACUTE.."i", tilde="e".."i"..TILDE},
["ui"] = {grave="u"..GRAVE.."i", tilde="u".."i"..TILDE},
-- Complex diphthongs
["ie"] = {acute="i"..ACUTE.."e", tilde="i".."e"..TILDE},
["uo"] = {acute="u"..ACUTE.."o", tilde="u".."o"..TILDE},
-- Mixed diphthongs (a series - acute/tilde)
["al"] = {acute="a"..ACUTE.."l", tilde="a".."l"..TILDE},
["am"] = {acute="a"..ACUTE.."m", tilde="a".."m"..TILDE},
["an"] = {acute="a"..ACUTE.."n", tilde="a".."n"..TILDE},
["ar"] = {acute="a"..ACUTE.."r", tilde="a".."r"..TILDE},
-- Mixed diphthongs (e series - acute/grave/tilde, grave for foreign)
["el"] = {acute="e"..ACUTE.."l", grave="e"..GRAVE.."l", tilde="e".."l"..TILDE},
["em"] = {acute="e"..ACUTE.."m", grave="e"..GRAVE.."m", tilde="e".."m"..TILDE},
["en"] = {acute="e"..ACUTE.."n", grave="e"..GRAVE.."n", tilde="e".."n"..TILDE},
["er"] = {acute="e"..ACUTE.."r", grave="e"..GRAVE.."r", tilde="e".."r"..TILDE},
-- Mixed diphthongs (i series - grave/tilde)
["il"] = {grave="i"..GRAVE.."l", tilde="i".."l"..TILDE},
["im"] = {grave="i"..GRAVE.."m", tilde="i".."m"..TILDE},
["in"] = {grave="i"..GRAVE.."n", tilde="i".."n"..TILDE},
["ir"] = {grave="i"..GRAVE.."r", tilde="i".."r"..TILDE},
-- Mixed diphthongs (u series - grave/tilde)
["ul"] = {grave="u"..GRAVE.."l", tilde="u".."l"..TILDE},
["um"] = {grave="u"..GRAVE.."m", tilde="u".."m"..TILDE},
["un"] = {grave="u"..GRAVE.."n", tilde="u".."n"..TILDE},
["ur"] = {grave="u"..GRAVE.."r", tilde="u".."r"..TILDE},
-- Foreign diphthongs (grave only)
["eu"] = {grave="e"..GRAVE.."u"},
["oi"] = {grave="o"..GRAVE.."i"},
["ou"] = {grave="o"..GRAVE.."u"},
["ol"] = {grave="o"..GRAVE.."l"},
["om"] = {grave="o"..GRAVE.."m"},
["on"] = {grave="o"..GRAVE.."n"},
["or"] = {grave="o"..GRAVE.."r"},
}
-- ============================================================================
-- SECTION 2: Lexical Normalization (Avoid NFD destruction)
-- ============================================================================
-- Helper: Remove all accent marks from text (moved here for early use).
-- Delegates to Module:lt-common to keep the de-accenting logic shared.
local function remove_all_accents(text)
return m_lt_common.to_stem_bare(mw.ustring.toNFD(text))
end
-- Extract pagename from input or load from headword data
local function get_pagename(input)
-- Check for manual override: <base:xxx>
local manual = input:match("<base:([^>]+)>")
if manual then
return manual, input:gsub("<base:[^>]+>", "")
end
-- Load from headword data
local success, data = pcall(function()
return mw.loadData("Module:headword/data").pagename
end)
if success and data then
return data, input
end
return nil, input
end
-- Identify respelling j and (j) positions
local function identify_respelling_glides(input_with_accents, pagename)
if not pagename then
return {} -- No pagename, no respelling detection
end
-- Remove all accents from input
local input_clean = remove_all_accents(input_with_accents)
-- Remove special markers (^, .)
input_clean = ugsub(input_clean, "[%^%.]", "")
-- Remove <base:...> if present
input_clean = ugsub(input_clean, "<base:[^>]+>", "")
-- Remove literal ˌ
input_clean = ugsub(input_clean, "ˌ", "")
-- Remove softening mark ʼ
input_clean = ugsub(input_clean, "ʼ", "")
-- Remove (j) markers - replace with j for comparison
input_clean = ugsub(input_clean, "%(j%)", "j")
-- Remove spaces for comparison
input_clean = ugsub(input_clean, " ", "")
-- Convert to NFC for comparison
input_clean = mw.ustring.toNFC(input_clean)
-- Normalize pagename (lowercase, remove spaces)
local pagename_clean = ulower(pagename)
pagename_clean = ugsub(pagename_clean, " ", "")
-- Find respelling j positions (j in input but not in pagename)
local respelling_positions = {}
local input_idx = 1
local page_idx = 1
while input_idx <= ulen(input_clean) do
local input_char = usub(input_clean, input_idx, input_idx)
if input_char == "j" then
-- Check if this j exists in pagename at corresponding position
local page_char = page_idx <= ulen(pagename_clean)
and usub(pagename_clean, page_idx, page_idx)
if page_char ~= "j" then
-- This is a respelling j
insert(respelling_positions, input_idx)
input_idx = input_idx + 1
-- Don't advance page_idx
else
-- This is an original j
input_idx = input_idx + 1
page_idx = page_idx + 1
end
else
input_idx = input_idx + 1
page_idx = page_idx + 1
end
end
return respelling_positions
end
-- Safe mapping to extract tones without destroying precomposed characters
local TONE_MAP = {
["á"]="a,acute", ["à"]="a,grave", ["ã"]="a,tilde",
["é"]="e,acute", ["è"]="e,grave", ["ẽ"]="e,tilde",
["í"]="i,acute", ["ì"]="i,grave", ["ĩ"]="i,tilde",
["ý"]="y,acute", ["ỳ"]="y,grave", ["ỹ"]="y,tilde",
["ú"]="u,acute", ["ù"]="u,grave", ["ũ"]="u,tilde",
["ó"]="o,acute", ["ò"]="o,grave", ["õ"]="o,tilde",
-- Precomposed vowels with macrons/ogoneks + tones (represented here via standard combinations)
["ą́"]="ą,acute", ["ą̃"]="ą,tilde",
["ę́"]="ę,acute", ["ę̃"]="ę,tilde",
["ė́"]="ė,acute", ["ė̃"]="ė,tilde",
["į́"]="į,acute", ["į̃"]="į,tilde",
["ų́"]="ų,acute", ["ų̃"]="ų,tilde",
["ū́"]="ū,acute", ["ū̃"]="ū,tilde",
-- Tilde on liquids (for semi-diphthongs)
["l̃"]="l,tilde", ["m̃"]="m,tilde", ["ñ"]="n,tilde", ["r̃"]="r,tilde",
["j̃"]="j,tilde"
}
-- Resolves NFD back to safe representation if input was somehow NFD.
-- The PUA rejection (with replacement hints), non-standard format tracking,
-- and i/j-with-dotabove canonicalization are all delegated to Module:lt-common
-- so that all Lithuanian modules share one implementation. Only the
-- TONE_MAP-based codepoint parser remains local since it produces the
-- token list specifically consumed by lt-pron's tokenizer.
local function safe_normalize(text)
-- Reject PUA characters with helpful "use X instead" hints.
m_lt_common.reject_pua(text)
-- Track non-standard input encodings for analytics. Detection runs on
-- the raw input (in NFD internally) before any canonicalization, so the
-- counts reflect what editors actually typed.
local has_dotless, has_precomp_i = m_lt_common.detect_nonstandard(text)
if has_dotless then track('dotless-ij') end
if has_precomp_i then track('precomposed-i-accent') end
-- "Explicit dotabove" (i.e., i/j + U+0307 + accent) is the *correct*
-- input form for accented i/j and is tracked separately to monitor
-- editor adoption. This check stays local since lt-common's
-- detect_nonstandard intentionally only flags the wrong forms.
if ufind(mw.ustring.toNFD(text), "[ij]" .. DOTABOVE) then
track('explicit-dotabove')
end
-- Normalize: drops stray dot-aboves between i/j and accents,
-- converts dotless ı/ȷ to standard i/j, returns clean NFC.
text = m_lt_common.canonicalize_input(text)
-- Parse the canonicalized NFC string into {char, tone} tokens.
-- TONE_MAP entries are 1- or 2-codepoint precomposed sequences
-- (e.g. "á" is one codepoint; "ą́" is "ą" + U+0301). The lookup tries
-- the 2-codepoint match first, then falls back to the 1-codepoint match.
local result = {}
local i = 1
while i <= ulen(text) do
local c = usub(text, i, i)
local c_lower = ulower(c) -- Convert to lowercase for TONE_MAP lookup
-- Look ahead for combining marks if any slipped through
local next_c = usub(text, i+1, i+1)
local next_c_lower = ulower(next_c)
local combined = c_lower .. next_c_lower
if TONE_MAP[combined] then
local parts = rsplit(TONE_MAP[combined], ",")
-- Preserve original case of base character
local base_char = parts[1]
if c ~= c_lower then
base_char = uupper(base_char)
end
insert(result, {char = base_char, tone = parts[2]})
i = i + 2
elseif TONE_MAP[c_lower] then
local parts = rsplit(TONE_MAP[c_lower], ",")
-- Preserve original case of base character
local base_char = parts[1]
if c ~= c_lower then
base_char = uupper(base_char)
end
insert(result, {char = base_char, tone = parts[2]})
i = i + 1
else
insert(result, {char = c, tone = nil})
i = i + 1
end
end
return result
end
-- ============================================================================
-- SECTION 3: Tokenization & Diphthong/Digraph resolution
-- ============================================================================
local function get_type(c)
local lc = ulower(c)
if V_IPA[lc] then return "V" end
if CLASS.R[lc] then return "R" end
if CLASS.S[lc] then return "S" end
if CLASS.T[lc] then return "T" end
return "UNKNOWN"
end
-- Helper: Convert token array back to NFC string for suffix/prefix matching
local function tokens_to_string(tok_list)
local s = ""
for _, t in ipairs(tok_list) do
local c = t.char
if t.tone == "grave" then c = c .. GRAVE
elseif t.tone == "acute" then c = c .. ACUTE
elseif t.tone == "tilde" then c = c .. TILDE
end
s = s .. c
end
return mw.ustring.toNFC(s)
end
-- Apply automatic properties based on word structure (e.g. loanwords)
local function apply_auto_properties(tokens)
local word_str = ulower(tokens_to_string(tokens))
--[[ Suffix detection for loanword quality (currently disabled)
local matched_loan_suff = nil
for suff, _ in pairs(SUFFIX_LOAN) do
if usub(word_str, -ulen(suff)) == suff then
matched_loan_suff = suff; break
end
end
if matched_loan_suff then
local suff_len = ulen(matched_loan_suff)
local acc_len = 0
for i = #tokens, 1, -1 do
local t = tokens[i]
acc_len = acc_len + ulen(tokens_to_string({t}))
if t.type == "V" and ulower(t.char) == "o" then
t.auto_targeted = true
if not t.force_default then t.loan_quality = true end
end
if acc_len >= suff_len then break end
end
end
-- Check for redundant asterisks globally
for _, t in ipairs(tokens) do
if t.force_default and not t.auto_targeted then
track('redundant-asterisk')
end
end
--]]
return tokens
end
-- Strict whitelist for valid diphthong and tone combinations
local function is_strict_diphthong(c1, t1, c2, t2)
local combo = c1 .. c2
-- Unstressed: neither element has a tone
if not t1 and not t2 then
return (combo == "ie" or combo == "uo" or combo == "ai" or combo == "au" or combo == "ei" or combo == "ui" or combo == "oi" or combo == "ou" or combo == "eu")
end
-- Tone on the first element (acute or grave)
if t1 and not t2 then
if t1 == "acute" then
return (combo == "ai" or combo == "au" or combo == "ei" or combo == "ie" or combo == "uo" or combo == "oi")
elseif t1 == "grave" then
return (combo == "ui" or combo == "oi" or combo == "ou" or combo == "eu")
end
end
-- Tone on the second element (tilde)
if not t1 and t2 then
if t2 == "tilde" then
return (combo == "ai" or combo == "au" or combo == "ei" or combo == "ui" or combo == "ie" or combo == "uo" or combo == "eu")
end
end
return false
end
local function tokenize(text_str, pagename)
local raw_chars = safe_normalize(text_str)
-- Identify respelling glides
local respelling_j_positions = identify_respelling_glides(text_str, pagename)
local tokens = {}
local i = 1
while i <= #raw_chars do
local curr = raw_chars[i]
local nxt = raw_chars[i+1]
local lc_curr = ulower(curr.char)
local lc_nxt = nxt and ulower(nxt.char)
-- Explicit Modifiers
if curr.char == "^" then
local last_v = nil
for j = #tokens, 1, -1 do
if tokens[j].type == "V" then last_v = tokens[j]; break end
end
if last_v then
local lc_v = ulower(last_v.char)
local base_v = usub(lc_v, -1) -- Last char for silent i combinations
local is_e_base = (lc_v == "e") or (base_v == "e")
local is_o_base = (lc_v == "o") or (base_v == "o")
-- Check for valid e: no tone or grave only
if is_e_base then
if not last_v.tone or last_v.tone == "grave" then
last_v.loan_quality = true
elseif last_v.tone == "acute" then
error("lt-pron: '^' cannot be used with acute 'é' (use only with plain 'e' or grave 'è')")
elseif last_v.tone == "tilde" then
error("lt-pron: '^' cannot be used with tilde 'ẽ' (use only with plain 'e' or grave 'è')")
end
-- Check for valid o: no tone only
elseif is_o_base then
if not last_v.tone then
last_v.loan_quality = true
elseif last_v.tone == "grave" then
error("lt-pron: '^' is redundant for 'ò' (already pronounced [ɔ])")
elseif last_v.tone == "acute" or last_v.tone == "tilde" then
error("lt-pron: '^' cannot be used with 'ó' or 'õ' (native long vowels)")
end
else
error("lt-pron: '^' can only be used with 'e' (plain/grave) or 'o' (plain). Found: '" .. lc_v .. "'")
end
end
i = i + 1
-- Check for (j) marker
elseif curr.char == "(" and i + 2 <= #raw_chars then
local char2 = raw_chars[i+1]
local char3 = raw_chars[i+2]
if char2.char == "j" and char3.char == ")" then
insert(tokens, {char = "j", type = "R", tone = nil, is_respelling = true, is_optional = true, original_char = "-"})
i = i + 3
else
error("lt-pron: '(' must be followed by 'j)' to form the (j) glide marker")
end
--[[ Asterisk modifier (currently disabled)
elseif curr.char == "*" then
local last_v = nil
for j = #tokens, 1, -1 do
if tokens[j].type == "V" then last_v = tokens[j]; break end
end
if last_v then last_v.force_default = true end
i = i + 1
--]]
elseif curr.char == "." then
insert(tokens, {char = ".", type = "BOUNDARY"})
i = i + 1
elseif curr.char == "ˌ" then
insert(tokens, {char = "ˌ", type = "SECONDARY_STRESS_BOUNDARY"})
i = i + 1
elseif curr.char == "ʼ" then
-- Softening mark: palatalize the preceding consonant
for j = #tokens, 1, -1 do
local tok = tokens[j]
if tok.type == "T" or tok.type == "S" or tok.type == "R" then
tok.softening_mark = true
break
end
end
i = i + 1
elseif lc_curr == "d" and nxt and (lc_nxt == "z" or lc_nxt == "ž") then
insert(tokens, {char = curr.char .. nxt.char, type = "T", tone = nil})
i = i + 2
elseif lc_curr == "c" and nxt and lc_nxt == "h" then
insert(tokens, {char = curr.char .. nxt.char, type = "S", tone = nil})
i = i + 2
-- Special handling for V + j̃ (final j with tilde): treat as V + ĩ diphthong
elseif curr.type ~= "BOUNDARY" and get_type(curr.char) == "V" and nxt and ulower(nxt.char) == "j" and nxt.tone == "tilde" then
-- Check if this is word-final (no more non-boundary tokens after j̃)
local is_final = true
for k = i + 2, #raw_chars do
if raw_chars[k].char ~= " " then
is_final = false
break
end
end
if is_final then
-- Combine V + j̃ as a diphthong V + ĩ (e.g., uj̃ → ui̇̃)
local v_char = ulower(curr.char)
local combined_char = v_char .. "i" -- e.g., "u" + "i" = "ui"
local tone = "tilde" -- j̃'s tilde
local tone_position = 2 -- Tilde is on the second vowel (i)
insert(tokens, {
char = combined_char,
type = "V",
tone = tone,
tone_position = tone_position,
original_char = v_char .. "j" -- For hyphenation: display as "uj̃"
})
i = i + 2
else
-- Not final, treat as regular V + j
insert(tokens, {char = curr.char, type = "V", tone = curr.tone})
i = i + 1
end
elseif curr.type ~= "BOUNDARY" and get_type(curr.char) == "V" and nxt and get_type(nxt.char) == "V" then
local nxt_nxt = raw_chars[i+2]
local lc_nxt_nxt = nxt_nxt and ulower(nxt_nxt.char)
local back_diph = lc_nxt and lc_nxt_nxt and (lc_nxt .. lc_nxt_nxt)
local is_silent_i_diph = (lc_curr == "i" and not curr.tone) and
(back_diph == "au" or back_diph == "ai" or back_diph == "ou" or back_diph == "oi" or back_diph == "uo")
local is_silent_i_mono = (lc_curr == "i" and not curr.tone) and
(lc_nxt == "a" or lc_nxt == "ą" or lc_nxt == "o" or
lc_nxt == "u" or lc_nxt == "ų" or lc_nxt == "ū" or lc_nxt == "ɔ")
local is_valid_diph = is_strict_diphthong(lc_curr, curr.tone, lc_nxt, nxt and nxt.tone)
if is_valid_diph and nxt_nxt and get_type(nxt_nxt.char) == "V" then
local lc_nxt_nxt = ulower(nxt_nxt.char)
local is_next_valid_diph = is_strict_diphthong(lc_nxt, nxt.tone, lc_nxt_nxt, nxt_nxt.tone)
if is_next_valid_diph then
-- Resolve ambiguous triplets (e.g., auo -> a.uo is standard)
-- Break the first valid diphthong unless explicitly stressed
if not curr.tone then
is_valid_diph = false
end
end
end
if is_silent_i_diph then
local tone = nxt.tone or nxt_nxt.tone
local tone_position = nil
if tone then
-- For silent i diphthongs (e.g., iau), position is relative to the full string
-- Position 2 = middle vowel, Position 3 = last vowel
if nxt.tone then
tone_position = 2
elseif nxt_nxt.tone then
tone_position = 3
end
end
insert(tokens, {char = curr.char .. nxt.char .. nxt_nxt.char, type = "V", tone = tone, has_silent_i = true, tone_position = tone_position})
i = i + 3
elseif is_silent_i_mono then
local tone = nxt.tone
local tone_position = nil
if tone then
-- For silent i monosyllables (e.g., ia), position 2 = second character
tone_position = 2
end
insert(tokens, {char = curr.char .. nxt.char, type = "V", tone = tone, has_silent_i = true, tone_position = tone_position})
i = i + 2
elseif is_valid_diph then
local tone = curr.tone or nxt.tone
local tone_position = nil
if tone then
-- Record which vowel carries the tone (1 = first, 2 = second)
if curr.tone then
tone_position = 1
elseif nxt.tone then
tone_position = 2
end
end
insert(tokens, {char = curr.char .. nxt.char, type = "V", tone = tone, tone_position = tone_position})
i = i + 2
else
insert(tokens, {char = curr.char, type = "V", tone = curr.tone})
i = i + 1
end
else
if curr.char ~= " " then
local tok_type = get_type(curr.char)
local is_respelling_j = false
-- Check if this is a respelling j
if ulower(curr.char) == "j" and #respelling_j_positions > 0 then
-- Build cleaned string up to current position to find clean position
local cleaned_so_far = ""
for k = 1, i do
local c = raw_chars[k]
if c.char ~= "^" and c.char ~= "." and c.char ~= " " and c.char ~= "ʼ" and c.char ~= "ˌ" then
local char_clean = c.char
-- Don't add tone marks to cleaned string
if not c.tone then
cleaned_so_far = cleaned_so_far .. char_clean
else
-- Add base character without tone
cleaned_so_far = cleaned_so_far .. char_clean
end
end
end
local clean_pos = ulen(cleaned_so_far)
-- Check if this position is in respelling list
for _, pos in ipairs(respelling_j_positions) do
if pos == clean_pos then
is_respelling_j = true
break
end
end
end
if ulower(curr.char) == "j" then
local tok_data = {char = curr.char, type = tok_type, tone = curr.tone, is_respelling = is_respelling_j, is_optional = false}
if is_respelling_j then
tok_data.original_char = "-" -- Respelling: use "-" to indicate not in orthography
end
insert(tokens, tok_data)
else
insert(tokens, {char = curr.char, type = tok_type, tone = curr.tone})
end
end
i = i + 1
end
end
-- Validate respelling glides are between vowels
for i, tok in ipairs(tokens) do
if tok.is_respelling then
local prev_is_vowel = false
local next_is_vowel = false
-- Check previous non-boundary token
for j = i - 1, 1, -1 do
if tokens[j].type ~= "BOUNDARY" and tokens[j].type ~= "SECONDARY_STRESS_BOUNDARY" then
prev_is_vowel = (tokens[j].type == "V")
break
end
end
-- Check next non-boundary token
for j = i + 1, #tokens do
if tokens[j].type ~= "BOUNDARY" and tokens[j].type ~= "SECONDARY_STRESS_BOUNDARY" then
next_is_vowel = (tokens[j].type == "V")
break
end
end
if not (prev_is_vowel and next_is_vowel) then
error("lt-pron: Respelling glide 'j' or '(j)' must be between two vowels")
end
end
end
return apply_auto_properties(tokens)
end
-- ============================================================================
-- SECTION 4: Syllabification
-- ============================================================================
-- Pre-syllabification: Merge geminate (doubled) consonants
-- This must happen BEFORE syllabification to prevent false mixed diphthongs
-- For example: pérrašo → pér-ra-šo would incorrectly treat ér as a mixed diphthong
-- By merging rr→r first, we get pé-ra-šo, correctly keeping é as a pure vowel
local function merge_geminate_consonants(tokens)
local SIBILANTS = {["s"]=true, ["z"]=true, ["š"]=true, ["ž"]=true}
local i = 1
while i < #tokens do
local tok = tokens[i]
local nxt = tokens[i+1]
local tok_is_cons = (tok.type == "T" or tok.type == "S" or tok.type == "R")
local nxt_is_cons = (nxt.type == "T" or nxt.type == "S" or nxt.type == "R")
if tok_is_cons and nxt_is_cons then
local tok_char = ulower(tok.char)
local nxt_char = ulower(nxt.char)
local tok_is_sib = SIBILANTS[tok_char]
local nxt_is_sib = SIBILANTS[nxt_char]
-- Merge if: (1) both are sibilants, or (2) identical consonants
if (tok_is_sib and nxt_is_sib) or (tok_char == nxt_char) then
-- Remove the first token (keep the second)
table.remove(tokens, i)
-- Don't increment i, check the same position again
else
i = i + 1
end
else
i = i + 1
end
end
end
local function syllabify(tokens)
local syllables = {}
local current_syl = {}
-- Check for leading secondary stress marker
local has_initial_secondary_stress = false
if #tokens > 0 and tokens[1].type == "SECONDARY_STRESS_BOUNDARY" then
has_initial_secondary_stress = true
end
local v_indices = {}
for i, tok in ipairs(tokens) do
if tok.type == "V" then insert(v_indices, i) end
end
if #v_indices == 0 then return {tokens} end -- Edge case: no vowels
local boundaries = {}
-- Sonority Sequencing Algorithm combined with Morphophonological Maximum Onset
for idx = 1, #v_indices - 1 do
local v1_idx = v_indices[idx]
local v2_idx = v_indices[idx + 1]
local raw_c_tokens = {}
local forced_boundary_idx = nil
for i = v1_idx + 1, v2_idx - 1 do
if tokens[i].type == "BOUNDARY" or tokens[i].type == "SECONDARY_STRESS_BOUNDARY" then
forced_boundary_idx = i
else
insert(raw_c_tokens, {t=tokens[i], orig_idx=i})
end
end
if forced_boundary_idx then
boundaries[forced_boundary_idx] = true
elseif #raw_c_tokens == 0 then
-- Hiatus
boundaries[v2_idx] = true
else
-- Macro-Token Grouping: Treat consecutive sibilants (S) as a single phonological unit
local macro_c = {}
local i = 1
while i <= #raw_c_tokens do
local current = raw_c_tokens[i]
if current.t.type == "S" then
local absorbed = {current}
local j = i + 1
-- Absorb any subsequent S tokens into this macro unit, keeping track of them
while j <= #raw_c_tokens and raw_c_tokens[j].t.type == "S" do
insert(absorbed, raw_c_tokens[j])
j = j + 1
end
insert(macro_c, {type = "S", orig_idx = current.orig_idx, tokens = absorbed})
i = j
else
insert(macro_c, {type = current.t.type, orig_idx = current.orig_idx, tokens = {current}})
i = i + 1
end
end
local m_count = #macro_c
if m_count == 1 then
-- V.CV (or V.SSV, e.g., sausšala -> sau.sšala)
boundaries[macro_c[1].orig_idx] = true
elseif m_count == 2 then
local t1, t2 = macro_c[1].type, macro_c[2].type
-- ST, SR, TR -> V.CCV
if (t1=="S" and t2=="T") or (t1=="S" and t2=="R") or (t1=="T" and t2=="R") then
boundaries[macro_c[1].orig_idx] = true
else
-- Handle TSS and RSS sequences properly (e.g., Oksfordas, transformavo).
-- If the macro cluster is T+S or R+S, and the S unit absorbed multiple sibilants,
-- split between the first and second sibilant (TS.S, RS.S).
if (t1=="T" or t1=="R") and t2=="S" and #macro_c[2].tokens > 1 then
boundaries[macro_c[2].tokens[2].orig_idx] = true
else
-- Default VC.CV
boundaries[macro_c[2].orig_idx] = true
end
end
elseif m_count == 3 then
local t1, t2, t3 = macro_c[1].type, macro_c[2].type, macro_c[3].type
if t1=="S" and t2=="T" and t3=="R" then
boundaries[macro_c[1].orig_idx] = true -- V.CCCV
elseif (t1=="T" and t2=="S" and t3=="T") or
(t1=="R" and t2=="S" and t3=="T") or
(t1=="T" and t2=="S" and t3=="R") or
(t1=="R" and t2=="T" and t3=="R") or
(t1=="T" and t2=="T" and t3=="R") or
(t1=="R" and t2=="S" and t3=="R") then
boundaries[macro_c[2].orig_idx] = true -- VC.CCV (includes RSR, e.g., konfliktas)
else
boundaries[macro_c[3].orig_idx] = true -- VCC.CV
end
elseif m_count == 4 then
-- Identify the 4-consonant pattern according to the 8 documented combinations
local pattern = macro_c[1].type .. macro_c[2].type .. macro_c[3].type .. macro_c[4].type
if pattern == "RSTR" or pattern == "TSTR" then
-- R.STR, T.STR -> VC.CCCV
boundaries[macro_c[2].orig_idx] = true
elseif pattern == "RTRR" or pattern == "TSTS" then
-- RTR.R, TST.S -> VCCC.CV
boundaries[macro_c[4].orig_idx] = true
else
-- RT.ST, RT.SR, RT.TR, ST.TR -> VCC.CCV
boundaries[macro_c[3].orig_idx] = true
end
elseif m_count >= 5 then
-- Fallback for >=5 logical consonant units
track('complex-consonant-cluster')
boundaries[macro_c[3].orig_idx] = true
end
end
end
-- Construct syllables
local secondary_stress_syllables = {}
for i, tok in ipairs(tokens) do
if boundaries[i] and #current_syl > 0 then
insert(syllables, current_syl)
-- If this is a secondary stress boundary, mark the NEXT syllable
if tok.type == "SECONDARY_STRESS_BOUNDARY" then
secondary_stress_syllables[#syllables + 1] = true
end
current_syl = {}
end
if tok.type ~= "BOUNDARY" and tok.type ~= "SECONDARY_STRESS_BOUNDARY" then
insert(current_syl, tok)
end
end
if #current_syl > 0 then insert(syllables, current_syl) end
-- Apply secondary stress marks
for idx, _ in pairs(secondary_stress_syllables) do
if syllables[idx] then
syllables[idx].secondary_stress = true
end
end
-- Apply initial secondary stress if present
if has_initial_secondary_stress and #syllables > 0 then
syllables[1].secondary_stress = true
end
return syllables
end
-- ============================================================================
-- SECTION 5: Base IPA Mapping & Stress Assignment
-- ============================================================================
local function is_mixed_diphthong(syl, v_idx)
local v_tok = syl[v_idx]
local lc_v = ulower(v_tok.char)
-- Strip silent 'i' for accurate length calculation
if v_tok.has_silent_i then
lc_v = usub(lc_v, 2)
end
-- Digraphs (ie, uo, ai, au, etc.) or natively long vowels (ą, ę, ė, į, y, ų, ū)
-- do NOT form mixed diphthongs with subsequent resonants.
-- Only short a, e, i, u, o can form true mixed diphthongs.
if ulen(lc_v) > 1 then return false end
local LONG_V = {["ą"]=true, ["ę"]=true, ["ė"]=true, ["į"]=true, ["y"]=true, ["ų"]=true, ["ū"]=true}
if LONG_V[lc_v] then return false end
-- V + R in the SAME syllable (coda)
if v_idx < #syl and syl[v_idx+1].type == "R" then
-- j and v are not considered for typical liquid semi-diphthongs length rules
if syl[v_idx+1].char ~= "j" and syl[v_idx+1].char ~= "v" then
return true
end
end
return false
end
local function map_base_phonetics(syllables)
local stress_prefix = nil
for _, syl in ipairs(syllables) do
local v_idx = nil
for i, tok in ipairs(syl) do
if tok.type == "V" then v_idx = i; break end
end
if v_idx then
local v_tok = syl[v_idx]
local v_char = v_tok.char
local lc_v_char = ulower(v_char)
local tone = v_tok.tone
local is_mixed = is_mixed_diphthong(syl, v_idx)
if is_mixed and not tone then
local r_tok = syl[v_idx+1]
if r_tok.tone then tone = r_tok.tone end
end
if v_tok.has_silent_i then
v_tok.silent_i = true
local actual_vowel = usub(lc_v_char, 2)
v_tok.ipa = V_IPA[actual_vowel] or "ɐ"
lc_v_char = actual_vowel
else
-- Apply loan quality base default for 'o' and 'e'
v_tok.ipa = V_IPA[lc_v_char] or "ɐ"
if lc_v_char == "o" and v_tok.loan_quality then
v_tok.ipa = "ɔ"
end
if lc_v_char == "e" and v_tok.loan_quality then
v_tok.ipa = "e"
end
-- Automatically prepend glide 'j' to syllable-initial 'ie'
if lc_v_char == "ie" and v_idx == 1 then
v_tok.ipa = "jiɛ"
end
end
if tone then
local s_mark = ""
local v_base = usub(lc_v_char, 1, 1)
if tone == "acute" then
s_mark = "¹ˈ"
if lc_v_char == "a" then
if is_mixed then v_tok.ipa = "ɑˑ" else v_tok.ipa = "ɑː" end
elseif lc_v_char == "e" then
-- Note: '^' modifier not allowed with acute 'é' as of current rules
-- This code path preserved for consistency
if is_mixed and v_tok.loan_quality then
v_tok.ipa = "ɛ" -- Loanword é in mixed diphthongs is short /ɛ/ without length
elseif is_mixed then
v_tok.ipa = "æˑ" -- Mixed diphthong: half-long
else
v_tok.ipa = "æː" -- Pure vowel: full-long
end
elseif lc_v_char == "ai" then v_tok.ipa = "ɑˑɪ"
elseif lc_v_char == "au" then v_tok.ipa = "ɑˑʊ"
elseif lc_v_char == "ei" then v_tok.ipa = "æˑɪ"
elseif lc_v_char == "eu" then v_tok.ipa = "æˑʊ"
elseif lc_v_char == "oi" then v_tok.ipa = "oˑɪ"
end
elseif tone == "grave" then
if is_mixed and (v_base == "i" or v_base == "u" or v_base == "e" or v_base == "o") then
s_mark = "¹ˈ"
elseif lc_v_char == "ui" or lc_v_char == "oi" or lc_v_char == "ou" or lc_v_char == "eu" then
s_mark = "¹ˈ"
else
s_mark = "ˈ"
end
-- Handle loanword variants for grave
if lc_v_char == "e" and v_tok.loan_quality then
v_tok.ipa = "e" -- è^ (loanword) → [e]
end
if lc_v_char == "o" then
v_tok.ipa = "ɔ" -- ò (always loanword) → [ɔ]
end
elseif tone == "tilde" then
s_mark = "²ˈ"
if lc_v_char == "ai" then v_tok.ipa = "ɐɪˑ"
elseif lc_v_char == "au" then v_tok.ipa = "ɒʊˑ"
elseif lc_v_char == "ei" then v_tok.ipa = "ɛɪˑ"
elseif lc_v_char == "eu" then v_tok.ipa = "ɛʊˑ"
elseif lc_v_char == "ui" then v_tok.ipa = "ʊɪˑ"
elseif lc_v_char == "a" then
if is_mixed then v_tok.ipa = "ɐ" else v_tok.ipa = "ɑː" end
elseif lc_v_char == "e" then
if is_mixed then v_tok.ipa = "ɛ" else v_tok.ipa = "æː" end
end
end
syl.stress = s_mark
end
-- Set base IPA for consonants (case-insensitive mapping)
for i, tok in ipairs(syl) do
if tok.type ~= "V" then
local lc_c = ulower(tok.char)
tok.ipa = CONS_IPA[lc_c] or lc_c
end
end
-- Handle tilde half-length on mixed diphthong coda
if tone == "tilde" and is_mixed then
local r_tok = syl[v_idx+1]
r_tok.half_long = true
end
else
-- Syllable with no vowel (e.g. leftover consonant)
for i, tok in ipairs(syl) do
local lc_c = ulower(tok.char)
tok.ipa = CONS_IPA[lc_c] or lc_c
end
end
end
end
-- ============================================================================
-- SECTION 6: Phonetic Polish Passes
-- ============================================================================
-- Pass 1: Palatalization Spreading (Right-to-Left)
--
-- right_context_palatalizing (optional, used by the cross-word pipeline):
-- When the current word is followed by a liaisoned word whose first effective
-- phoneme is "soft" (front V, j, or a palatalized consonant), pass `true` so
-- that:
-- 1. spread_active starts true (allowing the word's last consonant to
-- receive ʲ even though it has no in-word right neighbour);
-- 2. is_direct evaluates to true for that last consonant when it is k/g,
-- so VLKK §19's "lyk‿jója → [lʲiːkʲ‿…]" pattern is produced.
-- When omitted or false, the function behaves exactly like the within-word
-- palatalization that this module has always done.
local function apply_palatalization(syllables, right_context_palatalizing)
-- Flatten tokens for cross-syllable spreading
local flat_tokens = {}
for _, syl in ipairs(syllables) do
for _, tok in ipairs(syl) do insert(flat_tokens, tok) end
end
-- First pass: Apply softening marks (no spreading)
for i = 1, #flat_tokens do
local tok = flat_tokens[i]
if tok.softening_mark and tok.ipa ~= "" then
tok.ipa = tok.ipa .. "ʲ"
tok.is_palatalized = true
end
end
local spread_active = right_context_palatalizing and true or false
for i = #flat_tokens, 1, -1 do
local tok = flat_tokens[i]
local lc_char = ulower(tok.char)
if tok.type == "V" then
if tok.silent_i or FRONT_V[lc_char] then
spread_active = true
else
spread_active = false
end
elseif lc_char == "j" then
-- Preserve special IPA for final j (ɪ̯), don't override it
if tok.ipa ~= "ɪ̯" and tok.ipa ~= "" then
tok.ipa = "j"
end
tok.is_palatalized = true
spread_active = true
else
if spread_active then
-- Check if the palatalization is DIRECT (immediate contact with front V or j)
local is_direct = false
local nxt = flat_tokens[i+1]
if nxt then
local nxt_lc = ulower(nxt.char)
if (nxt.type == "V" and (nxt.silent_i or FRONT_V[nxt_lc])) or nxt_lc == "j" then
is_direct = true
end
elseif right_context_palatalizing then
-- No in-word neighbour, but a liaisoned soft phoneme follows.
is_direct = true
end
tok.is_palatalized = true
if lc_char == "k" or lc_char == "g" then
if is_direct and tok.ipa ~= "" then
tok.ipa = tok.ipa .. "ʲ"
end
-- DO NOT set spread_active to false! k/g are transparent to spreading.
else
if tok.ipa ~= "" then
tok.ipa = tok.ipa .. "ʲ"
end
end
end
end
end
end
-- Pass 2: Voicing Assimilation (Right-to-Left)
local function apply_voicing_assimilation(syllables)
local flat_tokens = {}
for _, syl in ipairs(syllables) do
for _, tok in ipairs(syl) do insert(flat_tokens, tok) end
end
local target_voice = nil
for i = #flat_tokens, 1, -1 do
local tok = flat_tokens[i]
if tok.type == "V" or tok.type == "R" then
target_voice = nil -- Blocked by vowels and resonants
elseif tok.type == "S" or tok.type == "T" then
local lc_char = ulower(tok.char)
local is_uppercase = (tok.char ~= lc_char)
if target_voice == nil then
-- Establish new assimilation target
target_voice = is_voiced(lc_char) and "voiced" or "voiceless"
else
-- Assimilate
local current_is_voiced = is_voiced(lc_char)
if target_voice == "voiced" and not current_is_voiced then
local new_char = VOICING_PAIRS[lc_char] or lc_char
tok.char = is_uppercase and uupper(new_char) or new_char
elseif target_voice == "voiceless" and current_is_voiced then
local new_char = VOICING_PAIRS[lc_char] or lc_char
tok.char = is_uppercase and uupper(new_char) or new_char
end
-- Update IPA based on new character, preserving palatalization
local lc_new_char = ulower(tok.char)
local new_ipa = CONS_IPA[lc_new_char] or lc_new_char
if tok.is_palatalized and lc_new_char ~= "k" and lc_new_char ~= "g" then
new_ipa = new_ipa .. "ʲ"
end
tok.ipa = new_ipa
end
end
end
end
-- Pass 3: Nasal Assimilation (n -> ŋ before velars k/g and post-velar ch/h)
-- Per VLKK §6.3, n assimilates to the place of articulation of any following
-- velar/uvular consonant, including the fricatives ch [x] and h [ɣ].
local function apply_nasal_assimilation(syllables)
local flat_tokens = {}
for _, syl in ipairs(syllables) do
for _, tok in ipairs(syl) do insert(flat_tokens, tok) end
end
for i = 1, #flat_tokens - 1 do
local tok = flat_tokens[i]
-- Ignore vowels for lookahead
local lookahead = i + 1
while lookahead <= #flat_tokens and flat_tokens[lookahead].type == "V" do
if flat_tokens[lookahead].silent_i then
lookahead = lookahead + 1
else
break
end
end
local nxt = flat_tokens[lookahead]
if nxt and ulower(tok.char) == "n" then
local lc_nxt = ulower(nxt.char)
if lc_nxt == "k" or lc_nxt == "g" or lc_nxt == "ch" or lc_nxt == "h" then
-- Check actual IPA string for direct palatalization
if ufind(nxt.ipa, "ʲ") then
tok.ipa = "ŋʲ"
else
tok.ipa = "ŋ"
end
end
end
end
end
-- Pass 4: Vowel Quality Adjustments after Palatalization
local function adjust_vowel_quality(syllables)
for _, syl in ipairs(syllables) do
local has_palatal_onset = false
for i, tok in ipairs(syl) do
if tok.type ~= "V" and (tok.is_palatalized or ulower(tok.char) == "j") then
has_palatal_onset = true
elseif tok.type == "V" and has_palatal_onset then
local ipa = tok.ipa
-- Shift a/e quality
if ipa == "ɐ" then ipa = "ɛ"
elseif ipa == "ɑː" then ipa = "æː"
-- Diphthong shifts for iau / iai
elseif ipa == "ɒʊ" then ipa = "ɛʊ"
elseif ipa == "ɑˑʊ" then ipa = "æˑʊ"
elseif ipa == "ɒʊˑ" then ipa = "ɛʊˑ"
elseif ipa == "ɐɪ" then ipa = "ɛɪ"
elseif ipa == "ɑˑɪ" then ipa = "æˑɪ"
elseif ipa == "ɐɪˑ" then ipa = "ɛɪˑ"
end
-- Dynamic fronting for u/o/ɔ (adds U+031F)
-- Matches ONLY the first character (^) to avoid double fronting in uɔ
ipa = ugsub(ipa, "^([uʊoɔ])", "%1̟")
tok.ipa = ipa
has_palatal_onset = false
end
end
end
end
-- Pass 5: Terminal Devoicing (Word-final obstruent devoicing)
local function apply_terminal_devoicing(syllables)
if #syllables == 0 then return end
local last_syl = syllables[#syllables]
local last_tok = last_syl[#last_syl]
if last_tok and (last_tok.type == "S" or last_tok.type == "T") then
local lc_char = ulower(last_tok.char)
local is_uppercase = (last_tok.char ~= lc_char)
if is_voiced(lc_char) then
local devoiced = VOICING_PAIRS[lc_char]
if devoiced then
last_tok.char = is_uppercase and uupper(devoiced) or devoiced
local new_ipa = CONS_IPA[devoiced] or devoiced
if last_tok.is_palatalized then new_ipa = new_ipa .. "ʲ" end
last_tok.ipa = new_ipa
end
end
end
end
-- Pass 6: Place Assimilation (Sibilant + Affricate)
-- When a sibilant meets an affricate, the sibilant adjusts its place of articulation:
-- s+č→š, z+dž→ž, š+c→s, ž+dz→z
local function apply_place_assimilation(syllables)
local flat_tokens = {}
for _, syl in ipairs(syllables) do
for _, tok in ipairs(syl) do insert(flat_tokens, tok) end
end
local PLACE_ASSIM = {
["s"] = {["t͡ʃ"] = "ʃ"},
["z"] = {["d͡ʒ"] = "ʒ"},
["ʃ"] = {["t͡s"] = "s"},
["ʒ"] = {["d͡z"] = "z"},
}
for i = 1, #flat_tokens - 1 do
local tok = flat_tokens[i]
local nxt = flat_tokens[i+1]
if tok.type == "S" and nxt.type == "T" then
local rule = PLACE_ASSIM[tok.ipa]
if rule and rule[nxt.ipa] then
tok.ipa = rule[nxt.ipa]
end
end
end
end
-- Pass 7: Geminate Simplification (Double consonant reduction)
-- NOTE: Original geminates (rr, ll, etc.) are already merged in merge_geminate_consonants.
-- This pass handles geminates created by phonetic rules (e.g., voicing assimilation: td→dd).
-- Sibilants: any two sibilants merge into one (keeping the second)
-- Other consonants: only identical pairs merge
local function apply_geminate_simplification(syllables)
local flat_tokens = {}
for _, syl in ipairs(syllables) do
for _, tok in ipairs(syl) do insert(flat_tokens, tok) end
end
local SIBILANTS = {["s"]=true, ["z"]=true, ["ʃ"]=true, ["ʒ"]=true}
for i = 1, #flat_tokens - 1 do
local tok = flat_tokens[i]
local nxt = flat_tokens[i+1]
local tok_is_cons = (tok.type == "T" or tok.type == "S" or tok.type == "R")
local nxt_is_cons = (nxt.type == "T" or nxt.type == "S" or nxt.type == "R")
if tok_is_cons and nxt_is_cons then
local tok_is_sib = SIBILANTS[tok.ipa]
local nxt_is_sib = SIBILANTS[nxt.ipa]
if tok_is_sib and nxt_is_sib then
tok.ipa = ""
elseif tok.ipa == nxt.ipa and tok.ipa ~= "" then
tok.ipa = ""
end
end
end
end
-- Pass 8: Final Consonant Vocalization (v → ʊ̯, j → ɪ̯)
-- Word-final v and j (without tilde) become non-syllabic vowels
-- Note: j with tilde is already converted to i with tilde in tokenization
local function apply_final_consonant_vocalization(syllables)
if #syllables == 0 then return end
local last_syl = syllables[#syllables]
local last_tok = last_syl[#last_syl]
if last_tok then
local lc_char = ulower(last_tok.char)
-- Final v → ʊ̯
if lc_char == "v" then
last_tok.ipa = "ʊ̯"
-- Keep type as "R" (resonant) for now - it's treated as non-syllabic
end
-- Final j (without tilde) → ɪ̯
-- Note: j with tilde is already converted to i in tokenization, so won't reach here
if lc_char == "j" and last_tok.tone ~= "tilde" then
last_tok.ipa = "ɪ̯"
-- Keep type as "R" (resonant) for now - it's treated as non-syllabic
end
end
end
-- ============================================================================
-- SECTION 7: Output Assembly
-- ============================================================================
-- ---------------------------------------------------------------------------
-- Cross-word phonology helpers
-- ---------------------------------------------------------------------------
-- Split a term into segments at spaces only. Returns a plain list of
-- non-empty word strings. The liaison marker ‿ is reserved for IPA output
-- and must never appear in input; if it does, raise an error so the editor
-- knows to use a regular space instead.
local function split_into_segments(term)
if term and ufind(term, LIAISON) then
error("lt-pron: the liaison marker \"" .. LIAISON ..
"\" (U+203F) must not appear in the input. Use a regular " ..
"space between words; the module decides where to insert ‿ " ..
"in the IPA output based on stress.")
end
local segs = {}
for _, w in ipairs(rsplit(term or "", " ")) do
if w ~= "" then insert(segs, w) end
end
return segs
end
-- True if any syllable in the word has primary or secondary stress.
local function word_has_stress(syllables)
for _, syl in ipairs(syllables) do
if syl.stress or syl.secondary_stress then
return true
end
end
return false
end
-- Compute the clitic group anchor for each word in a phrase.
--
-- A "clitic group" is a stressed word together with all unstressed words that
-- prosodically attach to it. Two adjacent words share a liaison ‿ iff they
-- belong to the same group. The algorithm:
--
-- 1. Every stressed word is its own anchor.
-- 2. Each unstressed word looks FORWARD for the nearest stressed word
-- (proclitic case, e.g., "iš namų̃" — iš leans on namų̃).
-- 3. If no stressed word follows, look BACKWARD instead (enclitic case,
-- e.g., "sakaũ gi" — gi leans on sakaũ).
-- 4. If the entire phrase has no stressed word (rare edge case), all
-- unstressed words share a single pseudo-group with anchor 0.
--
-- This matches VLKK §4.7 examples like "iš namų̃ [ɪʃ‿nɐ²ˈmuː]" (proclitic)
-- and "sakaũ gi [sɐ²ˈkɒʊˑ‿ɡʲɪ]" (enclitic), and produces the correct
-- behavior for VLKK §4.9's "išėjaũ į kiẽmą" where the unstressed į proclitic
-- to kiẽmą while išėjaũ stands alone.
local function compute_clitic_anchors(word_data)
local anchors = {}
-- Pass 1: stressed words anchor themselves.
for i, wd in ipairs(word_data) do
if word_has_stress(wd.syllables) then
anchors[i] = i
end
end
-- Pass 2: RTL — each unstressed word adopts the next word's anchor.
-- Scanning RTL means each position can simply copy anchors[i+1], which
-- already points to the nearest stressed word to the right (or nil).
for i = #word_data - 1, 1, -1 do
if anchors[i] == nil then
anchors[i] = anchors[i+1]
end
end
-- Pass 3: LTR — words still without an anchor (no stressed word to the
-- right) fall back to the nearest stressed word on the left.
for i = 2, #word_data do
if anchors[i] == nil then
anchors[i] = anchors[i-1]
end
end
-- Pass 4: entire phrase has no stress at all — bundle everything into
-- pseudo-group 0 so the words at least share liaison with each other.
if #word_data > 0 and anchors[1] == nil then
for i = 1, #word_data do
anchors[i] = 0
end
end
return anchors
end
-- Find the first non-empty token across syllables (skips silent or zero-IPA
-- tokens that don't realize a phoneme).
local function first_effective_token(syllables)
for _, syl in ipairs(syllables) do
for _, tok in ipairs(syl) do
if tok.ipa ~= "" then return tok end
end
end
return nil
end
-- Find the last non-empty token across syllables.
local function last_effective_token(syllables)
for s = #syllables, 1, -1 do
local syl = syllables[s]
for t = #syl, 1, -1 do
if syl[t].ipa ~= "" then return syl[t] end
end
end
return nil
end
-- Return true if the next word's first effective phoneme triggers
-- palatalization across the liaison boundary (front V, j, or an already
-- palatalized consonant). Must be called AFTER the next word's palatalization
-- pass has run, so `is_palatalized` is reliable.
local function first_token_palatalizes(syllables)
local tok = first_effective_token(syllables)
if not tok then return false end
local lc = ulower(tok.char)
if tok.type == "V" then
return tok.silent_i or FRONT_V[lc] or false
end
if lc == "j" then return true end
return tok.is_palatalized == true
end
-- VLKK §20: the preposition "už" keeps its [ʒ] (i.e. terminal devoicing is
-- skipped) when the next liaisoned word starts with a vowel or sonorant
-- consonant (n, m, l, r, j, v). Other words always undergo terminal devoicing.
local UZ_SKIP_SONORANTS = {
["n"]=true, ["m"]=true, ["l"]=true,
["r"]=true, ["j"]=true, ["v"]=true,
}
local function should_skip_devoicing_for_uz(word_text, next_syllables)
-- remove_all_accents returns NFD; we have to fold it back to NFC before
-- comparing against the literal "už" because ž (U+017E) decomposes to
-- z + COMBINING CARON (U+030C) in NFD form.
local clean = ulower(mw.ustring.toNFC(remove_all_accents(word_text or "")))
if clean ~= "už" then return false end
if not next_syllables then return false end
local nxt = first_effective_token(next_syllables)
if not nxt then return false end
if nxt.type == "V" then return true end
return UZ_SKIP_SONORANTS[ulower(nxt.char)] == true
end
-- VLKK §21b / §22b / §23b: at a liaison boundary, the last consonant of W1
-- and the first consonant of W2 may interact. We mirror within-word place
-- assimilation and geminate / sibilant simplification, applied just before
-- W1's palatalization pass so that any new ipa (e.g. s → ʃ) gets palatalized
-- correctly when needed.
local CROSSWORD_PLACE_ASSIM = {
["s"] = {["t͡ʃ"] = "ʃ"},
["z"] = {["d͡ʒ"] = "ʒ"},
["ʃ"] = {["t͡s"] = "s"},
["ʒ"] = {["d͡z"] = "z"},
}
local CROSSWORD_SIBILANTS = {["s"]=true, ["z"]=true, ["ʃ"]=true, ["ʒ"]=true}
local function strip_trailing_palatal(ipa)
if not ipa then return "" end
local stripped = ugsub(ipa, "ʲ$", "")
return stripped
end
local function apply_crossword_polish_at_junction(w1_syllables, w2_syllables)
local w1_last = last_effective_token(w1_syllables)
local w2_first = first_effective_token(w2_syllables)
if not (w1_last and w2_first) then return end
-- W1's last token has not yet been palatalized at this point in the
-- pipeline, so its ipa is the bare base form. W2 has already been fully
-- polished, so we must strip a trailing ʲ before using it as a key.
local w1_base = w1_last.ipa or ""
local w2_base = strip_trailing_palatal(w2_first.ipa)
if w1_base == "" or w2_base == "" then return end
-- Geminate / sibilant cluster: drop W1's last consonant entirely.
if w1_base == w2_base
or (CROSSWORD_SIBILANTS[w1_base] and CROSSWORD_SIBILANTS[w2_base]) then
w1_last.ipa = ""
return
end
-- Place assimilation: rewrite W1's last consonant base. Palatalization,
-- if any, will be re-applied by the palatalization pass.
local rule = CROSSWORD_PLACE_ASSIM[w1_base]
if rule and rule[w2_base] then
w1_last.ipa = rule[w2_base]
end
end
-- ---------------------------------------------------------------------------
-- Word-level rendering
-- ---------------------------------------------------------------------------
-- Tokenize, syllabify, and assign base phonetics for one word. Returns a
-- table { text, syllables } with the word's mutable phonological state.
local function prepare_word_state(word, pagename)
local tokens = tokenize(word, pagename)
merge_geminate_consonants(tokens)
local syllables = syllabify(tokens)
map_base_phonetics(syllables)
return {text = word, syllables = syllables}
end
-- Render a fully polished syllables list into an IPA string. Identical to
-- the original tail of process_single_word_ipa.
local function render_word_ipa(syllables)
local parts = {}
for s_idx, syl in ipairs(syllables) do
local syl_str = ""
local hiatus_sep = ""
if s_idx > 1 then
local prev_syl = syllables[s_idx - 1]
local prev_last_tok = prev_syl[#prev_syl]
local curr_first_tok = syl[1]
local prev_ends_with_v = (prev_last_tok and prev_last_tok.type == "V" and not prev_last_tok.silent_i)
local curr_starts_with_v = (curr_first_tok and curr_first_tok.type == "V" and not curr_first_tok.silent_i)
if prev_ends_with_v and curr_starts_with_v then
local prev_v_char = ulower(prev_last_tok.char)
local curr_v_char = ulower(curr_first_tok.char)
-- Only handle ie special case
if curr_v_char == "ie" then
-- 'ie' has implicit 'j' from map_base_phonetics.
syl_str = ""
hiatus_sep = ""
else
-- Standard hiatus without glide insertion
syl_str = "."
hiatus_sep = ""
end
end
end
-- Check for conflict between primary and secondary stress
if syl.secondary_stress and syl.stress then
error("lt-pron: A syllable cannot have both primary stress (tone mark) and secondary stress (ˌ)")
end
-- Add stress markers (primary or secondary, mutually exclusive)
if syl.secondary_stress then
syl_str = syl_str .. "ˌ"
elseif syl.stress then
syl_str = syl_str .. syl.stress
end
syl_str = syl_str .. hiatus_sep
for _, tok in ipairs(syl) do
if tok.is_respelling then
if tok.is_optional then
syl_str = syl_str .. "(j)"
else
syl_str = syl_str .. tok.ipa
end
else
syl_str = syl_str .. tok.ipa
end
if tok.half_long then syl_str = syl_str .. "ˑ" end
end
insert(parts, syl_str)
end
return concat(parts, "")
end
-- ---------------------------------------------------------------------------
-- Multi-word IPA assembler with cross-word phonology
-- ---------------------------------------------------------------------------
-- Pipeline for a phrase made of space-separated words. The liaison marker ‿
-- never appears in input; it is inserted into the rendered IPA according to
-- clitic-group anchors computed from per-word stress (see
-- compute_clitic_anchors above).
--
-- Per-word polish order (unchanged from VLKK §17–§19):
-- terminal devoicing → voicing assim → place assim → geminate simp →
-- final-cons vocalization → cross-word polish at junction →
-- palatalization (with cross-word right context) → nasal assim →
-- vowel quality.
--
-- Cross-word polish at the junction (§21b/§22b/§23b) runs *before* W1's
-- palatalization pass so that any rewritten ipa still receives ʲ correctly.
-- Words are processed RTL so that each W_i sees the already-polished state
-- of W_{i+1} when computing its cross-word context.
local function to_ipa(term, provided_pagename)
-- Use provided pagename if available, otherwise try to extract from term
local pagename, clean_term
if provided_pagename then
pagename = provided_pagename
clean_term = term
else
pagename, clean_term = get_pagename(term)
end
term = clean_term
-- Split input and pagename on whitespace; bail out if input contains ‿.
local input_segs = split_into_segments(term)
local pagename_segs = nil
if pagename then
pagename_segs = split_into_segments(pagename)
-- Verify word count matches (only when both are multi-word)
if #input_segs > 1 and #pagename_segs > 1 and #input_segs ~= #pagename_segs then
error("lt-pron: Input has " .. #input_segs .. " words but pagename has "
.. #pagename_segs .. " words. They must match.")
end
-- If pagename is a single word but input is multi-word, drop pagename
-- alignment (respelling detection only makes sense for exact matches).
if #pagename_segs == 1 and #input_segs > 1 then
pagename_segs = nil
end
end
-- Stage 1: tokenize / syllabify / map base phonetics for every word.
local word_data = {}
for i, seg_text in ipairs(input_segs) do
local seg_pagename = (pagename_segs and pagename_segs[i]) or nil
insert(word_data, prepare_word_state(seg_text, seg_pagename))
end
if #word_data == 0 then return "" end
-- Stage 2: compute clitic anchors and decide liaison per junction.
-- Two adjacent words share a ‿ iff they belong to the same clitic group.
local anchors = compute_clitic_anchors(word_data)
for i = 1, #word_data - 1 do
word_data[i].is_liaison = (anchors[i] == anchors[i+1])
end
if word_data[#word_data] then
word_data[#word_data].is_liaison = false -- no successor
end
-- Stage 3: flag the už §20 exception. už keeps its [ʒ] (i.e. terminal
-- devoicing is skipped) only when it is in a liaison junction with the
-- following word AND that word starts with a vowel or sonorant. Whether
-- už is proclitic or enclitic in the group doesn't matter — what matters
-- is that ‿ sits between už and the next phoneme.
for i = 1, #word_data do
local wd = word_data[i]
wd.skip_terminal_devoicing = false
if wd.is_liaison and word_data[i+1] then
if should_skip_devoicing_for_uz(wd.text, word_data[i+1].syllables) then
wd.skip_terminal_devoicing = true
end
end
end
-- Stage 4: run the polish pipeline RTL across word_data so each W_i sees
-- W_{i+1}'s polished state when computing cross-word context.
for i = #word_data, 1, -1 do
local wd = word_data[i]
local next_wd = wd.is_liaison and word_data[i+1] or nil
-- Within-word polish (passes 1-5)
if not wd.skip_terminal_devoicing then
apply_terminal_devoicing(wd.syllables)
end
apply_voicing_assimilation(wd.syllables)
apply_place_assimilation(wd.syllables)
apply_geminate_simplification(wd.syllables)
apply_final_consonant_vocalization(wd.syllables)
-- Cross-word fricative simplification / place assimilation at the
-- liaison boundary, before W1 palatalizes (so a freshly assimilated
-- s → ʃ can still pick up ʲ).
if next_wd then
apply_crossword_polish_at_junction(wd.syllables, next_wd.syllables)
end
-- Determine right palatalization context for the cross-word case.
local right_palatalizing = false
if next_wd then
right_palatalizing = first_token_palatalizes(next_wd.syllables)
end
-- Pass 6: palatalization (with cross-word context).
apply_palatalization(wd.syllables, right_palatalizing)
-- Remaining within-word passes.
apply_nasal_assimilation(wd.syllables)
adjust_vowel_quality(wd.syllables)
end
-- Stage 5: render each word and join with ‿ (same clitic group) or " ".
local result_parts = {}
for i, wd in ipairs(word_data) do
insert(result_parts, render_word_ipa(wd.syllables))
end
local result = result_parts[1] or ""
for i = 2, #word_data do
local sep = word_data[i-1].is_liaison and LIAISON or " "
result = result .. sep .. result_parts[i]
end
return result
end
-- Rhyme Extractor
local IPA_VOWELS = "aɐɑæɛeəɪiɔoʊuɒɜ"
local function get_rhyme(ipa)
-- Remove liaison and spaces before rhyme calculation
local clean_ipa = ugsub(ipa, "[‿ ]", "")
-- Search for the last stress mark from right to left
local last_stress_pos = nil
for i = ulen(clean_ipa), 1, -1 do
local char = usub(clean_ipa, i, i)
if char == "ˈ" then
-- Skip superscript if present
if i > 1 then
local prev = usub(clean_ipa, i - 1, i - 1)
if prev == "¹" or prev == "²" then
last_stress_pos = i -- Point to ˈ, skip superscript
else
last_stress_pos = i
end
else
last_stress_pos = i
end
break
end
end
if not last_stress_pos then return nil end
-- Extract content after the stress mark
local after = usub(clean_ipa, last_stress_pos + 1)
-- Remove hiatus dots for rhyme grouping
after = ugsub(after, "%.", "")
-- Find first vowel position (skip onset consonants)
local vstart = umatch(after, "()[" .. IPA_VOWELS .. "]")
if vstart then
return usub(after, vstart)
end
return after
end
-- Hyphenation generator (supports multi-word phrases)
local function get_hyphenation(term, provided_pagename)
-- Use provided pagename if available, otherwise try to extract from term
local pagename, clean_term
if provided_pagename then
pagename = provided_pagename
clean_term = term
else
pagename, clean_term = get_pagename(term)
end
term = clean_term
-- Split input on both ‿ and space, tracking the separator type so the
-- final hyphenation string can preserve liaison markers from the input.
local input_segs = split_into_segments(term)
local pagename_segs = nil
if pagename then
pagename_segs = split_into_segments(pagename)
-- Verify segment count matches (only when both are multi-segment)
if #input_segs > 1 and #pagename_segs > 1 and #input_segs ~= #pagename_segs then
error("lt-pron: Input has " .. #input_segs .. " words but pagename has "
.. #pagename_segs .. " words. They must match.")
end
-- If pagename is a single word but input is multi-word, drop alignment
if #pagename_segs == 1 and #input_segs > 1 then
pagename_segs = nil
end
end
local all_word_parts = {}
for i, seg_text in ipairs(input_segs) do
-- Get the corresponding pagename word, or nil if not available
local seg_pagename = (pagename_segs and pagename_segs[i]) or nil
local tokens = tokenize(seg_text, seg_pagename)
local syllables = syllabify(tokens)
local parts = {}
for _, syl in ipairs(syllables) do
local text = ""
for _, tok in ipairs(syl) do
-- Skip respelling characters (original_char == "-" means not in orthography)
if tok.original_char ~= "-" then
-- Re-attach original tone visually for display
local t_mark = ""
if tok.tone == "acute" then t_mark = ACUTE
elseif tok.tone == "grave" then t_mark = GRAVE
elseif tok.tone == "tilde" then t_mark = TILDE
end
-- Use original_char if set (e.g., j̃ → i internally but j in display)
-- Otherwise use tok.char
local disp_char = tok.original_char or tok.char
-- Restore original orthography for ɔ
if disp_char == "ɔ" then disp_char = "o" end
if disp_char == "Ɔ" then disp_char = "O" end
-- Handle tone placement for diphthongs
if tok.tone_position then
-- Diphthong: place tone on the specified vowel
local char_len = ulen(disp_char)
if char_len == 2 then
-- Two-character diphthong
local v1 = usub(disp_char, 1, 1)
local v2 = usub(disp_char, 2, 2)
if tok.tone_position == 1 then
text = text .. v1 .. t_mark .. v2
else
text = text .. v1 .. v2 .. t_mark
end
elseif char_len == 3 then
-- Three-character (silent i) diphthong
local v1 = usub(disp_char, 1, 1)
local v2 = usub(disp_char, 2, 2)
local v3 = usub(disp_char, 3, 3)
if tok.tone_position == 1 then
text = text .. v1 .. t_mark .. v2 .. v3
elseif tok.tone_position == 2 then
text = text .. v1 .. v2 .. t_mark .. v3
else
text = text .. v1 .. v2 .. v3 .. t_mark
end
end
else
-- Single vowel or consonant: tone goes after the character
text = text .. disp_char .. t_mark
end
end
end
parts[#parts + 1] = makeDisplayText(text)
end
insert(all_word_parts, concat(parts, "‧")) -- Use ‧ instead of standard - internally to preserve word boundaries
end
-- Hyphenation always joins multi-word phrases with a plain space — the
-- liaison marker ‿ is purely an IPA-output device and never appears here.
local combined_string = concat(all_word_parts, " ")
local final_parts = {}
for _, piece in ipairs(rsplit(combined_string, "‧")) do
insert(final_parts, piece)
end
-- Calculate actual syllable count (for correct num_syl)
local syllable_count = 0
for _, word_part in ipairs(all_word_parts) do
local word_syls = rsplit(word_part, "‧")
syllable_count = syllable_count + #word_syls
end
-- Store actual syllable count as a field (since __len doesn't work on tables in Lua 5.1)
final_parts.syllable_count = syllable_count
return final_parts
end
-- ============================================================================
-- SECTION 7.5: Conjugation Module Support Functions
-- ============================================================================
-- Export: Get syllables as string array with accents
function export.get_syllables(term)
local pagename, clean_term = get_pagename(term)
term = clean_term
local tokens = tokenize(term, pagename)
local syllables = syllabify(tokens)
local result = {}
for _, syl in ipairs(syllables) do
local text = ""
for _, tok in ipairs(syl) do
-- Skip respelling glides in syllable output
if not tok.is_respelling then
-- Re-attach original tone
local t_mark = ""
if tok.tone == "acute" then t_mark = ACUTE
elseif tok.tone == "grave" then t_mark = GRAVE
elseif tok.tone == "tilde" then t_mark = TILDE
end
-- Restore original orthography for ɔ
local disp_char = tok.char
if disp_char == "ɔ" then disp_char = "o" end
if disp_char == "Ɔ" then disp_char = "O" end
-- Handle tone placement for diphthongs
if tok.tone_position then
-- Diphthong: place tone on the specified vowel
local char_len = ulen(disp_char)
if char_len == 2 then
-- Two-character diphthong
local v1 = usub(disp_char, 1, 1)
local v2 = usub(disp_char, 2, 2)
if tok.tone_position == 1 then
text = text .. v1 .. t_mark .. v2
else
text = text .. v1 .. v2 .. t_mark
end
elseif char_len == 3 then
-- Three-character (silent i) diphthong
local v1 = usub(disp_char, 1, 1)
local v2 = usub(disp_char, 2, 2)
local v3 = usub(disp_char, 3, 3)
if tok.tone_position == 1 then
text = text .. v1 .. t_mark .. v2 .. v3
elseif tok.tone_position == 2 then
text = text .. v1 .. v2 .. t_mark .. v3
else
text = text .. v1 .. v2 .. v3 .. t_mark
end
end
else
-- Single vowel or consonant: tone goes after the character
text = text .. disp_char .. t_mark
end
end
end
-- Return NFC format with proper dotabove insertion
insert(result, makeDisplayText(text))
end
return result
end
-- Export: Check if a syllable is heavy or light
function export.is_heavy_syllable(syllable)
local pagename, clean_syllable = get_pagename(syllable)
syllable = clean_syllable
-- Validate single syllable
local tokens = tokenize(syllable, pagename)
local syllables = syllabify(tokens)
if #syllables ~= 1 then
error("is_heavy_syllable: input must be a single syllable, got " .. #syllables .. " syllables")
end
local syl = syllables[1]
-- Find the vowel token
local v_idx = nil
for i, tok in ipairs(syl) do
if tok.type == "V" then
v_idx = i
break
end
end
if not v_idx then
error("is_heavy_syllable: no vowel found in syllable")
end
local v_tok = syl[v_idx]
local lc_v = ulower(v_tok.char)
-- Handle silent i (e.g., "iau" where i is silent)
if v_tok.has_silent_i then
lc_v = usub(lc_v, 2)
end
-- Long vowels (inherently long, regardless of accent)
local LONG_VOWELS = {
["ą"]=true, ["ę"]=true, ["ė"]=true, ["į"]=true, ["y"]=true, ["ų"]=true, ["ū"]=true,
["o"]=true, ["ɔ"]=true -- o/ɔ are always long (except ò, but we treat all o as long)
}
if LONG_VOWELS[lc_v] then
return true
end
-- Diphthongs (length > 1)
if ulen(lc_v) > 1 then
return true
end
-- Mixed diphthongs: short vowel + liquid in coda position
local SHORT_VOWELS = {["a"]=true, ["e"]=true, ["i"]=true, ["u"]=true}
if SHORT_VOWELS[lc_v] and v_idx < #syl then
local next_tok = syl[v_idx + 1]
-- Liquid in coda (not j or v, which don't form mixed diphthongs)
if next_tok.type == "R" and next_tok.char ~= "j" and next_tok.char ~= "v" then
return true
end
end
-- Otherwise, it's a light syllable
return false
end
-- Export: Change accent of a syllable
function export.change_accent(syllable, target_accent)
local pagename, clean_syllable = get_pagename(syllable)
syllable = clean_syllable
-- Validate target_accent parameter
local VALID_ACCENTS = {acute=true, tilde=true, grave=true, none=true}
if not VALID_ACCENTS[target_accent] then
error("change_accent: invalid target_accent '" .. tostring(target_accent) ..
"', must be 'acute', 'tilde', 'grave', or 'none'")
end
-- Validate single syllable
local tokens = tokenize(syllable, pagename)
local syllables = syllabify(tokens)
if #syllables ~= 1 then
error("change_accent: input must be a single syllable, got " .. #syllables .. " syllables")
end
-- Remove all existing accents
local clean = remove_all_accents(syllable)
-- If target is 'none', return clean syllable
if target_accent == "none" then
return clean
end
-- Re-tokenize the clean syllable to analyze structure
local clean_tokens = tokenize(clean, pagename)
local clean_syllables = syllabify(clean_tokens)
local syl = clean_syllables[1]
-- Find vowel position and extract vowel part
local onset = ""
local vowel_part = ""
local coda = ""
local v_idx = nil
for i, tok in ipairs(syl) do
if tok.type == "V" then
v_idx = i
break
else
onset = onset .. tok.char
end
end
if not v_idx then
error("change_accent: no vowel found in syllable")
end
local v_tok = syl[v_idx]
vowel_part = ulower(v_tok.char)
-- Handle silent i
if v_tok.has_silent_i then
vowel_part = usub(vowel_part, 2)
end
-- Check if this is a mixed diphthong
local is_mixed = false
if v_idx < #syl then
local next_tok = syl[v_idx + 1]
if next_tok.type == "R" and next_tok.char ~= "j" and next_tok.char ~= "v" then
-- Mixed diphthong: vowel + liquid
vowel_part = vowel_part .. ulower(next_tok.char)
is_mixed = true
-- Collect remaining coda after the liquid
for i = v_idx + 2, #syl do
coda = coda .. syl[i].char
end
else
-- Regular syllable: collect all coda
for i = v_idx + 1, #syl do
coda = coda .. syl[i].char
end
end
end
-- Look up the accented form in ACCENT_PAIRS
if not ACCENT_PAIRS[vowel_part] then
error("change_accent: vowel/diphthong '" .. vowel_part .. "' not found in accent pairs table")
end
local accented_vowel = ACCENT_PAIRS[vowel_part][target_accent]
if not accented_vowel then
error("change_accent: accent type '" .. target_accent ..
"' is not allowed for vowel/diphthong '" .. vowel_part .. "'")
end
-- Reconstruct the syllable with new accent (in NFD format)
local result = onset .. accented_vowel .. coda
return result
end
-- ============================================================================
-- SECTION 8: Module Exports & Template Formatting (Preserved)
-- ============================================================================
local q_spec = {store = "insert-flattened", type = "qualifier"}
local a_spec = {store = "insert-flattened", type = "labels"}
local ref_spec = {store = "insert-flattened", item_dest = "refs", type = "references"}
-- Generate audio object, supporting file#caption syntax
local function generate_audio_obj(arg)
local file, caption = arg:match("^(.-)%s*#%s*(.*)$")
file = file or arg
return {file = file, caption = caption}
end
-- Parse rhyme specification with optional syllable count
local function parse_rhyme(arg, parse_err)
local function generate_obj(term)
return {rhyme = term}
end
local param_mods = {
s = {
item_dest = "num_syl",
type = "number",
sublist = true,
},
}
-- Add q/qq/a/aa/ref support if inline modifiers are present
if arg:find("<") then
param_mods.q = q_spec
param_mods.qq = q_spec
param_mods.a = a_spec
param_mods.aa = a_spec
param_mods.ref = ref_spec
end
return require(parse_util_module).parse_inline_modifiers(arg, {
param_mods = param_mods,
generate_obj = generate_obj,
parse_err = parse_err,
splitchar = ",",
})
end
-- Parse hyphenation specification (dot-separated syllables)
local function parse_hyph(arg, parse_err)
local function generate_obj(term)
local parts = rsplit(term, "%.")
return {hyph = parts, syllabification = term}
end
local param_mods = {}
-- Add q/qq/a/aa/ref support if inline modifiers are present
if arg:find("<") then
param_mods.q = q_spec
param_mods.qq = q_spec
param_mods.a = a_spec
param_mods.aa = a_spec
param_mods.ref = ref_spec
end
return require(parse_util_module).parse_inline_modifiers(arg, {
param_mods = param_mods,
generate_obj = generate_obj,
parse_err = parse_err,
splitchar = ",",
})
end
-- Parse homophone specification
local function parse_homophone(arg, parse_err)
local function generate_obj(term)
return {term = term}
end
local param_mods = {
t = {item_dest = "gloss"},
gloss = {},
pos = {},
alt = {},
lit = {},
id = {},
g = {
item_dest = "genders",
sublist = true,
},
}
-- Add q/qq/a/aa/ref support if inline modifiers are present
if arg:find("<") then
param_mods.q = q_spec
param_mods.qq = q_spec
param_mods.a = a_spec
param_mods.aa = a_spec
param_mods.ref = ref_spec
end
return require(parse_util_module).parse_inline_modifiers(arg, {
param_mods = param_mods,
generate_obj = generate_obj,
parse_err = parse_err,
splitchar = ",",
})
end
local audio_nested_mods = {
["a"] = a_spec, ["aa"] = a_spec,
["q"] = q_spec, ["qq"] = q_spec,
["text"] = {},
["IPA"] = {sublist = true},
["t"] = {item_dest = "gloss"},
["gloss"] = {},
["pos"] = {},
["lit"] = {},
["g"] = {
item_dest = "genders",
sublist = true,
},
}
local function parse_one_term(raw, parse_err)
if not raw:find("<") then
return {term = raw, audio_list = {}, rhyme_list = {}, hyph_list = {}, pagename = nil}
end
-- Extract base spelling before parse_inline_modifiers
local pagename = nil
if raw:find("<base:") then
pagename = raw:match("<base:([^>]+)>")
raw = raw:gsub("<base:[^>]+>", "")
end
local parsed = require(parse_util_module).parse_inline_modifiers(raw, {
param_mods = {
["q"] = q_spec, ["qq"] = q_spec,
["a"] = a_spec, ["aa"] = a_spec,
["ref"] = ref_spec,
["audio"] = {
store = "insert",
item_dest = "audio_list",
convert = function(arg, perr)
if arg:find("<") then
local parsed_audio = require(parse_util_module).parse_inline_modifiers(arg, {
param_mods = audio_nested_mods,
generate_obj = generate_audio_obj,
parse_err = perr,
})
parsed_audio.lang = get_lang()
local textobj = require(audio_module).construct_audio_textobj(parsed_audio)
parsed_audio.text = textobj
parsed_audio.gloss = nil
parsed_audio.pos = nil
parsed_audio.lit = nil
parsed_audio.genders = nil
return parsed_audio
end
local audio_obj = generate_audio_obj(arg)
audio_obj.lang = get_lang()
local textobj = require(audio_module).construct_audio_textobj(audio_obj)
audio_obj.text = textobj
return audio_obj
end,
},
["rhyme"] = {
store = "insert-flattened",
item_dest = "rhyme_list",
convert = parse_rhyme,
},
["hyph"] = {
store = "insert-flattened",
item_dest = "hyph_list",
convert = parse_hyph,
},
["hmp"] = {
store = "insert-flattened",
item_dest = "hmp_list",
convert = parse_homophone,
},
},
generate_obj = function(t)
return {term = t, audio_list = {}, rhyme_list = {}, hyph_list = {}, hmp_list = {}}
end,
parse_err = parse_err,
})
parsed.audio_list = parsed.audio_list or {}
parsed.rhyme_list = parsed.rhyme_list or {}
parsed.hyph_list = parsed.hyph_list or {}
parsed.hmp_list = parsed.hmp_list or {}
parsed.pagename = pagename
return parsed
end
-- Format rhyme objects with qualifiers
local function fmt_rhyme(rhyme_objs, bullet)
if not rhyme_objs or #rhyme_objs == 0 then return nil end
local rhyme_data = {}
for _, robj in ipairs(rhyme_objs) do
insert(rhyme_data, {
rhyme = robj.rhyme,
num_syl = robj.num_syl,
q = robj.q,
qq = robj.qq,
a = robj.a,
aa = robj.aa,
})
end
return bullet .. require(rhymes_module).format_rhymes({
lang = get_lang(),
rhymes = rhyme_data
})
end
-- Format hyphenation objects with qualifiers
local function fmt_hyph(hyph_objs, bullet)
if not hyph_objs or #hyph_objs == 0 then return nil end
local hyph_data = {}
for _, hobj in ipairs(hyph_objs) do
insert(hyph_data, {
hyph = hobj.hyph,
q = hobj.q,
qq = hobj.qq,
a = hobj.a,
aa = hobj.aa,
})
end
return bullet .. require(hyphenation_module).format_hyphenations({
lang = get_lang(),
hyphs = hyph_data,
caption = "Tách âm"
})
end
-- Format audio object
local function fmt_audio(audio_obj, bullet)
return bullet .. require(audio_module).format_audio(audio_obj)
end
-- Format homophone objects with qualifiers
local function fmt_hmp(hmp_objs, bullet)
if not hmp_objs or #hmp_objs == 0 then return nil end
return bullet .. require(homophones_module).format_homophones({
lang = get_lang(),
homophones = hmp_objs,
})
end
local function is_multiword_term(term)
-- split_into_segments returns a list of non-empty word strings.
return #split_into_segments(term) > 1
end
function export.show(frame)
local parargs = frame:getParent().args
local args = require(parameters_module).process(parargs, {
[1] = {default = "nãmas"},
["bullets"] = {type = "number", default = 1},
})
local input = args[1]
local nb = args.bullets
local b1 = string.rep("*", nb) .. " "
local b2 = string.rep("*", nb + 1) .. " "
local raw_terms = require(parse_util_module).split_escaping(input, ",")
local parsed_terms = {}
for i, raw in ipairs(raw_terms) do
raw = raw:match("^%s*(.-)%s*$")
local pt = parse_one_term(raw, function(msg)
error("lt-pron: " .. msg .. " (term " .. i .. ")")
end)
parsed_terms[#parsed_terms + 1] = pt
end
m_IPA = m_IPA or require("Module:IPA")
local text_parts = {}
for _, pt in ipairs(parsed_terms) do
-- Determine bullet level: same level as IPA for single pronunciation, indented for multiple
local content_bullet = (#parsed_terms == 1) and b1 or b2
-- Generate IPA
local ipa_str = to_ipa(pt.term, pt.pagename)
-- Handle rhyme: manual override, suppression, or auto-generation
local rhyme_objs = nil
local suppress_rhyme = false
if #pt.rhyme_list > 0 then
for _, robj in ipairs(pt.rhyme_list) do
if robj.rhyme == "-" then
suppress_rhyme = true
break
end
end
if not suppress_rhyme then
rhyme_objs = {}
for _, robj in ipairs(pt.rhyme_list) do
-- If num_syl not specified, try to get from auto-generated hyphenation
if not robj.num_syl then
local auto_hyph = get_hyphenation(pt.term, pt.pagename)
if auto_hyph and #auto_hyph > 0 then
-- Use syllable_count field if available (for multi-word phrases), otherwise use array length
local syl_count = auto_hyph.syllable_count or #auto_hyph
robj.num_syl = {syl_count}
end
end
insert(rhyme_objs, robj)
end
end
else
-- Auto-generate rhyme (skip if term ends with - or is a multiword term)
if not pt.term:match("%-$") and not is_multiword_term(pt.term) then
local rhyme_str = get_rhyme(ipa_str)
if rhyme_str then
local auto_hyph = get_hyphenation(pt.term, pt.pagename)
-- Use syllable_count field if available (for multi-word phrases), otherwise use array length
local num_syl = (auto_hyph and #auto_hyph > 0) and {auto_hyph.syllable_count or #auto_hyph} or nil
rhyme_objs = {{rhyme = rhyme_str, num_syl = num_syl}}
end
end
end
-- Handle hyphenation: manual override, suppression, or auto-generation
local hyph_objs = nil
local suppress_hyph = false
if #pt.hyph_list > 0 then
for _, hobj in ipairs(pt.hyph_list) do
if hobj.syllabification == "-" then
suppress_hyph = true
break
end
end
if not suppress_hyph then
hyph_objs = pt.hyph_list
end
else
-- Auto-generate hyphenation
local auto_hyph = get_hyphenation(pt.term, pt.pagename)
if auto_hyph and #auto_hyph > 0 then
hyph_objs = {{hyph = auto_hyph, syllabification = concat(auto_hyph, ".")}}
end
end
-- Format IPA with qualifiers and references
local ipa_item = {pron = "[" .. ipa_str .. "]"}
if pt.q then ipa_item.q = pt.q end
if pt.qq then ipa_item.qq = pt.qq end
if pt.a then ipa_item.a = pt.a end
if pt.aa then ipa_item.aa = pt.aa end
if pt.refs then ipa_item.refs = pt.refs end
text_parts[#text_parts + 1] = b1 .. m_IPA.format_IPA_full({
lang = get_lang(),
items = {ipa_item}
})
-- Audio
for _, aud in ipairs(pt.audio_list or {}) do
text_parts[#text_parts + 1] = fmt_audio(aud, content_bullet)
end
-- Rhyme
if rhyme_objs then
local r = fmt_rhyme(rhyme_objs, content_bullet)
if r then text_parts[#text_parts + 1] = r end
end
-- Hyphenation
if hyph_objs then
local h = fmt_hyph(hyph_objs, content_bullet)
if h then text_parts[#text_parts + 1] = h end
end
-- Homophones
if pt.hmp_list and #pt.hmp_list > 0 then
local hmp = fmt_hmp(pt.hmp_list, content_bullet)
if hmp then text_parts[#text_parts + 1] = hmp end
end
end
return concat(text_parts, "\n")
end
export.toIPA = to_ipa
export.hyphenate = get_hyphenation
export.rhyme = get_rhyme
return export
jo4alafn4u8vsg6y3f00seaz5dsovup
いち
0
398587
2362871
2355919
2026-05-31T04:28:13Z
WhoAlone
40420
2362871
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|一|壱|市|位置|逸}}
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|池}} Cái [[ao]].
=={{langname|yoi}}==
==={{ĐM|noun}}===
{{yoi-head|noun}}
# {{yoi-def|石}} [[hòn đá]].
g0nrdm78fxyuccyaoi917upnpf4vcn4
Thể loại:Mục từ có bản dịch tiếng Erzya
14
400055
2362666
2026-05-30T12:27:57Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362666
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Bảo trì mục từ tiếng Erzya
14
400056
2362667
2026-05-30T12:28:21Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362667
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Mục từ có bản dịch tiếng Chuvash
14
400057
2362669
2026-05-30T12:44:16Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362669
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Mục từ có bản dịch tiếng Tân Aram Assyria
14
400058
2362670
2026-05-30T12:46:20Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362670
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Mục từ có bản dịch tiếng Buryat
14
400059
2362671
2026-05-30T12:48:01Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362671
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Danh từ có loại từ cuộc tiếng Việt
14
400060
2362672
2026-05-30T12:50:34Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362672
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
tehlikeli
0
400061
2362678
2026-05-30T13:56:28Z
Kelly zhrm
58416
Trang mới: “=={{langname|tr}}== ==={{ĐM|etym}}=== {{suffix|tr|tehlike|li}} ==={{ĐM|pron}}=== * {{IPA4|tr|[tehliceli]}} * {{audio|tr|LL-Q256 (tur)-ToprakM-tehlikeli.wav}} * {{hyphenation|tr|teh|li|ke|li}} ==={{ĐM|adj}}=== {{tr-adj}} # [[nguy hiểm|Nguy hiểm]]. ===={{ĐM|ant}}==== * {{l|tr|tehlikesiz}}”
2362678
wikitext
text/x-wiki
=={{langname|tr}}==
==={{ĐM|etym}}===
{{suffix|tr|tehlike|li}}
==={{ĐM|pron}}===
* {{IPA4|tr|[tehliceli]}}
* {{audio|tr|LL-Q256 (tur)-ToprakM-tehlikeli.wav}}
* {{hyphenation|tr|teh|li|ke|li}}
==={{ĐM|adj}}===
{{tr-adj}}
# [[nguy hiểm|Nguy hiểm]].
===={{ĐM|ant}}====
* {{l|tr|tehlikesiz}}
fn85p9xe727s4kcqc5l1m557uh28hrb
sriuba
0
400062
2362682
2026-05-30T14:05:11Z
Hiyuune
50834
/* */ + lt
2362682
wikitext
text/x-wiki
{{also|sriubą}}
=={{langname|lt}}==
{{wp|lt:}}
==={{section|etymology}}===
Dẫn xuất từ {{mention|lt|srė̃bti}}, từ {{der|lt|ine-pro|*srebʰ-}}.<ref>{{R:lt:Smoczynski|page=594|entry=srė̃bti}}</ref>
==={{section|pron}}===
* (sriu'''bà''') {{IPA4|lt|/sʲrʲʊˈbɐ/}}
* ('''sriù'''ba) {{IPA4|lt|/ˈsʲrʲʊbɐ/}}
==={{section|n}}===
{{lt-noun|head=sriubà|f|sriùbos|4}}
# [[súp|Súp]].<ref>{{R:lt:Martsinkyavitshute2012}}</ref>
===={{section|decl}}====
{{lt-noun-f-a-4|sriub|sriùb}}
===={{section|hypo}}====
* {{l|lt|šaltibarščiai}}
===={{section|see}}====
* {{l|lt|buljonas}}, {{l|lt|nuoviras}}, {{l|lt|sultinys}}
==={{section|ref}}===
<references />
{{C|lt|Ăn uống|Súp}}
qhr5699nxeus67lzkhtjatqlm2fotg2
2362683
2362682
2026-05-30T14:05:42Z
Hiyuune
50834
/* Tiếng Litva */
2362683
wikitext
text/x-wiki
{{also|sriubą}}
=={{langname|lt}}==
{{wp|lt:}}
==={{section|etymology}}===
Dẫn xuất từ {{mention|lt|srė̃bti}}, từ {{der|lt|ine-pro|*srebʰ-}}.<ref>{{R:lt:Smoczynski|page=594|entry=srė̃bti}}</ref>
==={{section|pron}}===
* (sriu'''bà''') {{IPA4|lt|/sʲrʲʊˈbɐ/}}
* ('''sriù'''ba) {{IPA4|lt|/ˈsʲrʲʊbɐ/}}
==={{section|n}}===
{{lt-noun|head=sriubà|f|sriùbos|4}}
# [[xúp|Xúp]].<ref>{{R:lt:Martsinkyavitshute2012}}</ref>
===={{section|decl}}====
{{lt-noun-f-a-4|sriub|sriùb}}
===={{section|hypo}}====
* {{l|lt|šaltibarščiai}}
===={{section|see}}====
* {{l|lt|buljonas}}, {{l|lt|nuoviras}}, {{l|lt|sultinys}}
==={{section|ref}}===
<references />
{{C|lt|Ăn uống|Xúp}}
ouy8u4qb882kx5zx7c3gdhhyr51wvrv
kodusõda
0
400063
2362687
2026-05-30T14:14:59Z
Hiyuune
50834
+ et
2362687
wikitext
text/x-wiki
=={{langname|et}}==
{{wp|et:}}
==={{section|etym}}===
Từ {{affix|et|kodu|sõdas}}.
==={{section|pron}}===
* {{et-IPA/old|kodu|sõda}}
{{rfap|et}}
==={{section|n}}===
{{et-noun|kodusõja|kodusõda}}
# [[nội chiến|Nội chiến]].
#:{{ux|et|Myanmari '''kodusõda'''.|Nội chiến Myanmar.}}
#:{{ux|et|Sierra Leone '''kodusõda'''.|Nội chiến Sierra Leone.}}
===={{section|decl}}====
{{et-decl-sõda|kodusõ|d|j|a}}
==={{section|further}}===
* {{R:EKSS}}
* {{R:et:EÕS}}
* {{R:Sõnaveeb}}
{{C|et|Chiến tranh}}
56nuu0raq5v1hva45rae5knq8rd0gdq
kemoterapia
0
400064
2362688
2026-05-30T14:17:03Z
Kelly zhrm
58416
Trang mới: “{{also|kemoterápia}} =={{langname|fi}}== ==={{ĐM|etym}}=== {{internationalism|fi}} (xem {{cog|en|chemotherapy}}). ==={{ĐM|pron}}=== {{fi-p}} ==={{ĐM|n}}=== {{fi-noun}} # [[hóa trị|Hóa trị]]. ===={{ĐM|decl}}==== {{fi-decl-kulkija|kemoterapi|a}} ===={{ĐM|drv}}==== {{col|fi|title=từ ghép |kemoterapia-aine }} ==={{ĐM|further}}=== * {{R:fi:KTSK|accessdate=2023-07-02}}”
2362688
wikitext
text/x-wiki
{{also|kemoterápia}}
=={{langname|fi}}==
==={{ĐM|etym}}===
{{internationalism|fi}} (xem {{cog|en|chemotherapy}}).
==={{ĐM|pron}}===
{{fi-p}}
==={{ĐM|n}}===
{{fi-noun}}
# [[hóa trị|Hóa trị]].
===={{ĐM|decl}}====
{{fi-decl-kulkija|kemoterapi|a}}
===={{ĐM|drv}}====
{{col|fi|title=từ ghép
|kemoterapia-aine
}}
==={{ĐM|further}}===
* {{R:fi:KTSK|accessdate=2023-07-02}}
t9hn1ysupaggqy4t92q68dodrhp0hzy
čeburekas
0
400065
2362694
2026-05-30T14:39:36Z
Hiyuune
50834
/* */ + lt
2362694
wikitext
text/x-wiki
=={{langname|lt}}==
{{wp|lt:}}
==={{section|etym}}===
Từ {{der|lt|crh|çiberek}}, có thể thông qua {{bor|lt|ru|чебуре́к}}. So sánh với {{cog|uk|чебуре́к}}.
==={{section|pron}}===
{{lt-pr|čeburèkas}}
==={{section|n}}===
{{lt-noun|m|čeburekai|2|head=čeburèkas}}
# [[chebureki]].
===={{section|decl}}====
{{lt-noun-m-as-2|čeburek|čeburèk}}
==={{section|ref}}===
* {{R:lt:DŽ}}
{{C|lt|Ăn uống}}
0w17cpdmm3f6bhe2vxia388szn2iada
Thể loại:Bản mẫu đề mục ngôn ngữ
14
400066
2362699
2026-05-30T15:17:43Z
Kateru Zakuro
34522
Trang mới: “[[Thể loại:Bản mẫu đề mục]]”
2362699
wikitext
text/x-wiki
[[Thể loại:Bản mẫu đề mục]]
h3ly9dp7taik2k0z2lt6f9t41t2r128
ensinistrar
0
400067
2362715
2026-05-30T17:02:24Z
Hiyuune
50834
/* */ + ca
2362715
wikitext
text/x-wiki
=={{langname|ca}}==
==={{section|etym}}===
Từ {{affix|ca|en-|sinistre|-ar}}.
==={{section|pron}}===
* {{audio|ca|LL-Q7026 (cat)-Marvives-ensinistrar.wav|a=Barcelona}}
==={{section|v}}===
{{ca-verb}}{{tlb|ca|transitive}}
# [[dạy|Dạy]], [[huấn luyện]], [[đào tạo]].
#: {{syn|ca|ensenyar|instruir}}
===={{section|forms}}====
{{ca-conj}}
===={{section|drv}}====
{{col|ca|ensinistrador|ensinistrament}}
==={{section|further}}===
* {{R:ca:GDLC}}
tlcwy0mdu6tgc0jgewlhgq7kjflgybq
ensinistro
0
400068
2362716
2026-05-30T17:08:50Z
Hiyuune
50834
+ ca
2362716
wikitext
text/x-wiki
=={{langname|ca}}==
==={{section|verb}}===
{{head|ca|Biến thể hình thái động từ}}
# {{ca-verb form of|ensinistrar}}
pdusc288vkd53w4fneyefwqzg2whorh
lá cờ đầu
0
400069
2362720
2026-05-30T23:04:51Z
TheHighFighter2
42988
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|n}}=== {{vi-noun}} # Người hay đơn vị [[tiên tiến]] có tác dụng [[nêu gương]], [[dẫn đầu]] [[phong trào]]. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362720
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|n}}===
{{vi-noun}}
# Người hay đơn vị [[tiên tiến]] có tác dụng [[nêu gương]], [[dẫn đầu]] [[phong trào]].
==={{ĐM|ref}}===
* {{R:Tratu}}
oq54a4qipl5567r8jzs4ae1mtwr3pzi
2362721
2362720
2026-05-30T23:12:41Z
TheHighFighter2
42988
/* Danh từ */
2362721
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|n}}===
{{vi-noun}}
# Người hay đơn vị [[tiên tiến]] có tác dụng [[nêu gương]], [[dẫn đầu]] [[phong trào]].
===={{ĐM|trans}}====
{{trans-top|Người hay đơn vị tiên tiến có tác dụng nêu gương, dẫn đầu phong trào}}
* {{langname|sed}}: {{t|sed|khu djâ troăng a hdrối}}
{{trans-bottom}}
==={{ĐM|ref}}===
* {{R:Tratu}}
3t69h0zcf0dfbhbkuv2entsthaxx3gc
Thể loại:Mục từ có bản dịch tiếng Tupi cổ
14
400070
2362722
2026-05-31T00:01:28Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362722
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Bảo trì mục từ tiếng Tupi cổ
14
400071
2362723
2026-05-31T00:02:09Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362723
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Mục từ có bản dịch tiếng Newa
14
400072
2362724
2026-05-31T00:04:26Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362724
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Bảo trì mục từ tiếng Newa
14
400073
2362725
2026-05-31T00:04:46Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362725
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Mục từ có bản dịch tiếng Ossetia
14
400074
2362727
2026-05-31T00:10:06Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362727
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Bảo trì mục từ tiếng Ossetia
14
400075
2362728
2026-05-31T00:10:30Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362728
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
cavalierkingcharlesinspanielit
0
400076
2362729
2026-05-31T01:20:20Z
Hiyuune
50834
+ fi
2362729
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||nom//acc|p}}
qtdgwfbwb32v4jy9mznexybembn7xbz
cavalierkingcharlesinspanielin
0
400077
2362730
2026-05-31T01:20:57Z
Hiyuune
50834
+ fi
2362730
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||gen|s}}
m6h3wz7ib7vzbpzj4yvtntr9g68jdu5
cavalierkingcharlesinspanielien
0
400078
2362731
2026-05-31T01:22:58Z
Hiyuune
50834
+ fi
2362731
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||gen|p}}
ln5ap7rt1evdk1a9lf8gi0rw5hwd3ln
cavalierkingcharlesinspanieleitten
0
400079
2362732
2026-05-31T01:26:02Z
Hiyuune
50834
+ fi
2362732
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||gen|p}}
ln5ap7rt1evdk1a9lf8gi0rw5hwd3ln
cavalierkingcharlesinspanielia
0
400080
2362733
2026-05-31T01:26:45Z
Hiyuune
50834
+ fi
2362733
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||par|s}}
ey1v83rjyd0yhdzsyvbhj30ppf0nis1
cavalierkingcharlesinspanieleita
0
400081
2362734
2026-05-31T01:27:34Z
Hiyuune
50834
+ fi
2362734
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||par|p}}
alt8436wbli195croo1u5kggi8j3tja
cavalierkingcharlesinspanieleja
0
400082
2362735
2026-05-31T01:28:36Z
Hiyuune
50834
+ fi
2362735
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|noun}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||par|p}}
s19n5gmy0i87sf9o82zd1ps5iua1w9j
cavalierkingcharlesinspanielissa
0
400083
2362736
2026-05-31T01:29:10Z
Hiyuune
50834
+ fi
2362736
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{inflection of|fi|cavalierkingcharlesinspanieli||ine|s}}
585ccqiajjbtaqx0xe3ju6h4y267i8m
banaaneita
0
400084
2362737
2026-05-31T01:30:36Z
Hiyuune
50834
+ fi
2362737
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|banaani||ptv|p}}
h043j5e9mqqq6l4rbrppfhmnnikdd0e
banaaneja
0
400085
2362738
2026-05-31T01:31:38Z
Hiyuune
50834
+ fi
2362738
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|banaani||ptv|p}}
h043j5e9mqqq6l4rbrppfhmnnikdd0e
banaaneissa
0
400086
2362739
2026-05-31T01:32:37Z
Hiyuune
50834
+ fi
2362739
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|banaani||ine|p}}
ekwnjndckpwmptkfvrhwya2kr307ne0
banaanista
0
400087
2362740
2026-05-31T01:33:12Z
Hiyuune
50834
+ fi
2362740
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|banaani||ela|s}}
fn1te28kn011e6hxbrj9v758qmcta0y
banaaniin
0
400088
2362741
2026-05-31T01:33:50Z
Hiyuune
50834
+ fi
2362741
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|banaani||ill|s}}
paw8mca9idg6mw3v1xmk2qkxz1bms3r
banaanilla
0
400089
2362742
2026-05-31T01:34:27Z
Hiyuune
50834
+ fi
2362742
wikitext
text/x-wiki
=={{langname|fi}}==
==={{section|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|banaani||ade|s}}
dfqzouk31jca9nnmzxb3zmnd8f1n4k7
banaanilta
0
400090
2362743
2026-05-31T01:34:59Z
Hiyuune
50834
+ fi
2362743
wikitext
text/x-wiki
=={{langname|fi}}==
==={{ĐM|n}}===
{{head|fi|Biến thể hình thái danh từ}}
# {{infl of|fi|banaani||abl|s}}
du6rpv0iun91yetjygyeg011fipwc1k
quǎnkē
0
400091
2362744
2026-05-31T01:35:43Z
WhoAlone
40420
Trang mới: “=={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|犬科}}”
2362744
wikitext
text/x-wiki
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{cmn-pinyin of|犬科}}
snw7lgkmv1yzeqv2h8rg44xwfookidn
seguro jakkaru
0
400092
2362745
2026-05-31T01:37:24Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|せぐろジャッカル}} # {{ja-romanization of|セグロジャッカル}}”
2362745
wikitext
text/x-wiki
=={{langname|ja}}==
==={{ĐM|rom}}===
{{ja-romaji}}
# {{ja-romanization of|せぐろジャッカル}}
# {{ja-romanization of|セグロジャッカル}}
7w97muuanx4rwwimk2bpqgjourhdikk
コヨーテ
0
400093
2362746
2026-05-31T01:39:11Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{wp|ja:}} ==={{ĐM|etym}}=== Mượn từ {{bor|ja|es|coyote}}, từ {{der|ja|nah|coyotl}}. ==={{ĐM|pron}}=== {{ja-pron|acc=2|acc_ref=DJR}} ==={{ĐM|noun}}=== {{ja-noun}} # {{w|Sói đồng cỏ}}. ==={{ĐM|see also}}=== {{list:canids/ja}} ==={{ĐM|ref}}=== <references/>”
2362746
wikitext
text/x-wiki
=={{langname|ja}}==
{{wp|ja:}}
==={{ĐM|etym}}===
Mượn từ {{bor|ja|es|coyote}}, từ {{der|ja|nah|coyotl}}.
==={{ĐM|pron}}===
{{ja-pron|acc=2|acc_ref=DJR}}
==={{ĐM|noun}}===
{{ja-noun}}
# {{w|Sói đồng cỏ}}.
==={{ĐM|see also}}===
{{list:canids/ja}}
==={{ĐM|ref}}===
<references/>
ed52xadnkaxe151hw39kxlz0haw36v2
koyōte
0
400094
2362747
2026-05-31T01:39:35Z
WhoAlone
40420
Trang mới: “{{also|koyote}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|コヨーテ}}”
2362747
wikitext
text/x-wiki
{{also|koyote}}
=={{langname|ja}}==
==={{ĐM|rom}}===
{{ja-romaji}}
# {{ja-romanization of|コヨーテ}}
rpl0kyfxbun481e0q39dsptehl097ao
bananowy
0
400095
2362748
2026-05-31T01:44:41Z
Hiyuune
50834
+ pl
2362748
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|etym}}===
{{etymon|pl|:af|banan|-owy|text=+|tree=1}}
==={{section|pron}}===
{{pl-pr|a=Pl-bananowy.ogg}}
==={{section|adj}}===
{{pl-adj|-|adv=-}}
# {{lb|pl|relational}} [[cây|Cây]] [[chuối]].
# {{lb|pl|relational}} [[trái|Trái]] [[chuối]].
# [[màu|Màu]] [[chuối]].
===={{section|decl}}====
{{pl-adecl}}
===={{section|drv}}====
{{col|pl|title=danh từ|republika bananowa}}
===={{section|rel}}====
{{col|pl|title=tính từ|bananowaty}}
{{col|pl|title=danh từ|banan|bananojad|bananówa|bananowate|bananowiec|bananówka|bananownia}}
==={{section|further}}===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
{{C|pl|Màu vàng}}
qppnv8v6vksgwhhylwtr981tcioibab
狐狸
0
400096
2362749
2026-05-31T01:45:38Z
WhoAlone
40420
Trang mới: “{{also|狐貍}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|hồ ly}} =={{langname|ja}}== {{ja-kanjitab|こ|り|yomi=o}} ==={{ĐM|etym}}=== Từ {{der|ja|ltc|-}} {{ltc-l|狐狸}}. ==={{ĐM|pron}}=== {{ja-pron|こり|acc=1|acc_ref=DJR}} ==={{ĐM|noun}}=== {{ja-noun|こり}} # Con [[cáo]] và {{w|lửng chó Nhật Bản}}. # {{lb|ja|figurative}} Người [[ranh mãnh]]; kẻ [[bội bạc]]. ===={{ĐM|derived}}====…”
2362749
wikitext
text/x-wiki
{{also|狐貍}}
=={{langname|vi}}==
{{vi-hantutab}}
==={{ĐM|noun}}===
{{vi-noun|sc=Hani}}
# {{vi-Han form of|hồ ly}}
=={{langname|ja}}==
{{ja-kanjitab|こ|り|yomi=o}}
==={{ĐM|etym}}===
Từ {{der|ja|ltc|-}} {{ltc-l|狐狸}}.
==={{ĐM|pron}}===
{{ja-pron|こり|acc=1|acc_ref=DJR}}
==={{ĐM|noun}}===
{{ja-noun|こり}}
# Con [[cáo]] và {{w|lửng chó Nhật Bản}}.
# {{lb|ja|figurative}} Người [[ranh mãnh]]; kẻ [[bội bạc]].
===={{ĐM|derived}}====
* {{ja-r|豺狼路に当たれり,安んぞ狐狸を問わん|さいろう みち に あたれり,いずくんぞ こり を とわん}}
==={{ĐM|ref}}===
<references/>
:* {{R:Kanjipedia Kotoba|0002052600|<sup>▲</sup>狐<sup>▲</sup>狸}}
{{C|ja|Họ Chó|Mọi người}}
=={{langname|ko}}==
{{ko-hanjatab}}
==={{ĐM|noun}}===
{{ko-noun|hangeul=호리}}
# {{hanja form of|호리|[[cáo]] và [[mèo hoang]]}}
=={{langname|zh}}==
{{zh-forms|t2=狐貍}}
{{wp|yue:,hak:fù-lì,cdo:hù-lì,nan:hô͘-lî,wuu:}}
==={{ĐM|pron}}===
{{zh-pron
|m=húli,húlí,1nb=dạng tiêu chuẩn ở Đại lục và Đài Loan,2nb=tiêu chuẩn ở Đài Loan
|m-s=fu2 ni3
|m-x=húli
|m-nj=húli
|c=wu4 lei4-2,wu4 lei4
|c_note=wu4 lei4 - literary
|c-dg=fu4 ngai4
|c-t=vu3 lei4*,vu3 lei4
|g=fu4 li
|h=pfs=fù-lì;hrs=h:fu li;gd=fu2 li2
|j=hu1 li1
|mb=ǔ-lǐ
|md=hù-lì
|mn=hô͘-lî
|mn-t=hou5 lai5/hu5 li5
|mn-t_note=hou5 lai5 - ngôn ngữ nói; hu5 li5 - ngôn ngữ viết
|px=pt,xy:hou2 li2
|sp=hu4 li4
|w=sh:6wu li2;sj:2vu li2;cm,hz,sx:2wu li2;sz:6ghou2 li2;nb:6wu2 li2
|x=fu2 li3
|x-h=fu2 li3
|mc=y
|oc=y;2,1
|cat=n
}}
==={{ĐM|noun}}===
[[File:Vulpes_corsac.jpg|thumb|狐狸]]
{{head|zh|Danh từ}}
# Con [[cáo]]. {{zh-mw|m,c,mn:隻}}
# {{lb|zh|figurative}} Người [[ranh mãnh]]; kẻ [[bội bạc]]. {{zh-mw|m:個|c,mn:隻}}
===={{ĐM|syn}}====
{{zh-dial}}
===={{ĐM|drv}}====
{{col3|zh|狐狸精|狐狸尾巴|狐狸座|簡落狐狸|狐狸狗|野狐狸|露出了狐狸尾巴|老狐狸|九尾狐狸|虎狼當路,不治狐狸|狐狸指|狐狸花貓|狐狸毋知尾下臭|狐狸莫笑貓|狐狸莫笑貓,共樣尾翹翹|狐狸毋好笑貓|狐狸莫話貓,話吔貓來牙牙叫}}
===={{ĐM|desc}}====
{{CJKV||こり|k=狐貍|호리|hồ li}}
{{C|zh|Họ Chó|Mọi người}}
it94q5ju1sw0944xexq2y7wc175qkzj
2362760
2362749
2026-05-31T01:52:56Z
WhoAlone
40420
2362760
wikitext
text/x-wiki
{{also|狐貍}}
=={{langname|vi}}==
{{vi-hantutab}}
==={{ĐM|noun}}===
{{vi-noun|sc=Hani}}
# {{vi-Han form of|hồ ly}}
=={{langname|ja}}==
{{ja-kanjitab|こ|り|yomi=o}}
==={{ĐM|etym}}===
Từ {{der|ja|ltc|-}} {{ltc-l|狐狸}}.
==={{ĐM|pron}}===
{{ja-pron|こり|acc=1|acc_ref=DJR}}
==={{ĐM|noun}}===
{{ja-noun|こり}}
# Con [[cáo]] và {{w|lửng chó Nhật Bản}}.
# {{lb|ja|figurative}} Người [[ranh mãnh]]; kẻ [[bội bạc]].
===={{ĐM|derived}}====
* {{ja-r|豺狼路に当たれり,安んぞ狐狸を問わん|さいろう みち に あたれり,いずくんぞ こり を とわん}}
==={{ĐM|ref}}===
<references/>
:* {{R:Kanjipedia Kotoba|0002052600|<sup>▲</sup>狐<sup>▲</sup>狸}}
{{C|ja|Họ Chó|Mọi người}}
=={{langname|ko}}==
{{ko-hanjatab}}
==={{ĐM|noun}}===
{{ko-noun|hangeul=호리}}
# {{hanja form of|호리|[[cáo]] và [[mèo hoang]]}}
=={{langname|zh}}==
{{zh-forms|t2=狐貍}}
{{wp|yue:,hak:fù-lì,cdo:hù-lì,nan:hô͘-lî,wuu:}}
==={{ĐM|pron}}===
{{zh-pron
|m=húli,húlí,1nb=dạng tiêu chuẩn ở Đại lục và Đài Loan,2nb=tiêu chuẩn ở Đài Loan
|m-s=fu2 ni3
|m-x=húli
|m-nj=húli
|c=wu4 lei4-2,wu4 lei4
|c_note=wu4 lei4 - literary
|c-dg=fu4 ngai4
|c-t=vu3 lei4*,vu3 lei4
|g=fu4 li
|h=pfs=fù-lì;hrs=h:fu li;gd=fu2 li2
|j=hu1 li1
|mb=ǔ-lǐ
|md=hù-lì
|mn=hô͘-lî
|mn-t=hou5 lai5/hu5 li5
|mn-t_note=hou5 lai5 - ngôn ngữ nói; hu5 li5 - ngôn ngữ viết
|px=pt,xy:hou2 li2
|sp=hu4 li4
|w=sh:6wu li2;sj:2vu li2;cm,hz,sx:2wu li2;sz:6ghou2 li2;nb:6wu2 li2
|x=fu2 li3
|x-h=fu2 li3
|mc=y
|oc=y;2,1
|cat=n
}}
==={{ĐM|noun}}===
[[File:Vulpes_corsac.jpg|thumb|狐狸]]
{{head|zh|Danh từ}}
# Con [[cáo]]. {{zh-mw|m,c,mn:隻}}
# {{lb|zh|figurative}} Người [[ranh mãnh]]; kẻ [[bội bạc]]. {{zh-mw|m:個|c,mn:隻}}
===={{ĐM|syn}}====
{{zh-dial}}
===={{ĐM|drv}}====
{{col3|zh|狐狸精|狐狸尾巴|狐狸座|簡落狐狸|狐狸狗|野狐狸|露出了狐狸尾巴|老狐狸|九尾狐狸|虎狼當路,不治狐狸|狐狸指|狐狸花貓|狐狸毋知尾下臭|狐狸莫笑貓|狐狸莫笑貓,共樣尾翹翹|狐狸毋好笑貓|狐狸莫話貓,話吔貓來牙牙叫}}
===={{ĐM|desc}}====
{{CJKV||こり|k=狐貍|호리|hồ ly}}
{{C|zh|Họ Chó|Mọi người}}
3ikpcxnqpn08vbdyxhd13hsvafpyg57
bananowa
0
400097
2362750
2026-05-31T01:45:55Z
Hiyuune
50834
+ pl
2362750
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||nom|ở|f|s}}
79i7g23g03xmzm17yhad30x3f8cz0jp
bananowe
0
400098
2362751
2026-05-31T01:47:12Z
Hiyuune
50834
+ pl
2362751
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||nom//acc|ở|n|s|;|nom//acc|ở|nv|p}}
gee004aq16v75nvbt7519aayv04nyzq
bananowego
0
400099
2362752
2026-05-31T01:48:23Z
Hiyuune
50834
+ pl
2362752
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||gen|ở|m//n|s|;|acc|ở|m|an|s}}
5nlnhiu4qmfbejq3jpjim3wegq6le25
호리
0
400100
2362753
2026-05-31T01:49:03Z
WhoAlone
40420
Trang mới: “=={{langname|ko}}== {{wp|ko:}} ==={{ĐM|pron}}=== {{ko-IPA}} ==={{ĐM|etym}} 1=== {{ko-etym-native}} ===={{ĐM|noun}}==== {{ko-noun}} # [[cày]] do một [[con vật]] kéo thay vì hai con vật kéo ghép đôi. ====={{ĐM|antonym}}===== * {{ko-l|겨리|[[cày]] do hai con vật kéo}} ====={{ĐM|related}}===== * {{ko-l|홀|[[đơn lẻ]]}} ====={{ĐM|see also}}===== * {{ko-l|쟁기|cái [[cày]]}} ==={{ĐM|etym}} 2=== Từ {{ko-l|호로|葫蘆}}. ===={{ĐM|nou…”
2362753
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{ĐM|pron}}===
{{ko-IPA}}
==={{ĐM|etym}} 1===
{{ko-etym-native}}
===={{ĐM|noun}}====
{{ko-noun}}
# [[cày]] do một [[con vật]] kéo thay vì hai con vật kéo ghép đôi.
====={{ĐM|antonym}}=====
* {{ko-l|겨리|[[cày]] do hai con vật kéo}}
====={{ĐM|related}}=====
* {{ko-l|홀|[[đơn lẻ]]}}
====={{ĐM|see also}}=====
* {{ko-l|쟁기|cái [[cày]]}}
==={{ĐM|etym}} 2===
Từ {{ko-l|호로|葫蘆}}.
===={{ĐM|noun}}====
{{ko-noun}}
# Quả [[bầu]], [[hồ lô]].
====={{ĐM|drv}}=====
* {{ko-l|호리병|호리甁|quả [[bầu]]}}
====={{ĐM|see also}}=====
* {{ko-l|박|[[gourd]]}}
==={{ĐM|etym}} 3===
{{ko-etym-sino|狐貍}}
===={{ĐM|noun}}====
{{ko-noun|hanja=狐貍}}
# [[cáo]] và [[mèo hoang]].
26lpseu1poqity2fdiu0cve85m1venb
bananowej
0
400101
2362754
2026-05-31T01:49:04Z
Hiyuune
50834
+ pl
2362754
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||gen//dat//loc|ở|f|s}}
9jkr0be8ezbq7g8fkpbuo2fl8c8c2zm
こり
0
400102
2362755
2026-05-31T01:49:57Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{ĐM|etym}} 1=== {{ja-see|行李|狐狸}} ==={{ĐM|etym}} 2=== {{ja-verb form}} # {{ja-verb form of|こる|godan|い}}”
2362755
wikitext
text/x-wiki
=={{langname|ja}}==
==={{ĐM|etym}} 1===
{{ja-see|行李|狐狸}}
==={{ĐM|etym}} 2===
{{ja-verb form}}
# {{ja-verb form of|こる|godan|い}}
9xbw2hbusobzw9qfykkix3pyc2fnyyr
húli
0
400103
2362756
2026-05-31T01:51:42Z
WhoAlone
40420
Trang mới: “{{also|hùlì|hùlǐ}} =={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|狐狸}}”
2362756
wikitext
text/x-wiki
{{also|hùlì|hùlǐ}}
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{cmn-pinyin of|狐狸}}
tmdbmbpju21xzu9vfyl9bbiqwwqdowf
bananowemu
0
400104
2362757
2026-05-31T01:51:54Z
Hiyuune
50834
+ pl
2362757
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||dat|ở|m//n|s}}
8bgl972ti935to3lpysn889umf46u0m
húlí
0
400105
2362758
2026-05-31T01:51:55Z
WhoAlone
40420
Trang mới: “=={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|狐狸}}”
2362758
wikitext
text/x-wiki
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{cmn-pinyin of|狐狸}}
jdx4l33vhrjhziqa8uj4x10skd4sgre
bananowym
0
400106
2362759
2026-05-31T01:52:45Z
Hiyuune
50834
+ pl
2362759
wikitext
text/x-wiki
=={{langname|pl}}==
==={{ĐM|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||dat|p|;|ins//loc|ở|m//n|s}}
r0i9g3vkuybvcm62o5t6rb9ez6bkz36
bananową
0
400107
2362762
2026-05-31T01:53:24Z
Hiyuune
50834
+ pl
2362762
wikitext
text/x-wiki
=={{langname|pl}}==
==={{ĐM|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||acc//ins|ở|f|s}}
1pp34eg30smxmeu1vxiv893c61da63p
狐貍
0
400108
2362763
2026-05-31T01:53:39Z
WhoAlone
40420
Trang mới: “{{also|狐狸}} =={{langname|zh}}== {{zh-see|狐狸}} =={{langname|ko}}== {{ko-hanjatab}} ==={{ĐM|noun}}=== {{ko-noun|hangeul=호리}} # {{hanja form of|호리|[[cáo]] và [[mèo hoang]]}}”
2362763
wikitext
text/x-wiki
{{also|狐狸}}
=={{langname|zh}}==
{{zh-see|狐狸}}
=={{langname|ko}}==
{{ko-hanjatab}}
==={{ĐM|noun}}===
{{ko-noun|hangeul=호리}}
# {{hanja form of|호리|[[cáo]] và [[mèo hoang]]}}
dlcljch80wlup05ewcj89x9f7xeyxnh
2362771
2362763
2026-05-31T01:59:37Z
Hiyuune
50834
tiếng Triều Tiên nên xếp đầu
2362771
wikitext
text/x-wiki
{{also|狐狸}}
=={{langname|ko}}==
{{ko-hanjatab}}
==={{ĐM|noun}}===
{{ko-noun|hangeul=호리}}
# {{hanja form of|호리|[[cáo]] và [[mèo hoang]]}}
=={{langname|zh}}==
{{zh-see|狐狸}}
ihqfuadovkd0snytibx2fm8cz80rifa
Thể loại:Mục từ tiếng Hán trung cổ
14
400109
2362764
2026-05-31T01:54:03Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362764
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
2362767
2362764
2026-05-31T01:54:55Z
WhoAlone
40420
2362767
wikitext
text/x-wiki
{{auto cat}}
[[Thể loại:Mục từ tiếng Trung Quốc]]
9n3tflwkvs9coyumd6iveaysnutfisu
Thể loại:Mục từ tiếng Hán thượng cổ
14
400110
2362765
2026-05-31T01:54:08Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362765
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
2362768
2362765
2026-05-31T01:55:06Z
WhoAlone
40420
2362768
wikitext
text/x-wiki
{{auto cat}}
[[Thể loại:Mục từ tiếng Trung Quốc]]
9n3tflwkvs9coyumd6iveaysnutfisu
bananowi
0
400111
2362766
2026-05-31T01:54:32Z
Hiyuune
50834
+ pl
2362766
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|adj}}===
{{head|pl|Biến thể hình thái tính từ}}
# {{infl of|pl|bananowy||nom|ở|m|p|với|pr}}
6l5jacxcotd2rmpzzgr9dmg6anobddn
Thể loại:Tiếng Hán thượng cổ
14
400112
2362769
2026-05-31T01:55:28Z
WhoAlone
40420
Trang mới: “{{auto cat|Trung Quốc|extinct=1}}”
2362769
wikitext
text/x-wiki
{{auto cat|Trung Quốc|extinct=1}}
fuo5dw30njhhjq9q9tiahkzdjimpzir
hô͘-lî
0
400113
2362773
2026-05-31T02:00:23Z
Hiyuune
50834
Trang mới: “=={{langname|nan-hbl}}== {{zh-see|狐狸|poj}}”
2362773
wikitext
text/x-wiki
=={{langname|nan-hbl}}==
{{zh-see|狐狸|poj}}
3vwc4lppbqcvt5ecqag0jc2g29pupn3
Old Japanese
0
400114
2362775
2026-05-31T02:02:33Z
Hiyuune
50834
+ en
2362775
wikitext
text/x-wiki
=={{langname|en}}==
{{wp|en:}}
==={{section|pr-noun}}===
{{en-proper noun|head=[[old|Old]] [[Japanese]]}}
# [[tiếng Nhật|Tiếng Nhật]] [[thượng]] [[cổ]].
===References===
* {{cite-book
|last=Shibatani
|first=Masayoshi
|title=The Languages of Japan
|trans-title=Ngôn ngữ của Nhật Bản
|publisher=Nhà xuất bản đại học Cambridge
|year=1990
|page=119
|isbn=0-521-36918-5
}}
{{C|en|Tên ngôn ngữ}}
fuce6e88l72l299v0pyb7tcwjfycfd2
2362776
2362775
2026-05-31T02:02:49Z
Hiyuune
50834
/* References */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2362776
wikitext
text/x-wiki
=={{langname|en}}==
{{wp|en:}}
==={{section|pr-noun}}===
{{en-proper noun|head=[[old|Old]] [[Japanese]]}}
# [[tiếng Nhật|Tiếng Nhật]] [[thượng]] [[cổ]].
==={{section|ref}}===
* {{cite-book
|last=Shibatani
|first=Masayoshi
|title=The Languages of Japan
|trans-title=Ngôn ngữ của Nhật Bản
|publisher=Nhà xuất bản đại học Cambridge
|year=1990
|page=119
|isbn=0-521-36918-5
}}
{{C|en|Tên ngôn ngữ}}
atbtvqhk0xqptq0fl1ucqlf34gtkwve
2362781
2362776
2026-05-31T02:06:09Z
Hiyuune
50834
/* Tiếng Anh */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2362781
wikitext
text/x-wiki
=={{langname|en}}==
{{wp|en:}}
==={{section|pr-noun}}===
{{en-proper noun|head=[[old|Old]] [[Japanese]]}}
# [[tiếng Nhật|Tiếng Nhật]] [[thượng cổ]].
==={{section|ref}}===
* {{cite-book
|last=Shibatani
|first=Masayoshi
|title=The Languages of Japan
|trans-title=Ngôn ngữ của Nhật Bản
|publisher=Nhà xuất bản đại học Cambridge
|year=1990
|page=119
|isbn=0-521-36918-5
}}
{{C|en|Tên ngôn ngữ}}
i8nykgpn4ejp91eus9beri8djt36n23
jakkaru
0
400115
2362778
2026-05-31T02:05:07Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|ジャッカル}}”
2362778
wikitext
text/x-wiki
=={{langname|ja}}==
==={{ĐM|rom}}===
{{ja-romaji}}
# {{ja-romanization of|ジャッカル}}
8doac5n4s9ggr2r9w3nmafixbtx8e9u
Old Chinese
0
400116
2362779
2026-05-31T02:05:41Z
Hiyuune
50834
+ en
2362779
wikitext
text/x-wiki
=={{langname|en}}==
{{wp|en:}}
==={{section|pron}}===
* {{IPA4|en|/ˈəʊld t͡ʃaɪˈniːz/|a=UK}}
* {{IPA4|en|/ˈoʊld ˌt͡ʃaɪˈniz/|a=US}}
==={{section|pr-noun}}===
{{en-proper noun|head=[[old|Old]] [[Chinese]]}}
# [[tiếng Hán|Tiếng Hán]] [[thượng cổ]].
#: {{synonyms|en|Archaic Chinese|q1=obsolete}}
#: {{coordinate terms|en|Old Chinese|Middle Chinese}}
{{C|en|Tên ngôn ngữ}}
kb53e0hkh223br201aspkgm9u7urk5s
2362780
2362779
2026-05-31T02:05:55Z
Hiyuune
50834
/* Danh từ riêng */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2362780
wikitext
text/x-wiki
=={{langname|en}}==
{{wp|en:}}
==={{section|pron}}===
* {{IPA4|en|/ˈəʊld t͡ʃaɪˈniːz/|a=UK}}
* {{IPA4|en|/ˈoʊld ˌt͡ʃaɪˈniz/|a=US}}
==={{section|pr-noun}}===
{{en-proper noun|head=[[old|Old]] [[Chinese]]}}
# [[tiếng Hán|Tiếng Hán]] [[thượng cổ]].
#: {{synonyms|en|Archaic Chinese|q1=không còn dùng}}
#: {{coordinate terms|en|Old Chinese|Middle Chinese}}
{{C|en|Tên ngôn ngữ}}
9oanfg38wqn8g20m2uxzed8s27ri5d9
金色ジャッカル
0
400117
2362782
2026-05-31T02:06:30Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-kanjitab|きん|いろ|yomi=o,k}} {{swp|ja:キンイロジャッカル}} ==={{ĐM|etym}}=== {{com|ja|金色|ジャッカル|tr1=kin'iro|tr2=jakkaru|t1=[[vàng]]|t2=[[chó rừng]]}} ==={{ĐM|noun}}=== {{ja-noun|きんいろ ジャッカル|キンイロ ジャッカル}} # {{w|Chó rừng lông vàng}}. {{c|ja|Họ Chó}}”
2362782
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-kanjitab|きん|いろ|yomi=o,k}}
{{swp|ja:キンイロジャッカル}}
==={{ĐM|etym}}===
{{com|ja|金色|ジャッカル|tr1=kin'iro|tr2=jakkaru|t1=[[vàng]]|t2=[[chó rừng]]}}
==={{ĐM|noun}}===
{{ja-noun|きんいろ ジャッカル|キンイロ ジャッカル}}
# {{w|Chó rừng lông vàng}}.
{{c|ja|Họ Chó}}
rrcwaacxglvty7hqs8tjh2hhuwcxld4
kin'iro jakkaru
0
400118
2362783
2026-05-31T02:07:14Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|きんいろジャッカル}} # {{ja-romanization of|キンイロジャッカル}}”
2362783
wikitext
text/x-wiki
=={{langname|ja}}==
==={{ĐM|rom}}===
{{ja-romaji}}
# {{ja-romanization of|きんいろジャッカル}}
# {{ja-romanization of|キンイロジャッカル}}
14so7hia2rabahlycise8fevpcb4djx
きんいろジャッカル
0
400119
2362784
2026-05-31T02:07:36Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|金色ジャッカル}}”
2362784
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|金色ジャッカル}}
rovnjxdtwqum740ojhjlnioni548brv
キンイロジャッカル
0
400120
2362785
2026-05-31T02:07:46Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|金色ジャッカル}}”
2362785
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|金色ジャッカル}}
rovnjxdtwqum740ojhjlnioni548brv
Thể loại:Từ đánh vần với 色 là いろ tiếng Nhật
14
400121
2362786
2026-05-31T02:07:58Z
WhoAlone
40420
Trang mới: “{{auto cat|kun}}”
2362786
wikitext
text/x-wiki
{{auto cat|kun}}
6sgynwa4ww4n7ynr3errc7yhla69lb0
上古漢語
0
400122
2362787
2026-05-31T02:08:15Z
Hiyuune
50834
+ zh
2362787
wikitext
text/x-wiki
{{also|上古汉语}}
=={{langname|zh}}==
{{zh-forms|s=上古汉语|type=22}}
{{wp|zh:,yue:,cdo:Siông-gū Háng-ngṳ̄,nan:Siōng-kó͘ Hàn-gí}}
==={{section|pron}}===
{{zh-pron
|m=shànggǔ hànyǔ
|c=soeng6 gu2 hon3 jyu5
|md=siông-gū háng-ngṳ̄
|mn=zz,twz:siāng-kó͘ hàn-gí/kh:siōng-kó͘ hàn-gí/qz:siōng-kó͘ hàn-gír/xm,tp:siōng-kó͘ hàn-gú
|cat=n
}}
==={{section|n}}===
{{head|zh|Danh từ}}
# [[tiếng Hán|Tiếng Hán]] [[thượng cổ]].
===={{section|syn}}====
* {{zh-l|古代漢語}}
===={{section|rel}}====
* {{zh-l|中古漢語}}
{{C|zh|Tiếng Trung Quốc}}
mn51j9a33rlnsxszungz3p6y6f99kew
Thể loại:Từ đánh vần với kanji là いろ tiếng Nhật
14
400123
2362788
2026-05-31T02:08:35Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362788
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Kanji đọc là いろ tiếng Nhật
14
400124
2362789
2026-05-31T02:08:58Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362789
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Từ đánh vần với 色 tiếng Nhật
14
400125
2362790
2026-05-31T02:09:17Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362790
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Từ đánh vần với 色 theo ngôn ngữ
14
400126
2362791
2026-05-31T02:09:40Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362791
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
ウルフ
0
400127
2362793
2026-05-31T02:25:41Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{wp|ja:}} ==={{ĐM|etym}}=== Mượn từ {{bor|ja|en|wolf}}.<ref name="DJR">{{R:Daijirin}}</ref> ==={{ĐM|pron}}=== * {{ja-pron|acc=1|acc_ref=DJR}} ==={{ĐM|noun}}=== {{ja-noun}} # {{lb|ja|informal}} Con [[sói]]. ===={{ĐM|syn}}==== * {{ja-r|狼|おおかみ|rom=-}}, {{ja-r|オオカミ}} ==={{ĐM|ref}}=== <references/> {{C|ja|Họ Chó}}”
2362793
wikitext
text/x-wiki
=={{langname|ja}}==
{{wp|ja:}}
==={{ĐM|etym}}===
Mượn từ {{bor|ja|en|wolf}}.<ref name="DJR">{{R:Daijirin}}</ref>
==={{ĐM|pron}}===
* {{ja-pron|acc=1|acc_ref=DJR}}
==={{ĐM|noun}}===
{{ja-noun}}
# {{lb|ja|informal}} Con [[sói]].
===={{ĐM|syn}}====
* {{ja-r|狼|おおかみ|rom=-}}, {{ja-r|オオカミ}}
==={{ĐM|ref}}===
<references/>
{{C|ja|Họ Chó}}
p36tc0sbzcu5i3hqibvknkar756p856
オオカミ
0
400128
2362794
2026-05-31T02:29:21Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== [[Image:Canis_lupus_265b.jpg|thumb|right]] ==={{ĐM|etym}}=== {{IPAfont|opokami}} → {{IPAfont|oɸokami}} → {{IPAfont|owokami}} → {{IPAfont|ookami}} → {{IPAfont|oːkami}}. Nghĩa đen là "thần lớn", từ {{mention|ja|大|tr=ō||lớn, đại}} và {{mention|ja|神|tr=kami||thần}}. ==={{ĐM|noun}}=== {{ja-noun|おおかみ|hhira=おほかみ}} # {{ja-def|狼}} Con [[sói]]; {{taxfmt|Canis lupus|species}}. #* {{RQ:Wamyō Ruijushō|7|56|p…”
2362794
wikitext
text/x-wiki
=={{langname|ja}}==
[[Image:Canis_lupus_265b.jpg|thumb|right]]
==={{ĐM|etym}}===
{{IPAfont|opokami}} → {{IPAfont|oɸokami}} → {{IPAfont|owokami}} → {{IPAfont|ookami}} → {{IPAfont|oːkami}}. Nghĩa đen là "thần lớn", từ {{mention|ja|大|tr=ō||lớn, đại}} và {{mention|ja|神|tr=kami||thần}}.
==={{ĐM|noun}}===
{{ja-noun|おおかみ|hhira=おほかみ}}
# {{ja-def|狼}} Con [[sói]]; {{taxfmt|Canis lupus|species}}.
#* {{RQ:Wamyō Ruijushō|7|56|passage=犲狼 [...] 説文云、狼、音郎、'''於保加美'''、和名二字、本草和名、犲皮、和名'''於保加美'''、雄略紀、豺狼二字同訓、貝原氏曰、狼、'''於保加美''' [...]}}
#* {{RQ:Wamyō Ruijushō|18|17}} (Bản thảo Shinpukuji)
#*: 犲狼: 兼名苑云狼一名犲音於説文云狼音即和名'''於保加美'''似犬而銃頭白頬者也爾雅注云獥音叫狼子也
#* khoảng '''1177-1188''', [[w:Iroha Jiruishō|Iroha Jiruishō]]
#*: {{quote|ja|狼(オホカミ)}}
#* '''1444''', [[w:Kagakushū|Kagakushū]] (Tập 13)
#*: {{quote|ja|狼(ヲヽカミ)}}
===={{ĐM|usage}}====
オオカミ là từ gắn liền với mùa đông.
===={{ĐM|syn}}====
* {{ja-r|ウルフ}} {{q|không trang trọng}}
===={{ĐM|drv}}====
{{col|ja
|{{l|ja|アラビアオオカミ}} (Arabiaōkami)
|{{l|ja|イタリアオオカミ}} (Itariaōkami)
|{{l|ja|一匹オオカミ}} (ippikiōkami)
|{{l|ja|エジプトオオカミ}} (Ejiputoōkami)
|{{l|ja|エゾオオカミ}} (ezoōkami)
|{{l|ja|オオカミウオ}} (ōkamiuo)
|{{l|ja|おおかみ座}} (ōkamiza)
|{{l|ja|オオカミ少年}} (ōkamishōnen)
|{{l|ja|狼弾き}} (ōkamihajiki)
|{{l|ja|送り狼}} (okuriōkami)
|{{l|ja|カスピオオカミ}} (Kasupiōkami)
|{{l|ja|グレートプレーンズオオカミ}} (Gurētopurēnzuōkami)
|{{l|ja|シベリアオオカミ}} (Shiberiōkami)
|{{l|ja|シンリンオオカミ}} (shinrin'ōkami)
|{{l|ja|タスマニアオオカミ}} (Tasumaniaōkami)
|{{l|ja|タテガミオオカミ}} (tategamiōkami)
|{{l|ja|チョウセンオオカミ}} (Chōsen'ōkami)
|{{l|ja|ツンドラオオカミ}} (tsundoraōkami)
|{{l|ja|ニホンオオカミ}} (Nihon'ōkami)
|{{l|ja|ネブラスカオオカミ}} (Neburasukaōkami)
|{{l|ja|フクロオオカミ}} (fukuroōkami)
|{{l|ja|ホッキョクオオカミ}} (hokkyokuōkami)
|{{l|ja|メキシコオオカミ}} (Mekishikoōkami)
|{{l|ja|ロシアオオカミ}} (Roshiaōkami)
|{{l|ja|ヨーロッパオオカミ}} (Yōroppaōkami)
}}
==={{ĐM|see also}}===
* {{ja-r|狼|おおかめ}}
==={{ĐM|ref}}===
* {{cite-book
|ja
|last=Kamei
|first=Takashi
|title=Kagakushū: Gennabon
|publisher=Iwanami Shoten
|origyear=1444
|year=1944
|location=Tōkyō
}}
* {{R:Wamyō Ruijushō}}
* {{cite-book
|ja
|last=Tadakane
|first=Tachibana
|coauthors=[[w:Masamune Atsuo|Atsuo Masamune]] (biên tập)
|title=[[w:Iroha Jiruishō|Iroha Jiruishō]]
|publisher=Kazama Shobō
|year_published=1971
|year=circa 1177-1188
}}
{{C|ja|Họ Chó|sort=おおかみ}}
0hk8viht279tna3mijv5g1hutmdhf1s
おほかみ
0
400129
2362795
2026-05-31T02:30:10Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|狼|オオカミ}}”
2362795
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|狼|オオカミ}}
4unrs5f3jrthpf17cty11annaqhccwk
おおかみ
0
400130
2362796
2026-05-31T02:31:08Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|狼|大神|大上|オオカミ}}”
2362796
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|狼|大神|大上|オオカミ}}
an4xi9eugpzc61etqsrcl6jv9akoqaz
ōkami
0
400131
2362797
2026-05-31T02:33:01Z
WhoAlone
40420
Trang mới: “{{also|okami|Ōkami}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|オオカミ}} # {{ja-romanization of|おおかみ}}”
2362797
wikitext
text/x-wiki
{{also|okami|Ōkami}}
=={{langname|ja}}==
==={{ĐM|rom}}===
{{ja-romaji}}
# {{ja-romanization of|オオカミ}}
# {{ja-romanization of|おおかみ}}
3h3e97v0n6nogapz9q8ov3r1xhf0b0e
アビシニア狼
0
400132
2362800
2026-05-31T02:37:36Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{section|etym}}=== {{com+|ja|アビシニア|狼|tr1=Abishinia|tr2=jakkaru|t1=[[Abyssinia]]|t2=[[sói]]}} ==={{section|n}}=== {{ja-noun|^アビシニア おおかみ}} # {{synonym of|ja|アビシニアジャッカル}} {{C|ja|Họ Chó}}”
2362800
wikitext
text/x-wiki
=={{langname|ja}}==
==={{section|etym}}===
{{com+|ja|アビシニア|狼|tr1=Abishinia|tr2=jakkaru|t1=[[Abyssinia]]|t2=[[sói]]}}
==={{section|n}}===
{{ja-noun|^アビシニア おおかみ}}
# {{synonym of|ja|アビシニアジャッカル}}
{{C|ja|Họ Chó}}
1e9z3ea59o1s18d720oj5lwq9nph8vg
2362801
2362800
2026-05-31T02:38:04Z
WhoAlone
40420
2362801
wikitext
text/x-wiki
=={{langname|ja}}==
==={{section|etym}}===
{{com+|ja|アビシニア|狼|tr1=Abishinia|tr2=ōkami|t1=[[Abyssinia]]|t2=[[sói]]}}
==={{section|n}}===
{{ja-noun|^アビシニア おおかみ}}
# {{synonym of|ja|アビシニアジャッカル}}
{{C|ja|Họ Chó}}
2lterieau5ainel0lnh18ojm0vowach
Bản mẫu:R:yue:mfccd
10
400133
2362803
2026-05-31T02:39:31Z
Hiyuune
50834
Đổi hướng đến [[Bản mẫu:R:yue:Multi-function Chinese Character Database]]
2362803
wikitext
text/x-wiki
#redirect [[Bản mẫu:R:yue:Multi-function Chinese Character Database]]
4qgfhfmklzk7bvmnmi7wwh3hre6939u
シミエンジャッカル
0
400134
2362804
2026-05-31T02:40:05Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{section|etym}}=== {{com+|ja|シミエン|ジャッカル|tr1=Shimien|tr2=jakkaru|t1=|t2=[[chó rừng]]}} ==={{section|n}}=== {{ja-noun|シミエン ジャッカル}} # {{synonym of|ja|アビシニアジャッカル}} {{C|ja|Họ Chó}}”
2362804
wikitext
text/x-wiki
=={{langname|ja}}==
==={{section|etym}}===
{{com+|ja|シミエン|ジャッカル|tr1=Shimien|tr2=jakkaru|t1=|t2=[[chó rừng]]}}
==={{section|n}}===
{{ja-noun|シミエン ジャッカル}}
# {{synonym of|ja|アビシニアジャッカル}}
{{C|ja|Họ Chó}}
l8s80sbtr9sw014kqldc5ws57d8v1a6
Mô đun:zh/data/och-pron-ZS/寘
828
400135
2362805
2026-05-31T02:40:08Z
Hiyuune
50834
Trang mới: “return { { "17035", "眞", "歌", "2", "寘", "tjels", "" }, }”
2362805
Scribunto
text/plain
return {
{ "17035", "眞", "歌", "2", "寘", "tjels", "" },
}
s7mclmibi0ekgy3a27o8j2wz6cra8sr
エチオピア狼
0
400136
2362806
2026-05-31T02:40:19Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{section|etym}}=== {{com+|ja|エチオピア|狼|tr1=Ethiopia|tr2=ōkami|t1=[[Ethiopia]]|t2=[[sói]]}} ==={{section|n}}=== {{ja-noun|^エチオピア おおかみ}} # {{synonym of|ja|アビシニアジャッカル}} {{C|ja|Họ Chó}}”
2362806
wikitext
text/x-wiki
=={{langname|ja}}==
==={{section|etym}}===
{{com+|ja|エチオピア|狼|tr1=Ethiopia|tr2=ōkami|t1=[[Ethiopia]]|t2=[[sói]]}}
==={{section|n}}===
{{ja-noun|^エチオピア おおかみ}}
# {{synonym of|ja|アビシニアジャッカル}}
{{C|ja|Họ Chó}}
bpb37l19c45fd6kfopbrosvolcxbwia
2362807
2362806
2026-05-31T02:40:30Z
WhoAlone
40420
2362807
wikitext
text/x-wiki
=={{langname|ja}}==
==={{section|etym}}===
{{com+|ja|エチオピア|狼|tr1=Echiopia|tr2=ōkami|t1=[[Ethiopia]]|t2=[[sói]]}}
==={{section|n}}===
{{ja-noun|^エチオピア おおかみ}}
# {{synonym of|ja|アビシニアジャッカル}}
{{C|ja|Họ Chó}}
dvs5kpuwru8mioej7jtgma0xjv0oe1n
エチオピアおおかみ
0
400137
2362808
2026-05-31T02:40:59Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|エチオピア狼}}”
2362808
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|エチオピア狼}}
e9sag2aqojgxrwkrjblx3z3okrqqwg9
アビシニアおおかみ
0
400138
2362809
2026-05-31T02:41:01Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|アビシニア狼}}”
2362809
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|アビシニア狼}}
mwi3dekthdzd0ozy6jt0tc7kd3hqr4l
𬉌
0
400139
2362810
2026-05-31T02:43:33Z
Hiyuune
50834
+ mul
2362810
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{section|han}}===
{{Han char|rn=85|rad=水|as=13|sn=|four=|canj=|ids=⿰氵嗔}}
===={{section|ref}}====
* {{Han ref|kx=|dkj=|dj=|hdz=|uh=2C24C}}
517xaywkxw48y3kcm5qu4fed3urvwyb
ノロシ
0
400140
2362811
2026-05-31T02:45:50Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{ĐM|pron}}=== * {{IPA4|ja|/noroɕi/}} ==={{ĐM|noun}}=== {{ja-noun}} # {{label|ja|Kamiuchinami|Ōno|Fukui}} [[tín hiệu]] bằng [[khói]].”
2362811
wikitext
text/x-wiki
=={{langname|ja}}==
==={{ĐM|pron}}===
* {{IPA4|ja|/noroɕi/}}
==={{ĐM|noun}}===
{{ja-noun}}
# {{label|ja|Kamiuchinami|Ōno|Fukui}} [[tín hiệu]] bằng [[khói]].
ffx116bvyigssnfv3hyzh7745667u9v
謓
0
400141
2362812
2026-05-31T02:45:52Z
Hiyuune
50834
+ mul
2362812
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{section|han}}===
{{Han char|rn=149|rad=言|as=10|sn=17|four=04681|canj=YRJBC|ids=⿰訁真}}
# [[tức giận|Tức giận]], nổi lên cơn [[thịnh nộ]].
===={{section|ref}}====
* {{Han ref|kx=1175.080|dkj=35809|dj=1639.250|hdz=64007.110|uh=8B13}}
=={{langname|zh}}==
{{zh-see|嗔}}
13cu7iamnkuf2rfx1teyh9k1a8v50j4
オーカミ
0
400142
2362813
2026-05-31T02:46:19Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{ĐM|pron}}=== * {{IPA4|ja|/oːkami/}} ==={{ĐM|noun}}=== {{ja-noun}} # {{label|ja|Kamiuchinami|Ōno|Fukui}} Con [[sói]].”
2362813
wikitext
text/x-wiki
=={{langname|ja}}==
==={{ĐM|pron}}===
* {{IPA4|ja|/oːkami/}}
==={{ĐM|noun}}===
{{ja-noun}}
# {{label|ja|Kamiuchinami|Ōno|Fukui}} Con [[sói]].
gy2mxnspmcvgp1riyfvr8dnygoqxma5
chen1
0
400143
2362814
2026-05-31T02:48:00Z
Hiyuune
50834
+ cmn
2362814
wikitext
text/x-wiki
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{alternative spelling of|cmn|chēn}}
78ved58l4orn8h3gm6swodvhbqd622i
chēn
0
400144
2362815
2026-05-31T02:48:58Z
Hiyuune
50834
+ ja, cmn
2362815
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "chen"}}
=={{langname|ja}}==
==={{section|rom}}===
{{ja-romaji}}
# {{ja-romanization of|チェーン}}
=={{langname|cmn}}==
==={{section|alt}}===
* {{alt|cmn|chen||nonstandard}}
* {{alt|cmn|ĉēn}}
==={{section|rom}}===
{{cmn-pinyin}}
# {{cmn-pinyin of|抻}}
# {{cmn-pinyin of|嗒}}
# {{cmn-pinyin of|抺}}
# {{cmn-pinyin of|捳}}
# {{cmn-pinyin of|棽}}
# {{cmn-pinyin of|琛}}
# {{cmn-pinyin of|嗔}}
# {{cmn-pinyin of|瞋}}
# {{cmn-pinyin of|綝}}
# {{cmn-pinyin of|縘}}
# {{cmn-pinyin of|肛}}
# {{cmn-pinyin of|肻}}
# {{cmn-pinyin of|諃}}
# {{cmn-pinyin of|謓}}
# {{cmn-pinyin of|賝}}
# {{cmn-pinyin of|郴}}
8wztrsv2i28xrtno4gifpnxwp4apx98
zan1
0
400145
2362816
2026-05-31T02:51:27Z
Hiyuune
50834
+ cmn, yue
2362816
wikitext
text/x-wiki
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{alternative spelling of|cmn|zān}}
=={{langname|yue}}==
==={{ĐM|pron}}===
* {{IPA4|yue|/t͡sɐn˥/}}
==={{ĐM|rom}}===
{{yue-jyut}}
# {{yue-jyutping of|珍}}
# {{yue-jyutping of|真}}
bfezn5ew2dwespg5rnu60yyx4mw8fbq
zān
0
400146
2362817
2026-05-31T02:52:01Z
Hiyuune
50834
+ cmn
2362817
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "zan"}}
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{cmn-pinyin of|兂}}
# {{cmn-pinyin of|篳}}
# {{cmn-pinyin of|簪}}
# {{cmn-pinyin of|簮}}
# {{cmn-pinyin of|糋}}
# {{cmn-pinyin of|臛}}
# {{cmn-pinyin of|臝}}
# {{cmn-pinyin of|鐕}}
lvc0aof7fpcruiqw77lddshslafjz84
indabak
0
400147
2362818
2026-05-31T02:54:12Z
Hiyuune
50834
+ eu
2362818
wikitext
text/x-wiki
=={{langname|eu}}==
==={{section|n}}===
{{head|eu|Biến thể hình thái danh từ}}
# {{infl of|eu|indaba||erg|indef|;|erg|s|;|absv|p}}
f5wposqrtwoylp1b0udj9ud6b55829i
indabari
0
400148
2362819
2026-05-31T02:54:50Z
Hiyuune
50834
+ eu
2362819
wikitext
text/x-wiki
=={{langname|eu}}==
==={{section|n}}===
{{head|eu|Biến thể hình thái danh từ}}
# {{infl of|eu|indaba||dat|indef|;|dat|s}}
o68wzc6fd6klza6zpddxrrnr6fuspb3
ティーチ
0
400149
2362820
2026-05-31T02:56:12Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|num}}=== {{ryu-head|numeral}} # [[một]].”
2362820
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[một]].
8vp6k3q7tzxmht91srtvq81420xj3in
Thể loại:Số từ tiếng Okinawa
14
400150
2362821
2026-05-31T02:56:39Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362821
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
can1
0
400151
2362823
2026-05-31T02:58:43Z
Hiyuune
50834
Trang mới: “=={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{alternative spelling of|cmn|cān}} =={{langname|yue}}== ==={{ĐM|pron}}=== {{Jyutping-IPA|can1}} ==={{ĐM|rom}}=== {{yue-jyut}} # {{yue-jyutping of|亲}} # {{yue-jyutping of|嗔}} # {{yue-jyutping of|𡤅}} # {{yue-jyutping of|㥇}} # {{yue-jyutping of|㥲}} # {{yue-jyutping of|㱚}} # {{yue-jyutping of|瞋}} # {{yue-jyutping of|䉔}} # {{yue-jyutping of|䐜}} # {{yue-jyutping of|䙁}} # {{yue-jyutping of|…”
2362823
wikitext
text/x-wiki
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{alternative spelling of|cmn|cān}}
=={{langname|yue}}==
==={{ĐM|pron}}===
{{Jyutping-IPA|can1}}
==={{ĐM|rom}}===
{{yue-jyut}}
# {{yue-jyutping of|亲}}
# {{yue-jyutping of|嗔}}
# {{yue-jyutping of|𡤅}}
# {{yue-jyutping of|㥇}}
# {{yue-jyutping of|㥲}}
# {{yue-jyutping of|㱚}}
# {{yue-jyutping of|瞋}}
# {{yue-jyutping of|䉔}}
# {{yue-jyutping of|䐜}}
# {{yue-jyutping of|䙁}}
# {{yue-jyutping of|𧡘}}
# {{yue-jyutping of|親}}
# {{yue-jyutping of|齓}}
i8rapkqzruohzp9nwqtddrmza2fqfxa
Thể loại:Số từ tiếng Yonaguni
14
400152
2362824
2026-05-31T02:59:13Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362824
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Danh từ riêng tiếng Hán trung cổ
14
400153
2362825
2026-05-31T02:59:44Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362825
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Danh từ riêng tiếng Hán thượng cổ
14
400154
2362826
2026-05-31T02:59:47Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362826
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Danh từ tiếng Hán trung cổ
14
400155
2362827
2026-05-31T03:00:30Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362827
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Danh từ tiếng Hán thượng cổ
14
400156
2362828
2026-05-31T03:00:34Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362828
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
આંતરવિગ્રહ
0
400157
2362829
2026-05-31T03:01:01Z
Hiyuune
50834
+ gu
2362829
wikitext
text/x-wiki
=={{langname|gu}}==
==={{ĐM|n}}===
{{gu-noun|g=m}}
# [[nội chiến|Nội chiến]].
dohz4pe73le1afdq3q3od3bpfupm8ac
Thể loại:Động từ tiếng Hán thượng cổ
14
400158
2362830
2026-05-31T03:01:15Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362830
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Tính từ tiếng Hán thượng cổ
14
400159
2362831
2026-05-31T03:01:18Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362831
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Động từ tiếng Hán trung cổ
14
400160
2362832
2026-05-31T03:02:32Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2362832
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
oʻttiz
0
400161
2362833
2026-05-31T03:27:42Z
Kelly zhrm
58416
Trang mới: “=={{langname|uz}}== {{number box|uz|30}} ==={{ĐM|etym}}=== Từ {{inh|uz|trk-pro|*otuŕ|t=ba mươi}}. ==={{ĐM|numeral}}=== {{head|uz|Số từ}} # {{cln|uz|Số đếm}} [[ba mươi|Ba mươi]].”
2362833
wikitext
text/x-wiki
=={{langname|uz}}==
{{number box|uz|30}}
==={{ĐM|etym}}===
Từ {{inh|uz|trk-pro|*otuŕ|t=ba mươi}}.
==={{ĐM|numeral}}===
{{head|uz|Số từ}}
# {{cln|uz|Số đếm}} [[ba mươi|Ba mươi]].
mdul23267ap4j89r50p9lt8vyvmz26j
Thể loại:Từ dẫn xuất từ tiếng Chagatai tiếng Uzbek
14
400162
2362836
2026-05-31T03:32:03Z
Kelly zhrm
58416
Trang mới: “{{auto cat}}”
2362836
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Từ kế thừa từ tiếng Chagatai tiếng Uzbek
14
400163
2362837
2026-05-31T03:34:17Z
Kelly zhrm
58416
Trang mới: “{{auto cat}}”
2362837
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
ユーチ
0
400164
2362839
2026-05-31T03:35:25Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|num}}=== {{ryu-head|numeral}} # [[bốn]].”
2362839
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[bốn]].
r8qd8srimj5m13ym6t2eyg87n0wzqq5
ヤーチ
0
400165
2362843
2026-05-31T03:36:39Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|num}}=== {{ryu-head|numeral}} # [[tám]].”
2362843
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[tám]].
sb6m155mhfnf07eiqd2amfldgt6zi4f
ククヌチ
0
400166
2362844
2026-05-31T03:38:22Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|num}}=== {{ryu-head|numeral}} # [[chín]].”
2362844
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[chín]].
ckg061zf9hqa8teshs93u0urvd6aqvj
トゥー
0
400167
2362845
2026-05-31T03:38:48Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|num}}=== {{ryu-head|numeral}} # [[mười]].”
2362845
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|num}}===
{{ryu-head|numeral}}
# [[mười]].
jmwh6sppbshcyhp4a777rif1nygr78r
あーけーずー
0
400168
2362846
2026-05-31T03:42:48Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|秋津}} [[chuồn chuồn]].”
2362846
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|秋津}} [[chuồn chuồn]].
stdfqt83zmhvprdvdp0lzuwy776s9sn
上がい太陽
0
400169
2362847
2026-05-31T03:43:34Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ryu-kanjitab|あ|てぃーだ2|yomi=k,juku2}} ==={{ĐM|noun}}=== {{ryu-head|noun|あがいてぃーだ}} # {{alt form|ryu|上がい天道}}”
2362847
wikitext
text/x-wiki
=={{langname|ja}}==
{{ryu-kanjitab|あ|てぃーだ2|yomi=k,juku2}}
==={{ĐM|noun}}===
{{ryu-head|noun|あがいてぃーだ}}
# {{alt form|ryu|上がい天道}}
m8o3inxpospq4qs0tx5k3e8qck10lbq
上がい天道
0
400170
2362848
2026-05-31T03:46:21Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== {{ryu-kanjitab|あ|てぃーだ2|yomi=k,juku2|alt=上がい太陽}} ==={{ĐM|etym}}=== Ghép từ {{com|ryu|上がい|tr1=agai|pos1={{mention|ja|連用形|tr=ren'yōkei|t=dạng tiếp diễn hoặc dạng gốc}} của {{mention|ryu|上がゆん|tr=agayun|t=mọc}}|{{mention|ryu|天道|sc=Latn}}, {{mention|ryu|太陽|sc=Latn}}|tr2=tīda|t2=mặt trời}}. ==={{ĐM|pron}}=== * {{IPA4|ryu|/ʔaɡaitiːda/}} *: Trọng âm âm vực 1. ==={{ĐM|noun}}…”
2362848
wikitext
text/x-wiki
=={{langname|ryu}}==
{{ryu-kanjitab|あ|てぃーだ2|yomi=k,juku2|alt=上がい太陽}}
==={{ĐM|etym}}===
Ghép từ {{com|ryu|上がい|tr1=agai|pos1={{mention|ja|連用形|tr=ren'yōkei|t=dạng tiếp diễn hoặc dạng gốc}} của {{mention|ryu|上がゆん|tr=agayun|t=mọc}}|{{mention|ryu|天道|sc=Latn}}, {{mention|ryu|太陽|sc=Latn}}|tr2=tīda|t2=mặt trời}}.
==={{ĐM|pron}}===
* {{IPA4|ryu|/ʔaɡaitiːda/}}
*: Trọng âm âm vực 1.
==={{ĐM|noun}}===
{{ryu-head|noun|あがいてぃーだ}}
# [[mặt trời]] [[mọc]].
==={{ĐM|ref}}===
* {{R:Okinawago Jiten}}
jif1xm7x7hlgvasxnageq4zwdung2on
あさってぃ
0
400171
2362849
2026-05-31T03:53:11Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|明後日}} [[ngày kia]].”
2362849
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|明後日}} [[ngày kia]].
1qxhx03duaxw5xd81o0ysi2d4qbgwpj
2362858
2362849
2026-05-31T04:08:28Z
WhoAlone
40420
2362858
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|明後日}} [[ngày kia]].
=={{langname|yoi}}==
==={{ĐM|noun}}===
{{yoi-head|noun}}
# {{label|yoi|Sonai}} {{rys-def|明後日}} [[ngày kia]].
# {{label|yoi|Sonai}} {{rys-def|明後日}} [[hai]] [[ngày]] [[sau]].
4121wnk0s06bznc3j6ons5qdyw36u0o
2362859
2362858
2026-05-31T04:10:37Z
WhoAlone
40420
2362859
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|明後日}} [[ngày kia]].
=={{langname|yoi}}==
==={{ĐM|noun}}===
{{yoi-head|noun}}
# {{label|yoi|Sonai}} {{yoi-def|明後日}} [[ngày kia]].
# {{label|yoi|Sonai}} {{yoi-def|明後日}} [[hai]] [[ngày]] [[sau]].
5lepmf6bm30dnbj9i4g9zhlpd3lv9jo
あくひち
0
400172
2362850
2026-05-31T03:53:53Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|悪筆}} [[chữ viết]] [[tay]] [[cẩu thả]].”
2362850
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|悪筆}} [[chữ viết]] [[tay]] [[cẩu thả]].
2iae26gtrk455pjkb5mphy08fl8vh45
悪筆
0
400173
2362851
2026-05-31T03:55:56Z
WhoAlone
40420
Trang mới: “{{also|惡筆}} =={{langname|ja}}== {{ja-kanjitab|あく|ひつ|yomi=o}} ==={{ĐM|pron}}=== {{ja-pron|あくひつ|acc=0|acc_ref=DJR}} ==={{ĐM|noun}}=== {{ja-noun|あくひつ|hhira=あくひつ}} # [[chữ viết]] [[tay]] [[cẩu thả]]. ==={{ĐM|ref}}=== <references /> :* {{R:Kanjipedia Kotoba|0000045800}} {{C|ja|Thư pháp}} =={{langname|ryu}}== {{ryu-kanjitab|あく|ひち|yomi=o}} ==={{ĐM|pron}}=== {{ryu-pron|あくひち}} ==={{ĐM|noun}}=== {{ryu-noun|…”
2362851
wikitext
text/x-wiki
{{also|惡筆}}
=={{langname|ja}}==
{{ja-kanjitab|あく|ひつ|yomi=o}}
==={{ĐM|pron}}===
{{ja-pron|あくひつ|acc=0|acc_ref=DJR}}
==={{ĐM|noun}}===
{{ja-noun|あくひつ|hhira=あくひつ}}
# [[chữ viết]] [[tay]] [[cẩu thả]].
==={{ĐM|ref}}===
<references />
:* {{R:Kanjipedia Kotoba|0000045800}}
{{C|ja|Thư pháp}}
=={{langname|ryu}}==
{{ryu-kanjitab|あく|ひち|yomi=o}}
==={{ĐM|pron}}===
{{ryu-pron|あくひち}}
==={{ĐM|noun}}===
{{ryu-noun|あくひち}}
# [[chữ viết]] [[tay]] [[cẩu thả]].
==={{ĐM|ref}}===
* {{R:JLect|あくひち【悪筆・惡筆】|7815/akuhichi}}
{{C|ryu|Thư pháp}}
5h23u3msxlb3g2rjgwyec7bvk49ucp5
惡筆
0
400174
2362852
2026-05-31T03:56:49Z
WhoAlone
40420
Trang mới: “{{also|悪筆}} =={{langname|ko}}== {{ko-hanjatab}} ==={{ĐM|noun}}=== {{ko-noun|hangeul=악필}} # {{hanja form of|악필|[[chữ viết]] [[tay]] [[cẩu thả]]}}”
2362852
wikitext
text/x-wiki
{{also|悪筆}}
=={{langname|ko}}==
{{ko-hanjatab}}
==={{ĐM|noun}}===
{{ko-noun|hangeul=악필}}
# {{hanja form of|악필|[[chữ viết]] [[tay]] [[cẩu thả]]}}
ff0jb6d31ahoyz301uhg9azacpq9006
악필
0
400175
2362853
2026-05-31T03:57:58Z
WhoAlone
40420
Trang mới: “=={{langname|ko}}== ==={{ĐM|etym}}=== {{ko-etym-sino|惡筆}}. ==={{ĐM|pron}}=== {{ko-IPA}} ==={{ĐM|noun}}=== {{ko-noun|hanja=惡筆}} # [[chữ viết]] [[tay]] [[cẩu thả]].”
2362853
wikitext
text/x-wiki
=={{langname|ko}}==
==={{ĐM|etym}}===
{{ko-etym-sino|惡筆}}.
==={{ĐM|pron}}===
{{ko-IPA}}
==={{ĐM|noun}}===
{{ko-noun|hanja=惡筆}}
# [[chữ viết]] [[tay]] [[cẩu thả]].
kaf46ib0fkm5brjbvuxktmviglibfss
あくひつ
0
400176
2362854
2026-05-31T03:59:53Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|悪筆}}”
2362854
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|悪筆}}
ckblxa3vl7nrnvl27kmfdxnamnd6g40
akuhitsu
0
400177
2362855
2026-05-31T04:00:26Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-rom}} # {{ja-rom of|あくひつ}}”
2362855
wikitext
text/x-wiki
=={{langname|ja}}==
==={{ĐM|rom}}===
{{ja-rom}}
# {{ja-rom of|あくひつ}}
qdyuhd27mk7fv3o3yf7124620jlvpiw
あすぅとぅ
0
400178
2362856
2026-05-31T04:06:03Z
WhoAlone
40420
Trang mới: “=={{langname|rys}}== ==={{ĐM|noun}}=== {{rys-head|noun}} # {{label|rys|Hateruma}} {{rys-def|明後日}} [[ngày kia]].”
2362856
wikitext
text/x-wiki
=={{langname|rys}}==
==={{ĐM|noun}}===
{{rys-head|noun}}
# {{label|rys|Hateruma}} {{rys-def|明後日}} [[ngày kia]].
1vqca81gckexooffpcu2rmgopda96fj
はすぃてぃ
0
400179
2362857
2026-05-31T04:06:52Z
WhoAlone
40420
Trang mới: “=={{langname|rys}}== ==={{ĐM|noun}}=== {{rys-head|noun}} # {{label|rys|Kabira}} {{rys-def|明後日}} [[ngày kia]].”
2362857
wikitext
text/x-wiki
=={{langname|rys}}==
==={{ĐM|noun}}===
{{rys-head|noun}}
# {{label|rys|Kabira}} {{rys-def|明後日}} [[ngày kia]].
6cc9ev62jc1qvbv88eg00xmh8hwr4d3
あすとぅ
0
400180
2362860
2026-05-31T04:10:50Z
WhoAlone
40420
Trang mới: “=={{langname|mvi}}== ==={{ĐM|noun}}=== {{mvi-head|noun}} # {{label|mvi|Minna}} {{mvi-def|明後日}} [[ngày kia]].”
2362860
wikitext
text/x-wiki
=={{langname|mvi}}==
==={{ĐM|noun}}===
{{mvi-head|noun}}
# {{label|mvi|Minna}} {{mvi-def|明後日}} [[ngày kia]].
fm1rmn7ve670xi0wifilavv54zzlj3w
あすてぃ
0
400181
2362861
2026-05-31T04:11:20Z
WhoAlone
40420
Trang mới: “=={{langname|mvi}}== ==={{ĐM|noun}}=== {{mvi-head|noun}} # {{label|mvi|Sunagawa}} {{mvi-def|明後日}} [[ngày kia]].”
2362861
wikitext
text/x-wiki
=={{langname|mvi}}==
==={{ĐM|noun}}===
{{mvi-head|noun}}
# {{label|mvi|Sunagawa}} {{mvi-def|明後日}} [[ngày kia]].
9lrtumqcgse4abcaxbela1299to4d0u
あさてぃ
0
400182
2362862
2026-05-31T04:13:27Z
WhoAlone
40420
Trang mới: “=={{langname|mvi}}== ==={{ĐM|noun}}=== {{mvi-head|noun}} # {{label|mvi|Ikema Nishihara}} {{mvi-def|明後日}} [[ngày kia]]. =={{langname|okn}}== ==={{ĐM|noun}}=== {{okn-head|noun}} # {{okn-def|明後日}} [[ngày kia]].”
2362862
wikitext
text/x-wiki
=={{langname|mvi}}==
==={{ĐM|noun}}===
{{mvi-head|noun}}
# {{label|mvi|Ikema Nishihara}} {{mvi-def|明後日}} [[ngày kia]].
=={{langname|okn}}==
==={{ĐM|noun}}===
{{okn-head|noun}}
# {{okn-def|明後日}} [[ngày kia]].
lpac9uu3n0ve1z5he2rgc0e09sbp1dc
‘アサティ
0
400183
2362863
2026-05-31T04:14:12Z
WhoAlone
40420
Trang mới: “=={{langname|kzg}}== ==={{ĐM|noun}}=== {{kzg-head|noun}} # {{kzg-def|明後日}} [[ngày kia]].”
2362863
wikitext
text/x-wiki
=={{langname|kzg}}==
==={{ĐM|noun}}===
{{kzg-head|noun}}
# {{kzg-def|明後日}} [[ngày kia]].
0ipvxwto1bec05lpa5tvlo9o734p1vb
ふぃさ
0
400184
2362864
2026-05-31T04:16:05Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}== {{ryu-head|noun}} # {{ryu-def|足}} [[bàn chân]].”
2362864
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}==
{{ryu-head|noun}}
# {{ryu-def|足}} [[bàn chân]].
lax9gve486219rodj6jysdv2txkqjt3
2362865
2362864
2026-05-31T04:16:13Z
WhoAlone
40420
2362865
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|足}} [[bàn chân]].
h40k04rb6swtbg3qmnbewjem44oivms
あちゃー
0
400185
2362866
2026-05-31T04:17:38Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|明日}} [[ngày mai]].”
2362866
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|明日}} [[ngày mai]].
kh8s1fqb7witwprr3su5hkloo9155lf
いー
0
400186
2362869
2026-05-31T04:23:45Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|衣}} [[quần áo]].”
2362869
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|衣}} [[quần áo]].
1c9e70vtuwd3ny3suk2kjr82jeysdop
いーちゅー
0
400187
2362870
2026-05-31T04:25:49Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|糸}} Sợi [[chỉ]].”
2362870
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|糸}} Sợi [[chỉ]].
7pp6t9mkbnckc8q8k4pegufak92qqok
ぬち
0
400188
2362872
2026-05-31T04:29:28Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|命}} [[cuộc sống]].”
2362872
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|命}} [[cuộc sống]].
ptw9t2i1ryqnclpliscuhr4m5ovfrc1
いゆまち
0
400189
2362873
2026-05-31T04:30:21Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|魚町}} [[chợ]] [[cá]].”
2362873
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|魚町}} [[chợ]] [[cá]].
gm5vogv2ew26ibnylc7tea1tg1axzag
いりかじ
0
400190
2362874
2026-05-31T04:31:12Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|西風}} [[gió tây]].”
2362874
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|西風}} [[gió tây]].
901dywa50tfjkhzykaelfvr0ncqnvh9
ゐきが
0
400191
2362876
2026-05-31T04:32:52Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|pron}}=== * {{IPA4|ryu|[(w)ikiɡa]}} ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|男}} [[đàn ông]]. ==={{ĐM|ref}}=== * {{R:JLect|ゐきが【男】|103|wikiga}}”
2362876
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|pron}}===
* {{IPA4|ryu|[(w)ikiɡa]}}
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|男}} [[đàn ông]].
==={{ĐM|ref}}===
* {{R:JLect|ゐきが【男】|103|wikiga}}
is92t9dve8ll4u9rx5wtgcnwq7nb6pf
ゆきが
0
400192
2362877
2026-05-31T04:33:37Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|男}} [[đàn ông]].”
2362877
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|男}} [[đàn ông]].
b02ag7j4qgsv2azasf1zi04wzf6vs1w
うぅとぅく
0
400193
2362878
2026-05-31T04:33:54Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{label|ryu|literary}} {{ryu-def|男}} [[đàn ông]].”
2362878
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{label|ryu|literary}} {{ryu-def|男}} [[đàn ông]].
63jibgrsudjljrm2lhrkzkq55ajvtba
うーび
0
400194
2362879
2026-05-31T04:37:54Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|帯}} [[dải]] [[băng]].”
2362879
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|帯}} [[dải]] [[băng]].
pxmfl9lf86zlugbj8ezotxptyfr1hv9
うしゅー
0
400195
2362880
2026-05-31T04:39:01Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|御主}} [[vua]] [[Lưu Cầu]].”
2362880
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|御主}} [[vua]] [[Lưu Cầu]].
ktn3rfjq813jgy2500m8mc8lzxtpwgl
うすー
0
400196
2362881
2026-05-31T04:39:21Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|御主}} [[vua]] [[Lưu Cầu]].”
2362881
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|御主}} [[vua]] [[Lưu Cầu]].
ktn3rfjq813jgy2500m8mc8lzxtpwgl
うぶく
0
400197
2362882
2026-05-31T04:40:43Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|御仏供}} [[đồ]] [[cúng]] [[Phật]] (thường là [[cơm]]).”
2362882
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|御仏供}} [[đồ]] [[cúng]] [[Phật]] (thường là [[cơm]]).
f5tkmr4kf6tup6omkztnj6dfylb42w8
うふやー
0
400198
2362883
2026-05-31T04:42:05Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|大家}} [[chủ]] [[đất]].”
2362883
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|大家}} [[chủ]] [[đất]].
ollxpxut8mkznpbfj2s0hflfxcs3o6s
うぶるずぃち
0
400199
2362884
2026-05-31T04:42:52Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|朧月}} [[trăng]] trong đêm [[mờ ảo]].”
2362884
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|朧月}} [[trăng]] trong đêm [[mờ ảo]].
555jaqwfiqkpo8d45xwtdnhg7qugmdg
っんまりびー
0
400200
2362885
2026-05-31T05:05:52Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|pron}}=== * {{IPA4|ryu|/ʔm̩maɾibiː/}} ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|生日|生まり日}} [[sinh nhật]].”
2362885
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|pron}}===
* {{IPA4|ryu|/ʔm̩maɾibiː/}}
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|生日|生まり日}} [[sinh nhật]].
2gwq75q2jv7ujw08gzzltiv57tuycm0
がくしー
0
400201
2362886
2026-05-31T05:07:49Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|学生}} [[sinh nhật]].”
2362886
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|学生}} [[sinh nhật]].
7kax5iobtl5dsbxrr9ug6ajf4h1ao2u
かさ
0
400202
2362887
2026-05-31T05:09:54Z
WhoAlone
40420
Trang mới: “=={{langname|ja}}== {{ja-see|傘|笠|暈|瘡|嵩|毬|梂|過差}} =={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|傘}} Cái [[ô]].”
2362887
wikitext
text/x-wiki
=={{langname|ja}}==
{{ja-see|傘|笠|暈|瘡|嵩|毬|梂|過差}}
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|傘}} Cái [[ô]].
1aszog1jpvior2svl4ppbq2wb9yszwy
がっこー
0
400203
2362888
2026-05-31T05:10:40Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|学校}} [[trường học]].”
2362888
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|学校}} [[trường học]].
8bxy8gi6mx4awerkq77adrjv7umtz5v
がに
0
400204
2362889
2026-05-31T05:12:05Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|蟹}} [[cua]].”
2362889
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|蟹}} [[cua]].
nol5eabt6urnytnkbat02hyeq4wbip5
かみ
0
400205
2362890
2026-05-31T05:12:40Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|神}} [[linh hồn]], [[thần linh]].”
2362890
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|神}} [[linh hồn]], [[thần linh]].
lc1ilvqp0oqb6vilalotmvkwo2cwpzb
かみふとぅき
0
400206
2362891
2026-05-31T05:15:11Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|神仏}} [[thần]] [[Phật]].”
2362891
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|神仏}} [[thần]] [[Phật]].
3m43dh7fxcrg2zgmwlbj19uestn939r
がらし
0
400207
2362892
2026-05-31T05:16:08Z
WhoAlone
40420
Trang mới: “{{also|からし}} =={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|烏|鴉}} [[quạ]]. =={{langname|okn}}== ==={{ĐM|noun}}=== {{okn-head|noun}} # {{okn-def|烏|鴉}} [[quạ]].”
2362892
wikitext
text/x-wiki
{{also|からし}}
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|烏|鴉}} [[quạ]].
=={{langname|okn}}==
==={{ĐM|noun}}===
{{okn-head|noun}}
# {{okn-def|烏|鴉}} [[quạ]].
q7s57y6fvk1gtgvsqi4l57xc5p0ubpm
Thể loại:Danh từ giống đực tiếng Gujarat
14
400208
2362893
2026-05-31T05:16:18Z
TheHighFighter2
42988
Trang mới: “{{auto cat}}”
2362893
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
からた
0
400209
2362894
2026-05-31T05:17:43Z
WhoAlone
40420
Trang mới: “=={{langname|ryu}}== ==={{ĐM|noun}}=== {{ryu-head|noun}} # {{ryu-def|体}} [[cơ thể]].”
2362894
wikitext
text/x-wiki
=={{langname|ryu}}==
==={{ĐM|noun}}===
{{ryu-head|noun}}
# {{ryu-def|体}} [[cơ thể]].
n3cv69xoigvjyo2alvk9segbvs16f58
đầu thai
0
400210
2362923
2026-05-31T07:07:54Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|etym}}=== {{vi-etym-sino|投胎}}. ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|verb}}=== {{vi-verb}} # [[nhập|Nhập]] vào một cái [[thai]] để sinh ra thành [[kiếp]] khác (theo thuyết [[luân hồi]] của [[đạo Phật]]). ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362923
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{vi-etym-sino|投胎}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|verb}}===
{{vi-verb}}
# [[nhập|Nhập]] vào một cái [[thai]] để sinh ra thành [[kiếp]] khác (theo thuyết [[luân hồi]] của [[đạo Phật]]).
==={{ĐM|ref}}===
* {{R:Tratu}}
k6gqzgb2xrd53gynx0u5e8qdgzxy6v3
cô nương
0
400211
2362924
2026-05-31T07:10:28Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|etym}}=== {{vi-etym-sino|姑娘}}. ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|noun}}=== {{vi-noun}} # {{nhãn|vi|từ cũ|văn chương}} Từ dùng để gọi người [[con gái]] với ý [[coi trọng]] #: {{ux|vi|Mời '''cô nương''' lên xe.}} #: {{ux|vi|Quý '''cô nương'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362924
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{vi-etym-sino|姑娘}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{nhãn|vi|từ cũ|văn chương}} Từ dùng để gọi người [[con gái]] với ý [[coi trọng]]
#: {{ux|vi|Mời '''cô nương''' lên xe.}}
#: {{ux|vi|Quý '''cô nương'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
r716a2izcfc9q074j6j8d4btf63tyg7
thần giao cách cảm
0
400212
2362927
2026-05-31T07:15:38Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|etym}}=== {{vi-etym-sino|神交隔感}}. ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|noun}}=== {{vi-noun}} # Sự [[truyền đạt]] và [[cảm nhận]] được các [[hiện tượng]] [[tâm lí]] (như [[cảm giác]], [[cảm xúc]], [[ý nghĩ]], [[hình ảnh]], v.v.) từ người này sang người khác qua một khoảng cách rất xa mà không nhờ tới một [[phương tiện]] [[thông tin]] [[kĩ thuật]] nào (không ph…”
2362927
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{vi-etym-sino|神交隔感}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|noun}}===
{{vi-noun}}
# Sự [[truyền đạt]] và [[cảm nhận]] được các [[hiện tượng]] [[tâm lí]] (như [[cảm giác]], [[cảm xúc]], [[ý nghĩ]], [[hình ảnh]], v.v.) từ người này sang người khác qua một khoảng cách rất xa mà không nhờ tới một [[phương tiện]] [[thông tin]] [[kĩ thuật]] nào (không phải bằng [[thư từ]], [[điện báo]], [[điện thoại]], v.v.).
==={{ĐM|ref}}===
* {{R:Tratu}}
21ozkgzyw2a3grvhd41b8o0varn25in
đấu tranh tư tưởng
0
400213
2362931
2026-05-31T07:20:31Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|noun}}=== {{vi-noun|head=[[đấu tranh]] [[tư tưởng]]}} # [[hình thái|Hình thái]] [[đấu tranh]] [[giai cấp]] trên [[lĩnh vực]] [[tư tưởng]]. # Cuộc đấu tranh [[khắc phục]] những tư tưởng không đúng bằng [[phê bình]] và tự phê bình. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362931
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|noun}}===
{{vi-noun|head=[[đấu tranh]] [[tư tưởng]]}}
# [[hình thái|Hình thái]] [[đấu tranh]] [[giai cấp]] trên [[lĩnh vực]] [[tư tưởng]].
# Cuộc đấu tranh [[khắc phục]] những tư tưởng không đúng bằng [[phê bình]] và tự phê bình.
==={{ĐM|ref}}===
* {{R:Tratu}}
8sn27inllcg5f6856gmdyct7t0f7rfr
đầu trâu mặt ngựa
0
400214
2362932
2026-05-31T07:27:12Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|idiom}} # [[ví|Ví]] những kẻ [[côn đồ]] [[hung ác]], không còn tính người. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362932
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|idiom}}
# [[ví|Ví]] những kẻ [[côn đồ]] [[hung ác]], không còn tính người.
==={{ĐM|ref}}===
* {{R:Tratu}}
6en5748wr4556iaa2m3ps0znh6ej72l
2362933
2362932
2026-05-31T07:27:32Z
Trong Dang
52461
/* Thành ngữ */
2362933
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[ví|Ví]] những kẻ [[côn đồ]] [[hung ác]], không còn tính người.
==={{ĐM|ref}}===
* {{R:Tratu}}
agxen491rlcraekb2xos8ggjtxjm8yo
2362956
2362933
2026-05-31T08:35:50Z
Trong Dang
52461
/* Thành ngữ */
2362956
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[ví|Ví]] những kẻ [[côn đồ]] [[hung ác]], không còn tính người.
==={{ĐM|ref}}===
* {{R:Tratu}}
shk0bi5r9jcpwm8d0uweq92sbds0nym
đầu trộm đuôi cướp
0
400215
2362934
2026-05-31T07:30:59Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # Chỉ những kẻ chuyên nghề [[trộm cướp]]. #: {{ux|vi|Một bọn toàn những '''đầu trộm đuôi cướp'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362934
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# Chỉ những kẻ chuyên nghề [[trộm cướp]].
#: {{ux|vi|Một bọn toàn những '''đầu trộm đuôi cướp'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
pw5s3wq6q3j4thsb9ky56xqoy1jeez2
2362955
2362934
2026-05-31T08:35:40Z
Trong Dang
52461
2362955
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# Chỉ những kẻ chuyên nghề [[trộm cướp]].
#: {{ux|vi|Một bọn toàn những '''đầu trộm đuôi cướp'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
bs38wsgc46jkzprg3f389jgh5mq3wtv
ngàn cân treo sợi tóc
0
400216
2362935
2026-05-31T07:37:02Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # [[ví|Ví]] [[tình thế]], [[tình trạng]] [[hết sức]] [[nguy ngập]], [[hiểm nghèo]], khó bề [[vượt qua]], [[cứu vãn]] nổi #: {{ux|vi|Vận mệnh đất nước đang '''ngàn cân treo sợi tóc'''.}} ===={{ĐM|syn}}==== * {{l|vi|nghìn cân treo sợi tóc}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362935
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[ví|Ví]] [[tình thế]], [[tình trạng]] [[hết sức]] [[nguy ngập]], [[hiểm nghèo]], khó bề [[vượt qua]], [[cứu vãn]] nổi
#: {{ux|vi|Vận mệnh đất nước đang '''ngàn cân treo sợi tóc'''.}}
===={{ĐM|syn}}====
* {{l|vi|nghìn cân treo sợi tóc}}
==={{ĐM|ref}}===
* {{R:Tratu}}
7gc648mzmvrlxpygg71jc18mdhb48jv
2362954
2362935
2026-05-31T08:35:31Z
Trong Dang
52461
/* Thành ngữ */
2362954
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[ví|Ví]] [[tình thế]], [[tình trạng]] [[hết sức]] [[nguy ngập]], [[hiểm nghèo]], khó bề [[vượt qua]], [[cứu vãn]] nổi
#: {{ux|vi|Vận mệnh đất nước đang '''ngàn cân treo sợi tóc'''.}}
===={{ĐM|syn}}====
* {{l|vi|nghìn cân treo sợi tóc}}
==={{ĐM|ref}}===
* {{R:Tratu}}
kbmerk82q3d4amvqq9vgezn3qicrmhz
ăn chắc mặc bền
0
400217
2362937
2026-05-31T07:51:46Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # Trong [[sinh hoạt]] thường ngày [[chú trọng]] về mặt [[chất lượng]] chứ không chú trọng đến vẻ [[hình thức]], [[bề ngoài]] (như ăn thì cần loại thức ăn [[chắc dạ]] còn mặc thì cần loại vải bền). ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362937
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# Trong [[sinh hoạt]] thường ngày [[chú trọng]] về mặt [[chất lượng]] chứ không chú trọng đến vẻ [[hình thức]], [[bề ngoài]] (như ăn thì cần loại thức ăn [[chắc dạ]] còn mặc thì cần loại vải bền).
==={{ĐM|ref}}===
* {{R:Tratu}}
ozondjjgk1w326tyxvg313xcelt5ngg
2362953
2362937
2026-05-31T08:35:19Z
Trong Dang
52461
/* Thành ngữ */
2362953
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# Trong [[sinh hoạt]] thường ngày [[chú trọng]] về mặt [[chất lượng]] chứ không chú trọng đến vẻ [[hình thức]], [[bề ngoài]] (như ăn thì cần loại thức ăn [[chắc dạ]] còn mặc thì cần loại vải bền).
==={{ĐM|ref}}===
* {{R:Tratu}}
3sekboo7ua4xxr82ejlnftfb2tx38rt
ăn tục nói phét
0
400218
2362938
2026-05-31T07:55:27Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # {{nhãn|vi|khẩu ngữ}} [[ăn nói|Ăn nói]] [[thô tục]], [[ba hoa]] (thiếu [[văn hoá]]) #: {{ux|vi|Chỉ được cái '''ăn tục nói phét'''!}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362938
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# {{nhãn|vi|khẩu ngữ}} [[ăn nói|Ăn nói]] [[thô tục]], [[ba hoa]] (thiếu [[văn hoá]])
#: {{ux|vi|Chỉ được cái '''ăn tục nói phét'''!}}
==={{ĐM|ref}}===
* {{R:Tratu}}
rbbb0zfaqlb5ayt60x76x8z1k8klo29
2362952
2362938
2026-05-31T08:35:08Z
Trong Dang
52461
/* Thành ngữ */
2362952
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# {{nhãn|vi|khẩu ngữ}} [[ăn nói|Ăn nói]] [[thô tục]], [[ba hoa]] (thiếu [[văn hoá]])
#: {{ux|vi|Chỉ được cái '''ăn tục nói phét'''!}}
==={{ĐM|ref}}===
* {{R:Tratu}}
apxc5deze8opm9piuhcxmwigt7ukx9g
bắt cá hai tay
0
400219
2362940
2026-05-31T08:01:06Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # [[ví|Ví]] việc cùng một lúc hướng vào hai [[đối tượng]], hai [[phía]], v.v. (thường là [[đối nghịch]] nhau) để thu được nhiều [[lợi]] hơn hoặc để [[chắc chắn]], nếu có [[hỏng]] bên này thì cũng còn được bên kia. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362940
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[ví|Ví]] việc cùng một lúc hướng vào hai [[đối tượng]], hai [[phía]], v.v. (thường là [[đối nghịch]] nhau) để thu được nhiều [[lợi]] hơn hoặc để [[chắc chắn]], nếu có [[hỏng]] bên này thì cũng còn được bên kia.
==={{ĐM|ref}}===
* {{R:Tratu}}
jzkqd74qlh8x1l1wsb3k94hpen9porg
2362951
2362940
2026-05-31T08:34:57Z
Trong Dang
52461
2362951
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[ví|Ví]] việc cùng một lúc hướng vào hai [[đối tượng]], hai [[phía]], v.v. (thường là [[đối nghịch]] nhau) để thu được nhiều [[lợi]] hơn hoặc để [[chắc chắn]], nếu có [[hỏng]] bên này thì cũng còn được bên kia.
==={{ĐM|ref}}===
* {{R:Tratu}}
25ttcc2t51grivl5g34qvbjk8dvpanf
cây nhà lá vườn
0
400220
2362941
2026-05-31T08:09:51Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # [[hoa quả|Hoa quả]] và nói chung những [[thứ tự]] nhà mình làm ra (dùng để nói về quà đem biếu hoặc mời khách) #: {{ux|vi|Biếu anh mấy quả cam, '''cây nhà lá vườn'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362941
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[hoa quả|Hoa quả]] và nói chung những [[thứ tự]] nhà mình làm ra (dùng để nói về quà đem biếu hoặc mời khách)
#: {{ux|vi|Biếu anh mấy quả cam, '''cây nhà lá vườn'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
axch5e0tbhudow1w7i3thk4bhs16gq1
2362942
2362941
2026-05-31T08:10:06Z
Trong Dang
52461
2362942
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[hoa quả|Hoa quả]] và nói chung những [[thứ tự]] nhà mình làm ra (dùng để nói về quà đem biếu hoặc mời khách).
#: {{ux|vi|Biếu anh mấy quả cam, '''cây nhà lá vườn'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
d7kirc1v39o85ebh932htfeb1o1m8cm
2362950
2362942
2026-05-31T08:34:47Z
Trong Dang
52461
/* Thành ngữ */
2362950
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[hoa quả|Hoa quả]] và nói chung những [[thứ tự]] nhà mình làm ra (dùng để nói về quà đem biếu hoặc mời khách).
#: {{ux|vi|Biếu anh mấy quả cam, '''cây nhà lá vườn'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
b0ah0pfcg3mkm5zbyhnze51u13e5gey
còn nước còn tát
0
400221
2362943
2026-05-31T08:14:17Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # [[ví|Ví]] [[trường hợp]] còn một chút [[hi vọng]] nào dù là [[mong manh]], thì còn ra sức [[cứu chữa]] đến cùng #: {{ux|vi|Trúng phong nặng lắm... Nhưng còn nước còn tát, con tin còn cứu được! ([[w:Đoàn Giỏi|Đoàn Giỏi]]; 5)}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362943
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[ví|Ví]] [[trường hợp]] còn một chút [[hi vọng]] nào dù là [[mong manh]], thì còn ra sức [[cứu chữa]] đến cùng
#: {{ux|vi|Trúng phong nặng lắm... Nhưng còn nước còn tát, con tin còn cứu được! ([[w:Đoàn Giỏi|Đoàn Giỏi]]; 5)}}
==={{ĐM|ref}}===
* {{R:Tratu}}
mvzdviy88nn3o9unapr3h1uxzldy4ar
2362944
2362943
2026-05-31T08:14:24Z
Trong Dang
52461
2362944
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[ví|Ví]] [[trường hợp]] còn một chút [[hi vọng]] nào dù là [[mong manh]], thì còn ra sức [[cứu chữa]] đến cùng.
#: {{ux|vi|Trúng phong nặng lắm... Nhưng còn nước còn tát, con tin còn cứu được! ([[w:Đoàn Giỏi|Đoàn Giỏi]]; 5)}}
==={{ĐM|ref}}===
* {{R:Tratu}}
bgbh4jqdv1mav2s5393pikyx5iecdgw
2362945
2362944
2026-05-31T08:15:21Z
Trong Dang
52461
/* Thành ngữ */
2362945
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[ví|Ví]] [[trường hợp]] còn một chút [[hi vọng]] nào dù là [[mong manh]], thì còn ra sức [[cứu chữa]] đến cùng.
#: {{ux|vi|Trúng phong nặng lắm... Nhưng '''còn nước còn tát''', con tin còn cứu được! ([[w:Đoàn Giỏi|Đoàn Giỏi]]; 5)}}
==={{ĐM|ref}}===
* {{R:Tratu}}
gdx4lg0w1li0ot85ju1bkrzic03xl08
2362949
2362945
2026-05-31T08:34:34Z
Trong Dang
52461
/* Thành ngữ */
2362949
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[ví|Ví]] [[trường hợp]] còn một chút [[hi vọng]] nào dù là [[mong manh]], thì còn ra sức [[cứu chữa]] đến cùng.
#: {{ux|vi|Trúng phong nặng lắm... Nhưng '''còn nước còn tát''', con tin còn cứu được! ([[w:Đoàn Giỏi|Đoàn Giỏi]]; 5)}}
==={{ĐM|ref}}===
* {{R:Tratu}}
alrgf0gp6zu6df5dtn2az2sxuwunpmd
đàn gảy tai trâu
0
400222
2362946
2026-05-31T08:20:47Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{head|vi|Thành ngữ}} # [[ví|Ví]] việc làm [[uổng công]] vì đã đưa cái [[hay]], cái [[đẹp]] đến với một [[đối tượng]] không có [[khả năng]] [[tiếp thu]], không có khả năng [[thưởng thức]]. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362946
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{head|vi|Thành ngữ}}
# [[ví|Ví]] việc làm [[uổng công]] vì đã đưa cái [[hay]], cái [[đẹp]] đến với một [[đối tượng]] không có [[khả năng]] [[tiếp thu]], không có khả năng [[thưởng thức]].
==={{ĐM|ref}}===
* {{R:Tratu}}
qvszg7weupfidebam3valkzw8ulerei
2362948
2362946
2026-05-31T08:34:16Z
Trong Dang
52461
2362948
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[ví|Ví]] việc làm [[uổng công]] vì đã đưa cái [[hay]], cái [[đẹp]] đến với một [[đối tượng]] không có [[khả năng]] [[tiếp thu]], không có khả năng [[thưởng thức]].
==={{ĐM|ref}}===
* {{R:Tratu}}
pulr39juu4fyqamkkqael30gp7f5p9j
tá túc
0
400223
2362957
2026-05-31T08:47:26Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|etym}}=== {{vi-etym-sino|借宿}}. ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|verb}}=== {{vi-verb}} # [[ngủ|Ngủ]] [[nhờ]] hoặc [[ở]] nhờ. #: {{ux|vi|Xin '''tá túc''' một đêm.}} #: {{ux|vi|'''Tá túc''' ở nhà một người bạn.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362957
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{vi-etym-sino|借宿}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|verb}}===
{{vi-verb}}
# [[ngủ|Ngủ]] [[nhờ]] hoặc [[ở]] nhờ.
#: {{ux|vi|Xin '''tá túc''' một đêm.}}
#: {{ux|vi|'''Tá túc''' ở nhà một người bạn.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
ttx6uvvzpio9b2l61i3if59evmrtnry
tự cung tự cấp
0
400224
2362958
2026-05-31T08:51:49Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|verb}}=== {{vi-verb}} # {{like-entry|tự cấp tự túc}}. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362958
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|verb}}===
{{vi-verb}}
# {{like-entry|tự cấp tự túc}}.
==={{ĐM|ref}}===
* {{R:Tratu}}
5eahf3fqpgcw1hskj21sn6nqexg9ypz
tự cấp tự túc
0
400225
2362959
2026-05-31T08:54:34Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|verb}}=== {{vi-verb}} # [[sản xuất|Sản xuất]] ra nhằm [[thoả mãn]] [[yêu cầu]] [[tiêu dùng]] của mình, không [[trao đổi]] trên [[thị trường]]. #: {{ux|vi|Nền kinh tế '''tự cấp tự túc'''.}} ===={{ĐM|syn}}==== * {{l|vi|tự cung tự cấp}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362959
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|verb}}===
{{vi-verb}}
# [[sản xuất|Sản xuất]] ra nhằm [[thoả mãn]] [[yêu cầu]] [[tiêu dùng]] của mình, không [[trao đổi]] trên [[thị trường]].
#: {{ux|vi|Nền kinh tế '''tự cấp tự túc'''.}}
===={{ĐM|syn}}====
* {{l|vi|tự cung tự cấp}}
==={{ĐM|ref}}===
* {{R:Tratu}}
gi7g8nzb9rfmqgwz215dygydzo1culz
tân trang
0
400226
2362960
2026-05-31T08:58:58Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|etym}}=== {{vi-etym-sino|新裝}}. ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|verb}}=== {{vi-verb}} # [[sửa sang|Sửa sang]], làm lại cho có vẻ như [[mới]]. #: {{ux|vi|'''Tân trang''' nhà cửa.}} #: {{ux|vi|Chiếc xe cũ mới được '''tân trang'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362960
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{vi-etym-sino|新裝}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|verb}}===
{{vi-verb}}
# [[sửa sang|Sửa sang]], làm lại cho có vẻ như [[mới]].
#: {{ux|vi|'''Tân trang''' nhà cửa.}}
#: {{ux|vi|Chiếc xe cũ mới được '''tân trang'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
eme6bobgdon5d0biaqfdga4b48888t5
ăn may
0
400227
2362961
2026-05-31T09:06:40Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|verb}}=== {{vi-verb}} # {{nhãn|vi|khẩu ngữ}} [[có|Có]] được, [[đạt]] được do [[may mắn]] chứ không phải do [[thực lực]]. #: {{ux|vi|Trận ấy thắng được là do '''ăn may'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362961
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|verb}}===
{{vi-verb}}
# {{nhãn|vi|khẩu ngữ}} [[có|Có]] được, [[đạt]] được do [[may mắn]] chứ không phải do [[thực lực]].
#: {{ux|vi|Trận ấy thắng được là do '''ăn may'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
esq6onw04m5w62dducqizqdyg5nxc0u
2362962
2362961
2026-05-31T09:11:57Z
Trong Dang
52461
/* Tiếng Việt */
2362962
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{com|vi|ăn|may}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|verb}}===
{{vi-verb}}
# {{nhãn|vi|khẩu ngữ}} [[có|Có]] được, [[đạt]] được do [[may mắn]] chứ không phải do [[thực lực]].
#: {{ux|vi|Trận ấy thắng được là do '''ăn may'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
2sdf60f0aaiark8tdusmn8tnktyvcvq
lấy độc trị độc
0
400228
2362963
2026-05-31T09:32:48Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # [[dùng|Dùng]] [[thuốc]] có [[chất độc]] để [[trị bệnh]] [[ác tính]]; thường dùng để ví việc dùng ngay những [[yếu tố]] [[bất lương]] để chống lại cái bất lương, [[lợi dụng]] kẻ ác để trừ kẻ ác. ===={{ĐM|syn}}==== * {{l|vi|dĩ độc trị độc}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362963
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[dùng|Dùng]] [[thuốc]] có [[chất độc]] để [[trị bệnh]] [[ác tính]]; thường dùng để ví việc dùng ngay những [[yếu tố]] [[bất lương]] để chống lại cái bất lương, [[lợi dụng]] kẻ ác để trừ kẻ ác.
===={{ĐM|syn}}====
* {{l|vi|dĩ độc trị độc}}
==={{ĐM|ref}}===
* {{R:Tratu}}
7kktlahc119mzogvgptd9yf441rb5yj
lực bất tòng tâm
0
400229
2362964
2026-05-31T09:35:22Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # [[khả năng|Khả năng]] không đủ để [[thực hiện]] điều [[mong muốn]]. #: {{ux|vi|Dù đã rất cố gắng, nhưng '''lực bất tòng tâm'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362964
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[khả năng|Khả năng]] không đủ để [[thực hiện]] điều [[mong muốn]].
#: {{ux|vi|Dù đã rất cố gắng, nhưng '''lực bất tòng tâm'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
4e9iax78zhiml1ub1whnoi19fq3xbrf
2362965
2362964
2026-05-31T09:36:02Z
Trong Dang
52461
/* Tiếng Việt */
2362965
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{vi-etym-sino|力不從心}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[khả năng|Khả năng]] không đủ để [[thực hiện]] điều [[mong muốn]].
#: {{ux|vi|Dù đã rất cố gắng, nhưng '''lực bất tòng tâm'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
oojudlycgxn2s0glfkd1j5rze2xs3ea
phá gia chi tử
0
400230
2362966
2026-05-31T09:39:23Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # Đứa con làm [[tan nát]] [[tài sản]] của [[gia đình]]; cũng dùng để chỉ kẻ [[ăn chơi]] [[hoang toàng]]. #: {{ux|vi|Đồ '''phá gia chi tử'''!}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362966
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# Đứa con làm [[tan nát]] [[tài sản]] của [[gia đình]]; cũng dùng để chỉ kẻ [[ăn chơi]] [[hoang toàng]].
#: {{ux|vi|Đồ '''phá gia chi tử'''!}}
==={{ĐM|ref}}===
* {{R:Tratu}}
5hkn1lovi7cvzjrlmbkg3r05zmt8o0l
tai to mặt lớn
0
400231
2362967
2026-05-31T09:42:54Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # Chỉ người có [[quyền thế]], [[địa vị]] trong [[xã hội]] ([[hàm ý]] không [[coi trọng]]). #: {{ux|vi|Những '''kẻ tai to mặt lớn'''.}} #: {{ux|vi|Thuộc hạng '''tai to mặt lớn''' trong tỉnh.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362967
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# Chỉ người có [[quyền thế]], [[địa vị]] trong [[xã hội]] ([[hàm ý]] không [[coi trọng]]).
#: {{ux|vi|Những '''kẻ tai to mặt lớn'''.}}
#: {{ux|vi|Thuộc hạng '''tai to mặt lớn''' trong tỉnh.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
9mama5poc3kq0jsth2cozht55ww9s3d
tâm phục khẩu phục
0
400232
2362968
2026-05-31T09:45:23Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # [[phục|Phục]] tự đáy lòng, chứ không phải chỉ nói ngoài miệng. #: {{ux|vi|Sự xét xử công minh của tòa án khiến các bị cáo '''tâm phục khẩu phục'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362968
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[phục|Phục]] tự đáy lòng, chứ không phải chỉ nói ngoài miệng.
#: {{ux|vi|Sự xét xử công minh của tòa án khiến các bị cáo '''tâm phục khẩu phục'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
t1q4jbf8arseek4zqkipbjrlybvx73u
2362969
2362968
2026-05-31T09:45:53Z
Trong Dang
52461
/* Thành ngữ */
2362969
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom|head=[[tâm phục]] [[khẩu phục]]}}
# [[phục|Phục]] tự đáy lòng, chứ không phải chỉ nói ngoài miệng.
#: {{ux|vi|Sự xét xử công minh của tòa án khiến các bị cáo '''tâm phục khẩu phục'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
j3r9xfr4rhrgp3t2g097m5fqwrzij55
thầy bói xem voi
0
400233
2362970
2026-05-31T09:48:30Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # Ví việc [[đánh giá]] [[sự vật]], [[sự việc]] một cách [[phiếm diện]], [[một chiều]], thiếu sự [[xem xét]] [[toàn diện]]. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362970
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# Ví việc [[đánh giá]] [[sự vật]], [[sự việc]] một cách [[phiếm diện]], [[một chiều]], thiếu sự [[xem xét]] [[toàn diện]].
==={{ĐM|ref}}===
* {{R:Tratu}}
r6nottfum0w2xjowmqtyi0w9nrz2jty
thượng lộ bình an
0
400234
2362971
2026-05-31T09:50:35Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # [[lên đường|Lên đường]] [[bình yên]] (thường dùng trong lời chúc người đi xa) #: {{ux|vi|Chúc quý khách '''thượng lộ bình an'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362971
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[lên đường|Lên đường]] [[bình yên]] (thường dùng trong lời chúc người đi xa)
#: {{ux|vi|Chúc quý khách '''thượng lộ bình an'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
9mzwbn1r6zm20v8jdqqkmpz7hbelhnr
2362972
2362971
2026-05-31T09:51:11Z
Trong Dang
52461
2362972
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[lên đường|Lên đường]] [[bình yên]] (thường dùng trong lời chúc người đi xa).
#: {{ux|vi|Chúc quý khách '''thượng lộ bình an'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
lxzktz1cj8h3dej0m64h2l48n12zefj
tự biên tự diễn
0
400235
2362974
2026-05-31T09:53:59Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # [[tự|Tự]] [[sáng tác]] và [[biểu diễn]] một cách không [[chuyên nghiệp]]. #: {{ux|vi|Vở chèo do đội văn nghệ xã '''tự biên tự diễn'''.}} ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362974
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[tự|Tự]] [[sáng tác]] và [[biểu diễn]] một cách không [[chuyên nghiệp]].
#: {{ux|vi|Vở chèo do đội văn nghệ xã '''tự biên tự diễn'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
jee0nuxjfdp19xs4w605ckxgk6ykvb1
2362978
2362974
2026-05-31T10:37:15Z
Hiyuune
50834
/* Tiếng Việt */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2362978
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|etym}}===
{{vi-etym-sino|自編自演}}.
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|v}}===
{{vi-verb}}
# {{lb|vi|idiomatic}} [[tự|Tự]] [[sáng tác]] và [[biểu diễn]] một cách không [[chuyên nghiệp]].
#: {{ux|vi|Vở chèo do đội văn nghệ xã '''tự biên tự diễn'''.}}
==={{ĐM|ref}}===
* {{R:Tratu}}
lfv63wxyb4d2z68cmr7k2wpl3n3uk6m
đồng cam cộng khổ
0
400236
2362975
2026-05-31T09:56:40Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # [[vui sướng|Vui sướng]] cùng [[hưởng]], [[cực khổ]] cùng [[chịu]] (trong mọi [[hoàn cảnh]] đều có nhau). ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362975
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# [[vui sướng|Vui sướng]] cùng [[hưởng]], [[cực khổ]] cùng [[chịu]] (trong mọi [[hoàn cảnh]] đều có nhau).
==={{ĐM|ref}}===
* {{R:Tratu}}
ffpjaappdnw22nor55fd44h3ikm8nsw
trường sinh bất lão
0
400237
2362976
2026-05-31T10:06:09Z
Trong Dang
52461
Trang mới: “=={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|idiom}}=== {{vi-idiom}} # {{nhãn|vi|từ cũ}} [[trẻ|Trẻ]] [[mãi]] không [[già]]. ==={{ĐM|ref}}=== * {{R:Tratu}}”
2362976
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom}}
# {{nhãn|vi|từ cũ}} [[trẻ|Trẻ]] [[mãi]] không [[già]].
==={{ĐM|ref}}===
* {{R:Tratu}}
ncx6yb2n9ste067bgn9bud0kjdui3h6
2362977
2362976
2026-05-31T10:06:36Z
Trong Dang
52461
/* Tiếng Việt */
2362977
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-IPA}}
==={{ĐM|idiom}}===
{{vi-idiom|head=[[trường sinh]] [[bất]] [[lão]]}}
# {{nhãn|vi|từ cũ}} [[trẻ|Trẻ]] [[mãi]] không [[già]].
==={{ĐM|ref}}===
* {{R:Tratu}}
apziok9f8kmflp7is5wj61e8wkjkbde
謔
0
400238
2362979
2026-05-31T10:41:14Z
Hiyuune
50834
Trang mới: “{{also|谑}} {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=149|rad=言|as=10|sn=17|four=01614|canj=YRYPM|ids=⿰訁虐}} ===={{section|ref}}==== * {{Han ref|kx=1175.090|dkj=35810|dj=1639.260|hdz=63996.130|uh=8B14}} =={{langname|zh}}== {{zh-forms|s=谑}} ==={{section|glyph origin}}=== {{Han etym}} ==={{section|pron}}=== {{zh-pron |m=謔 |c=joek6 |h=gd=hiog5 |md= |mn=xm,qz,tw:gio̍h/xm,qz,tw:hiok/zz:hiak/tw:giok/twv:giak/xm:hio̍k/tw:gio̍…”
2362979
wikitext
text/x-wiki
{{also|谑}}
{{character info}}
=={{langname|mul}}==
==={{section|han}}===
{{Han char|rn=149|rad=言|as=10|sn=17|four=01614|canj=YRYPM|ids=⿰訁虐}}
===={{section|ref}}====
* {{Han ref|kx=1175.090|dkj=35810|dj=1639.260|hdz=63996.130|uh=8B14}}
=={{langname|zh}}==
{{zh-forms|s=谑}}
==={{section|glyph origin}}===
{{Han etym}}
==={{section|pron}}===
{{zh-pron
|m=謔
|c=joek6
|h=gd=hiog5
|md=
|mn=xm,qz,tw:gio̍h/xm,qz,tw:hiok/zz:hiak/tw:giok/twv:giak/xm:hio̍k/tw:gio̍k
|mn_note=gio̍h - ngôn ngữ bản địa; hiok/hiak - ngôn ngữ văn chương
|mn-t=ngiag8
|px=pt:goeh7/xy:gyoeh7
|w=
|mc=y
|oc=y
|cat=v
}}
==={{section|dfn}}===
{{head|zh|hanzi}}
# {{lb|zh|literary|or|Hokkien}} [[nói|Nói]] [[đùa]], [[giễu cợt]], [[trêu chọc]].
# {{lb|zh|obs-std}} [[vui mừng|Vui mừng]]; [[vui sướng]].
===={{section|com}}====
{{col3|zh|南樓詠謔|嘲謔|俳謔|戲謔|謔浪笑敖|謔稱|謔而不虐|雅謔|謔謔|謔親|調謔|謔浪|謔浪話頭|諧謔|nan:謔喙訣|nan:謔喙|nan:謔潲|nan:謔燒}}
==={{section|ref}}===
* {{R:cpx:PHMZ|271}}
rocc6foc2vw2ttz4w3grb53bjpoxcr4
2362980
2362979
2026-05-31T10:41:58Z
Hiyuune
50834
/* Tham khảo */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2362980
wikitext
text/x-wiki
{{also|谑}}
{{character info}}
=={{langname|mul}}==
==={{section|han}}===
{{Han char|rn=149|rad=言|as=10|sn=17|four=01614|canj=YRYPM|ids=⿰訁虐}}
===={{section|ref}}====
* {{Han ref|kx=1175.090|dkj=35810|dj=1639.260|hdz=63996.130|uh=8B14}}
=={{langname|ja}}==
==={{section|kanji}}===
{{ja-kanji|grade=|rs=言10}}
===={{section|reading}}====
{{ja-readings
|goon=かく
|kanon=きゃく
|kanyoon=ぎゃく
|kun=たわむ-れる
}}
=={{langname|zh}}==
{{zh-forms|s=谑}}
==={{section|glyph origin}}===
{{Han etym}}
==={{section|pron}}===
{{zh-pron
|m=謔
|c=joek6
|h=gd=hiog5
|md=
|mn=xm,qz,tw:gio̍h/xm,qz,tw:hiok/zz:hiak/tw:giok/twv:giak/xm:hio̍k/tw:gio̍k
|mn_note=gio̍h - ngôn ngữ bản địa; hiok/hiak - ngôn ngữ văn chương
|mn-t=ngiag8
|px=pt:goeh7/xy:gyoeh7
|w=
|mc=y
|oc=y
|cat=v
}}
==={{section|dfn}}===
{{head|zh|hanzi}}
# {{lb|zh|literary|or|Hokkien}} [[nói|Nói]] [[đùa]], [[giễu cợt]], [[trêu chọc]].
# {{lb|zh|obs-std}} [[vui mừng|Vui mừng]]; [[vui sướng]].
===={{section|com}}====
{{col3|zh|南樓詠謔|嘲謔|俳謔|戲謔|謔浪笑敖|謔稱|謔而不虐|雅謔|謔謔|謔親|調謔|謔浪|謔浪話頭|諧謔|nan:謔喙訣|nan:謔喙|nan:謔潲|nan:謔燒}}
==={{section|ref}}===
* {{R:cpx:PHMZ|271}}
fjl97xd80j7a54m23ix080mhn4fkpsi
谑
0
400239
2362981
2026-05-31T10:42:45Z
Hiyuune
50834
Trang mới: “{{also|謔}} {{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=149|rad=讠|as=09|sn=11|four=|canj=IVYPM|ids=⿰讠虐}} ===={{ĐM|ref}}==== * {{Han ref|kx=1188.181|hdz=63996.140|uh=8C11}} =={{langname|zh}}== ==={{ĐM|glyph origin}}=== {{Han simp|謔|f=訁|t=讠}}. ==={{ĐM|dfn}}=== {{zh-see|謔}}”
2362981
wikitext
text/x-wiki
{{also|謔}}
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=149|rad=讠|as=09|sn=11|four=|canj=IVYPM|ids=⿰讠虐}}
===={{ĐM|ref}}====
* {{Han ref|kx=1188.181|hdz=63996.140|uh=8C11}}
=={{langname|zh}}==
==={{ĐM|glyph origin}}===
{{Han simp|謔|f=訁|t=讠}}.
==={{ĐM|dfn}}===
{{zh-see|謔}}
s768uxe0dadg2r5cxvfxz75bixvjs04
nüè
0
400240
2362982
2026-05-31T10:43:35Z
Hiyuune
50834
+ cmn
2362982
wikitext
text/x-wiki
{{also|nue|nuée|nüe}}
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{cmn-pinyin of|䖈}}
# {{cmn-pinyin of|䖋}}
# {{cmn-pinyin of|䨋}}
# {{cmn-pinyin of|疟}}
# {{cmn-pinyin of|瘧}}
# {{cmn-pinyin of|硸}}
# {{cmn-pinyin of|虐}}
# {{cmn-pinyin of|𨵫}}
b8usv5s27cx778ktaqsfaev7yxf5g4c
nüe4
0
400241
2362983
2026-05-31T10:44:08Z
Hiyuune
50834
Trang mới: “{{also|nue4}} =={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{alternative spelling of|cmn|nüè}}”
2362983
wikitext
text/x-wiki
{{also|nue4}}
=={{langname|cmn}}==
==={{ĐM|rom}}===
{{cmn-pinyin}}
# {{alternative spelling of|cmn|nüè}}
fl3hudfgg1igzuvict55o4pi3p2hzo3
Mô đun:zh/data/ltc-pron/謔
828
400242
2362984
2026-05-31T10:46:21Z
Hiyuune
50834
Trang mới: “return { "曉陽三開 入虚約" }”
2362984
Scribunto
text/plain
return {
"曉陽三開 入虚約"
}
3z84lxsig1nltguppmg2sgp9mtrxxyw
Mô đun:zh/data/och-pron-ZS/謔
828
400243
2362985
2026-05-31T10:47:23Z
Hiyuune
50834
Trang mới: “return { { "9638", "虐", "藥", "1", "", "hŋawɢ", "" }, }”
2362985
Scribunto
text/plain
return {
{ "9638", "虐", "藥", "1", "", "hŋawɢ", "" },
}
i1b8xe9czcsgougpt45p2e7f6aqwk4f
joek6
0
400244
2362986
2026-05-31T10:49:55Z
Hiyuune
50834
Trang mới: “=={{langname|yue}}== ==={{ĐM|pron}}=== * {{Jyutping-IPA|joek6}} ==={{ĐM|rom}}=== {{yue-jyut}} # {{yue-jyutping of|弱}} # {{yue-jyutping of|若}}”
2362986
wikitext
text/x-wiki
=={{langname|yue}}==
==={{ĐM|pron}}===
* {{Jyutping-IPA|joek6}}
==={{ĐM|rom}}===
{{yue-jyut}}
# {{yue-jyutping of|弱}}
# {{yue-jyutping of|若}}
a5z35atu4nbju2y4alt911r5x9932wq
giok
0
400245
2362987
2026-05-31T10:51:57Z
Hiyuune
50834
Trang mới: “{{also|gio̍k}} =={{langname|id}}== ==={{section|etym}}=== Từ {{bor|id|nan-hbl|-}} {{zh-l|玉|tr=gio̍k}}. So sánh với {{cog|th|หยก}}, {{cog|lo|ຢົກ}}. ==={{section|pron}}=== {{id-pr|gyoq,gyok,giok|syll=giok,gi.ok}} ==={{section|n}}=== {{id-noun}} # [[ngọc thạch|Ngọc thạch]]. ==={{section|further}}=== * {{R:KBBI Daring}} =={{langname|jv}}== ==={{section|etym}}=== Cuối cùng từ {{bor|jv|nan-hbl|-}} {{zh-l|玉|tr=gio̍k}}. ==={{section|n}…”
2362987
wikitext
text/x-wiki
{{also|gio̍k}}
=={{langname|id}}==
==={{section|etym}}===
Từ {{bor|id|nan-hbl|-}} {{zh-l|玉|tr=gio̍k}}. So sánh với {{cog|th|หยก}}, {{cog|lo|ຢົກ}}.
==={{section|pron}}===
{{id-pr|gyoq,gyok,giok|syll=giok,gi.ok}}
==={{section|n}}===
{{id-noun}}
# [[ngọc thạch|Ngọc thạch]].
==={{section|further}}===
* {{R:KBBI Daring}}
=={{langname|jv}}==
==={{section|etym}}===
Cuối cùng từ {{bor|jv|nan-hbl|-}} {{zh-l|玉|tr=gio̍k}}.
==={{section|n}}===
{{jv-noun}}
# [[ngọc thạch|Ngọc thạch]]
=={{langname|nan-hbl}}==
{{zh-see|逐|poj}}
eesumr2pi4tcf81d831kt4o89rzflsc
2362989
2362987
2026-05-31T10:54:54Z
Hiyuune
50834
/* Tiếng Mân Tuyền Chương */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2362989
wikitext
text/x-wiki
{{also|gio̍k}}
=={{langname|id}}==
==={{section|etym}}===
Từ {{bor|id|nan-hbl|-}} {{zh-l|玉|tr=gio̍k}}. So sánh với {{cog|th|หยก}}, {{cog|lo|ຢົກ}}.
==={{section|pron}}===
{{id-pr|gyoq,gyok,giok|syll=giok,gi.ok}}
==={{section|n}}===
{{id-noun}}
# [[ngọc thạch|Ngọc thạch]].
==={{section|further}}===
* {{R:KBBI Daring}}
=={{langname|jv}}==
==={{section|etym}}===
Cuối cùng từ {{bor|jv|nan-hbl|-}} {{zh-l|玉|tr=gio̍k}}.
==={{section|n}}===
{{jv-noun}}
# [[ngọc thạch|Ngọc thạch]]
=={{langname|nan-hbl}}==
{{zh-see|謔|poj}}
0hpgly5elaasprmj9n19qxhyf40mb1j
Thể loại:Vần:Tiếng Litva/ɐɪˑɡʒʲdʲɛɪ
14
400246
2362991
2026-05-31T10:59:30Z
Hiyuune
50834
Trang mới: “{{auto cat}}”
2362991
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
gio̍h
0
400247
2362993
2026-05-31T11:25:30Z
Hiyuune
50834
Trang mới: “=={{langname|nan-hbl}}== {{zh-see|謔|poj}}”
2362993
wikitext
text/x-wiki
=={{langname|nan-hbl}}==
{{zh-see|謔|poj}}
rnyndqfpazyne1adxnaejwgaogw8svw
hiok
0
400248
2362994
2026-05-31T11:25:34Z
Hiyuune
50834
Trang mới: “=={{langname|nan-hbl}}== {{zh-see|謔|poj}}”
2362994
wikitext
text/x-wiki
=={{langname|nan-hbl}}==
{{zh-see|謔|poj}}
rnyndqfpazyne1adxnaejwgaogw8svw
hiak
0
400249
2362995
2026-05-31T11:25:48Z
Hiyuune
50834
Trang mới: “=={{langname|nan-hbl}}== {{zh-see|謔|poj}}”
2362995
wikitext
text/x-wiki
=={{langname|nan-hbl}}==
{{zh-see|謔|poj}}
rnyndqfpazyne1adxnaejwgaogw8svw
giak
0
400250
2362996
2026-05-31T11:25:52Z
Hiyuune
50834
Trang mới: “=={{langname|nan-hbl}}== {{zh-see|謔|poj}}”
2362996
wikitext
text/x-wiki
=={{langname|nan-hbl}}==
{{zh-see|謔|poj}}
rnyndqfpazyne1adxnaejwgaogw8svw
hio̍k
0
400251
2362997
2026-05-31T11:28:14Z
Hiyuune
50834
Trang mới: “=={{langname|nan-hbl}}== {{zh-see|謔|poj}}”
2362997
wikitext
text/x-wiki
=={{langname|nan-hbl}}==
{{zh-see|謔|poj}}
rnyndqfpazyne1adxnaejwgaogw8svw
gio̍k
0
400252
2362998
2026-05-31T11:28:17Z
Hiyuune
50834
Trang mới: “=={{langname|nan-hbl}}== {{zh-see|謔|poj}}”
2362998
wikitext
text/x-wiki
=={{langname|nan-hbl}}==
{{zh-see|謔|poj}}
rnyndqfpazyne1adxnaejwgaogw8svw