Wiktionary
viwiktionary
https://vi.wiktionary.org/wiki/Wiktionary:Trang_Ch%C3%ADnh
MediaWiki 1.47.0-wmf.21
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
Sự kiện
Thảo luận Sự kiện
duur
0
2803
2567201
2566472
2026-09-28T16:17:38Z
Hiyuune
50834
2567201
wikitext
text/x-wiki
{{also|Düür}}
=={{langname|af}}==
==={{section|etym}}===
Từ {{inh|af|nl|duur}}.
==={{section|pron}}===
* {{IPA|af|/dyr/}}
* {{audio|af|LL-Q14196 (afr)-Oesjaar-duur.wav}}
==={{section|adj}}===
{{af-adj|[[duur]] </b>''hoặc'' {{q|seldom}}<b> [[dure]]}}
# [[đắt|Đắt]].
===={{section|infl}}====
{{af-adj-table-3|attr=duur, dure|indep=dure|part=duurs|comp=duurder|sup=duurste}}
===={{section|desc}}====
* {{desc|fwe|dùrà|bor=1}}
* {{desc|kck|tura|bor=1}}
* {{desc|sn|bor=1|dhura|alt=-dhura}}
*:{{desc|ny|bor=1|dula|alt=-dula}}
* {{desc|xh|bor=1|duru|alt=-duru}}
==={{section|ref}}===
* 2007. [http://archive.phonetics.ucla.edu/ The UCLA Phonetics Lab Archive]. Los Angeles, CA: UCLA Department of Linguistics.
=={{langname|nl}}==
==={{section|pron}}===
* {{IPA|nl|/dyr/|[dyːr]|[dyər]}}
* {{audio|nl|Nl-duur.ogg}}
* {{hyphenation|nl|duur}}
* {{rhymes|nl|yr|s=1}}
* {{homophones|nl|Duur}}
==={{section|etym}} 1===
Từ {{inh|nl|dum|diere}}, {{m|dum|dure}}, từ {{inh|nl|odt|diuri}}, từ {{inh|nl|gem-pro|*diurijaz}}. {{doublet|nl|dier}}.
===={{section|adj}}====
{{nl-adj}}
# [[đắt|Đắt]].
#: {{syn|nl|prijzig|aan de prijs}}
====={{section|decl}}=====
{{nl-decl-adj|dure}}
====={{section|desc}}=====
* {{desc|af|duur}}
** {{desc|fwe|dùrà|bor=1}}
** {{desc|kck|tura|bor=1}}
** {{desc|sn|bor=1|dhura|alt=-dhura}}
***{{desc|ny|bor=1|dula|alt=-dula}}
** {{desc|xh|bor=1|duru|alt=-duru}}
* {{desc|brc|diru}}
* {{desc|jvd|dier}}
* {{desc|dcr|duur|dyer}}
* {{desc|srn|diri|bor=1|unc=1}}
** {{desc|srm|díi|bor=1}}
==={{section|etym}} 2===
Từ {{m|nl|duren}}.
===={{section|n}}====
{{nl-noun|m|-|-}}
# [[thời lượng|Thời lượng]].
====={{section|drv}}=====
{{col3|nl
|duurzaam
|gebruiksduur
|langdurig
|levensduur
|op den duur
|tijdsduur
}}
====={{section|desc}}=====
* {{desc|dcr|duur}}
==={{section|etym}} 3===
{{nonlemma}}
===={{section|v}}====
{{head|nl|Biến thể hình thái động từ}}
# {{infl of|nl|duren||bare-verb}}
==={{section|ana}}===
* {{l|nl|Ruud}}, {{l|nl|Urdu}}
=={{langname|zns}}==
==={{section|pron}}===
* {{IPA|zns|[dùːr]}}
==={{section|n}}===
{{head|zns|Danh từ}}
# [[kỳ đà|Kỳ đà]].
==={{section|ref}}===
* Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''.
{{c|zns|Lớp Bò sát}}
=={{langname|so}}==
==={{section|n}}===
{{so-noun}}
# [[rừng|Rừng]].
e6za152s4s2alyvjgwtjdg5xc8iu3ju
schrijver
0
3036
2567186
2280836
2026-09-28T15:43:31Z
Hiyuune
50834
2567186
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|etym}}===
Từ {{inh|nl|dum|schriver}}. Tương đương với {{af|nl|schrijven|-er|id2=danh từ tác nhân}}.
==={{section|pron}}===
* {{IPA|nl|/ˈsxrɛi̯vər/}}
* {{audio|nl|Nl-schrijver.ogg|a=Hà Lan}}
* {{audio|nl|Nl-schrijver (Belgium).ogg|a=Bỉ}}
* {{hyphenation|nl|schrij|ver}}
* {{rhymes|nl|ɛi̯vər|s=2}}
==={{section|n}}===
{{nl-noun|m|-s|+|f=schrijfster}}
# [[nhà văn|Nhà văn]].
# {{lb|nl|chiefly|historical}} [[thư lại|Thư lại]].
===={{section|drv}}====
{{col|nl
|broodschrijver
|geschiedschrijver
|jeugdboekenschrijver
|kroniekschrijver
|kinderboekenschrijver
|liedjesschrijver
|medeschrijver
|novellenschrijver
|romanschrijver
|schimpschrijver
|schrijverschap
|tekstschrijver
|toneelschrijver
|veelschrijver
}}
===={{section|rel}}====
* {{l|nl|schrijven}}
===={{section|desc}}====
* {{desc|af|skrywer}}
{{C|nl|Nghề nghiệp}}
f4mlcmrwcskyudnzp9jf8y2ybv1iknt
wiskunde
0
3199
2567196
2524596
2026-09-28T16:07:19Z
Hiyuune
50834
2567196
wikitext
text/x-wiki
=={{langname|af}}==
==={{section|etym}}===
Từ {{inh|af|nl|wiskunde}}.
==={{section|pron}}===
* {{audio|af|LL-Q14196 (afr)-Oesjaar-wiskunde.wav}}
==={{section|n}}===
{{af-noun|-}}
# [[toán học|Toán học]].
{{C|af|Toán học}}
=={{langname|nl}}==
{{wp|nl:}}
==={{section|pron}}===
* {{IPA|nl|/ˈʋɪsˌkʏn.də/}}
* {{audio|nl|Nl-wiskunde.ogg}}
* {{hyphenation|nl|wis|kun|de}}
==={{section|n}}===
{{nl-noun|f|-|-}}
# [[toán học|Toán học]].
===={{section|drv}}====
* {{l|nl|wiskunde-examen}}
* {{l|nl|wiskundeboek}}
* {{l|nl|wiskundeknobbel}}
* {{l|nl|wiskundelerares}}
* {{l|nl|wiskundeles}}
* {{l|nl|wiskundig}}
===={{section|rel}}====
* {{l|nl|-kunde}}
===={{section|desc}}====
* {{desc|af|wiskunde}}
* {{desc|id|ilmu pasti|clq=1}}
* {{desc|fy|wiskunde|bor=1}}
{{C|nl|Toán học}}
bk2jxyoa0b6y34o7rk1gto52etod89h
vóór
0
3269
2567185
1945393
2026-09-28T15:40:51Z
Hiyuune
50834
2567185
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|nl-{{pagename}}.ogg}}
==={{section|prep}}===
{{head|nl|Giới từ}}
# [[trước|Trước]] [[khi]].
rxnfay3bk83mmty7bmfjeuuird10xbq
display
0
3436
2567178
2112293
2026-09-28T15:18:11Z
Kateru Zakuro
34522
2567178
wikitext
text/x-wiki
{{also|Display}}
=={{langname|en}}==
==={{ĐM|etym}}===
{{root|en|ine-pro|*pleḱ-}}
Từ {{inh|en|enm|displayen}}, từ {{der|en|xno|despleier}} và {{der|en|fro|despleier}}, {{m|fro|desploiier}}, từ {{der|en|la-med|displicare||to unfold, display}}, từ {{der|en|la|dis-||apart}} + {{m|la|plicāre||to fold}}. {{doublet|en|deploy}}.
==={{ĐM|pron}}===
* {{IPA|en|/dɪsˈpleɪ/}}
** {{audio|en|En-us-display.ogg|a=US}}
* {{hyphenation|en|dis|play}}
* {{rhymes|en|eɪ|s=2}}
==={{ĐM|noun}}===
{{en-noun|~}}
# Một [[buổi]] [[trình diễn]].
# {{lb|en|computing}} [[màn hình]].
===={{ĐM|see also}}====
{{col|en
|{{l|en|character}}s
|CRT
|cursor
|{{l|en|digit}}s
|graphics
|monitor
|screen
|VDU
}}
==={{ĐM|verb}}===
{{en-verb}}
# {{lb|en|transitive}} [[hiển thị]], [[thể hiện]].
=={{langname|nl}}==
==={{ĐM|etym}}===
Vay mượn từ {{bor|nl|en|display}}.
==={{ĐM|pronunciation}}===
* {{IPA|nl|/dɪsˈpleː/|/ˈdɪs.pleː/}}
* {{audio|nl|Nl-display.ogg}}
* {{hyphenation|nl|dis|play}}
* {{rhymes|nl|eː}}
==={{ĐM|noun}}===
{{nl-noun|m,n|-s|+}}
# {{l|vi|display}} {{gloss|nghĩa 2 màn hình}}
k2opjxnlgmmdii5o74wy9sqipwxaymr
2567179
2567178
2026-09-28T15:18:27Z
Kateru Zakuro
34522
2567179
wikitext
text/x-wiki
{{also|Display}}
=={{langname|en}}==
==={{ĐM|etym}}===
{{root|en|ine-pro|*pleḱ-}}
Từ {{inh|en|enm|displayen}}, từ {{der|en|xno|despleier}} và {{der|en|fro|despleier}}, {{m|fro|desploiier}}, từ {{der|en|la-med|displicare||to unfold, display}}, từ {{der|en|la|dis-||apart}} + {{m|la|plicāre||to fold}}. {{doublet|en|deploy}}.
==={{ĐM|pron}}===
* {{IPA|en|/dɪsˈpleɪ/}}
** {{audio|en|En-us-display.ogg|a=US}}
* {{hyphenation|en|dis|play}}
* {{rhymes|en|eɪ|s=2}}
==={{ĐM|noun}}===
{{en-noun|~}}
# Một [[buổi]] [[trình diễn]].
# {{lb|en|computing}} [[màn hình]].
===={{ĐM|see also}}====
{{col|en
|{{l|en|character}}s
|CRT
|cursor
|{{l|en|digit}}s
|graphics
|monitor
|screen
|VDU
}}
==={{ĐM|verb}}===
{{en-verb}}
# {{lb|en|transitive}} [[hiển thị]], [[thể hiện]].
=={{langname|nl}}==
==={{ĐM|etym}}===
Vay mượn từ {{bor|nl|en|display}}.
==={{ĐM|pronunciation}}===
* {{IPA|nl|/dɪsˈpleː/|/ˈdɪs.pleː/}}
* {{audio|nl|Nl-display.ogg}}
* {{hyphenation|nl|dis|play}}
* {{rhymes|nl|eː}}
==={{ĐM|noun}}===
{{nl-noun|m,n|-s|+}}
# {{l|en|display}} {{gloss|nghĩa 2 màn hình}}
6g7k3f8vcngku7g5thth320er7housu
2567181
2567179
2026-09-28T15:32:48Z
TheHighFighter2
42988
/* Tiếng Hà Lan */
2567181
wikitext
text/x-wiki
{{also|Display}}
=={{langname|en}}==
==={{ĐM|etym}}===
{{root|en|ine-pro|*pleḱ-}}
Từ {{inh|en|enm|displayen}}, từ {{der|en|xno|despleier}} và {{der|en|fro|despleier}}, {{m|fro|desploiier}}, từ {{der|en|la-med|displicare||to unfold, display}}, từ {{der|en|la|dis-||apart}} + {{m|la|plicāre||to fold}}. {{doublet|en|deploy}}.
==={{ĐM|pron}}===
* {{IPA|en|/dɪsˈpleɪ/}}
** {{audio|en|En-us-display.ogg|a=US}}
* {{hyphenation|en|dis|play}}
* {{rhymes|en|eɪ|s=2}}
==={{ĐM|noun}}===
{{en-noun|~}}
# Một [[buổi]] [[trình diễn]].
# {{lb|en|computing}} [[màn hình]].
===={{ĐM|see also}}====
{{col|en
|{{l|en|character}}s
|CRT
|cursor
|{{l|en|digit}}s
|graphics
|monitor
|screen
|VDU
}}
==={{ĐM|verb}}===
{{en-verb}}
# {{lb|en|transitive}} [[hiển thị]], [[thể hiện]].
=={{langname|nl}}==
==={{ĐM|etym}}===
Vay mượn từ {{bor|nl|en|display}}.
==={{ĐM|pronunciation}}===
* {{IPA|nl|/dɪsˈpleː/|/ˈdɪs.pleː/}}
* {{audio|nl|Nl-display.ogg}}
* {{hyphenation|nl|dis|play}}
* {{rhymes|nl|eː}}
==={{ĐM|noun}}===
{{nl-noun|m,n|-s|+}}
# [[màn hình|Màn hình]].
s6jebz8kcojcgktu2vfa8rgmoqcypoy
overwrite
0
3809
2567165
1886802
2026-09-28T12:26:39Z
Kateru Zakuro
34522
2567165
wikitext
text/x-wiki
=={{langname|en}}==
==={{ĐM|etymology}}===
{{ety|en|:af|over-|write|text=+|tree=1}}
==={{ĐM|pronunciation}}===
* {{IPA|en|/əʊ.vəˈɹaɪt/|a=UK}}
* {{IPA|en|/oʊ.vɚˈɹaɪt/|a=US}}
* {{audio|en|LL-Q1860 (eng)-Back ache-overwrite.wav}}
==={{ĐM|verb}}===
{{en-verb|+|+|overwrote|overwritten}}
# {{lb|en|transitive|computing}} [[ghi đè]]
#: {{ux|en|I accidentally saved my unwanted changes and '''overwrote''' the version of the document I wanted to keep.|t=Tôi vô tình lưu lại những thay đổi không mong muốn và đã '''ghi đè''' phiên bản tài liệu mà tôi muốn giữ lại.}}
jnvgglwvrx4m7xai15kksh32yx8vqvs
whitelist
0
26771
2567167
2284554
2026-09-28T12:37:57Z
Kateru Zakuro
34522
2567167
wikitext
text/x-wiki
=={{langname|en}}==
{{wp}}
==={{ĐM|etymology}}===
Từ {{compound|en|white|list}}.
==={{ĐM|pronunciation}}===
* {{audio|en|en-us-whitelist.ogg|a=US}}
==={{ĐM|noun}}===
{{en-noun}}
# {{lb|en|legal|computing}} [[danh sách trắng]]
#: {{syn|en|allowlist}}
#: {{ant|en|blacklist|denylist}}
#: {{hypo|en|fair list|safelist}}
==={{ĐM|verb}}===
{{en-verb}}
# {{lb|en|transitive}} Thêm vào [[danh sách trắng]]; [[đánh dấu]] hoặc [[ghi chú]] [[người]] hoặc [[thực thể]] [[thích hợp]] hay không còn đáng tin.
t69obr34hrkiylu5v7jdghqvdl0j9lj
2567168
2567167
2026-09-28T12:39:23Z
Kateru Zakuro
34522
2567168
wikitext
text/x-wiki
=={{langname|en}}==
{{wp}}
==={{ĐM|etymology}}===
Từ {{compound|en|white|list}}.
==={{ĐM|pronunciation}}===
* {{audio|en|en-us-whitelist.ogg|a=US}}
==={{ĐM|noun}}===
{{en-noun}}
# {{lb|en|legal|computing}} [[danh sách trắng]]
#: {{syn|en|allowlist}}
#: {{ant|en|blacklist|denylist}}
#: {{hypo|en|fair list|safelist}}
==={{ĐM|verb}}===
{{en-verb}}
# {{lb|en|transitive}} Thêm vào [[danh sách trắng]]; [[đánh dấu]] hoặc [[ghi chú]] [[người]] hoặc [[thực thể]] [[thích hợp]] hay đáng tin.
ezzv4djd7qgwz4vf9bx0c2h7yov1j1k
tem
0
92737
2567171
2567163
2026-09-28T14:19:49Z
TheHighFighter2
42988
/* Tiếng Anh trung đại */
2567171
wikitext
text/x-wiki
{{đang viết}}
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|timbre}}.
==={{ĐM|pron}}===
{{vi-pron}}
* {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-tem.wav|a=Hanoi}}
==={{ĐM|nôm}}===
{{đầu}}
*[[尖]]: [[tiêm]], [[tem]], [[nhọn]]
{{cuối}}
==={{ĐM|noun}}===
{{vi-noun|cls=[[con]], [[chiếc]], [[cái]]}}
# [[miếng|Miếng]] [[giấy]] nhỏ, thường [[hình]] [[chữ nhật]], có [[in]] [[tranh]] ảnh và [[giá]] [[tiền]], do [[bưu điện]] [[phát hành]], dùng để [[dán]] lên các [[bưu phẩm]] làm chứng từ [[cước phí]].
#: {{syn|vi|tem thư}}
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], dùng để [[dán]] vào một số [[giấy tờ]] [[chính thức]] hoặc [[hàng hoá]], [[chứng nhận]] đã [[nộp thuế]] hoặc [[lệ phí]].
# [[nhãn hiệu|Nhãn hiệu]] [[dán]] trên các [[mặt hàng]] để [[chứng nhận]] [[phẩm chất]].
#: ''Hàng chưa bóc '''tem'''.'' (kng. — còn mới nguyên, chưa sử dụng bao giờ)
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], có [[giá trị]] [[mua]] [[hàng hoá]] chỉ [[bán]] [[cung cấp]] theo [[định lượng]].
#: '''''Tem''' lương thực.''
==={{ĐM|ref}}===
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|enm}}==
==={{ĐM|etym}} 1===
{{etymid|enm|nhóm}}
{{inh+|enm|ang|tēam}}, nguồn gốc từ {{inh|enm|gmw-pro|*taum}}, hoặc {{inh|enm|gem-pro|*taumaz}}.
===={{ĐM|alt}}====
* {{alter|enm|teem|teeme|teme|teome|them|theam}}
* {{alter|enm|tæm|team||early}}
===={{ĐM|pron}}====
* {{IPA|enm|/tɛ̝ːm/}}
* {{rhymes|enm|ɛːm|s=1}}
===={{ĐM|noun}}====
{{enm-noun|temes}}
# [[thân tộc|Thân tộc]], [[thị tộc]], [[gia tộc]].
# {{lb|enm|legal}} Đặc quyền đưa ra quyết định về các [[tranh chấp]] quyền [[sở hữu]] giữa những [[thuộc hạ]] của cá nhân.
# Đàn [[gia súc]] kéo nông cụ.
# Đàn [[thủy điểu]] hoặc [[gà]].
# [[hậu duệ|Hậu duệ]], [[con cháu]]; cũng bao gồm cả đối tượng sau:
## {{lb|enm|legal}} Hậu duệ của thuộc hạ.
# {{lb|enm|rare}} Khả năng [[sinh sản]].
# {{lb|enm|rare}} [[đội|Đội]], [[toán]], [[nhóm]].
====={{ĐM|rel}}=====
* {{l|enm|barntem}}
* {{l|enm|temen|id=bear}}
====={{ĐM|desc}}=====
* {{desc|en|team}} {{see desc}}
* {{desc|sco|team}}
====={{ĐM|ref}}=====
* {{R:MED Online|entry=tēm(e |pos=n.(1) |id=MED44698 |accessdate=2018-04-25}}
==={{ĐM|etym}} 2===
===={{ĐM|verb}}====
{{head|enm|verb}}
# {{alt form|enm|temen|id=sinh|t=sinh con; chứng minh}}.
{{C|enm|Nông nghiệp|Gia đình|Gia súc|Mọi người}}
=={{langname|pl}}==
==={{ĐM|pron}}===
{{pl-pr}}
==={{ĐM|pronoun}}===
{{head|pl|Biến thể hình thái đại từ|g=n}}
# {{lb|pl|obsolete}} {{inflection of|pl|to||ins//loc|s|;|dat|p}}
===={{ĐM|der}}====
{{col|pl|potem|przedtem|wtem|zatem}}
==={{ĐM|ref}}===
* {{R:pl:PWN}}
=={{langname|pt}}==
==={{ĐM|etym}}===
Từ {{inh|pt|la|tenet}}. Cùng gốc với {{cog|gl|ten}} và {{cog|es|tiene}}. So sánh thêm với {{m|pt|vem}}.
==={{ĐM|pron}}===
{{pt-IPA}}
* {{audio|pt|LL-Q5146 (por)-JnpoJuwan-tem.wav|a=<<Brazil>> (<<São Paulo>>)}}
* {{audio|pt|LL-Q5146 (por)-Santamarcanda-tem.wav|a=<<Portugal>> (<<Porto>>)}}
* {{rhymes|pt|ẽj̃|q1=Brasil|ɐ̃j̃|q2=Bồ Đào Nha|s=1}}
* {{homophones|pt|têm|qq1=Brasil}}
* {{hyphenation|pt|tem}}
==={{ĐM|verb}}===
{{head|pt|Biến thể hình thái động từ}}
# {{pt-verb form of|ter}}
# {{lb|pt|Brazil}} {{misspelling of|pt|têm}}
=={{langname|ca}}==
==={{ĐM|etym}} 1===
{{nonlemma}}
===={{ĐM|pron}}====
* {{ca-IPA|é}}
===={{ĐM|verb}}====
{{head|ca|Biến thể hình thái động từ}}
# {{ca-verb form of|témer}}
==={{ĐM|etym}} 2===
{{inh+|ca|la|thymus||cỏ xạ hương}}. Xem thêm {{m|ca|timó}}.
===={{ĐM|pron}}====
* {{ca-IPA|ê}}<!-- theo GDLC, DNV, DCVB -->
===={{ĐM|noun}}====
{{ca-noun|m}}
# {{lb|ca|Minorca}} [[cỏ xạ hương|Cỏ xạ hương]].
#: {{syn|ca|farigola}}
==={{ĐM|ref}}===
* {{R:ca:DCVB}}
=={{langname|nl}}==
==={{ĐM|pron}}===
* {{audio|nl|Nl-tem.ogg}}
* {{rhymes|nl|ɛm|s=1}}
==={{ĐM|verb}}===
{{head|nl|Biến thể hình thái động từ}}
# {{infl of|nl|temmen||bare-verb}}
=={{langname|is}}==
==={{ĐM|verb}}===
{{head|is|Biến thể hình thái động từ}} {{qualifier|weak}}
# {{verb form of|is|temja||1s|pres|ind|;|2s|imp}}
=={{langname|kjg}}==
==={{ĐM|verb}}===
{{head|kjg|Động từ}}
# [[viết|Viết]].
==={{ĐM|ref}}===
* Tạ Văn Thông, Tạ Quang Tùng (2020). ''Trạng thái ngôn ngữ các dân tộc thuộc nhóm Khơ-mú ở Việt Nam''
=={{langname|nb}}==
==={{ĐM|verb}}===
{{head|nb|Biến thể hình thái động từ}}
# {{inflection of|nb|temme||imp}}
=={{langname|ro}}==
==={{ĐM|pron}}===
* {{IPA|ro|[tem]}}
==={{ĐM|verb}}===
{{head|ro|Biến thể hình thái động từ}}
# {{verb form of|ro|teme||1|s|pres|ind//sub|;|3|p|pres|ind}}
iegn8cepaq80h946nuc26fslh45vgp4
2567172
2567171
2026-09-28T14:25:43Z
TheHighFighter2
42988
/* Tiếng Ba Lan */
2567172
wikitext
text/x-wiki
{{đang viết}}
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|timbre}}.
==={{ĐM|pron}}===
{{vi-pron}}
* {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-tem.wav|a=Hanoi}}
==={{ĐM|nôm}}===
{{đầu}}
*[[尖]]: [[tiêm]], [[tem]], [[nhọn]]
{{cuối}}
==={{ĐM|noun}}===
{{vi-noun|cls=[[con]], [[chiếc]], [[cái]]}}
# [[miếng|Miếng]] [[giấy]] nhỏ, thường [[hình]] [[chữ nhật]], có [[in]] [[tranh]] ảnh và [[giá]] [[tiền]], do [[bưu điện]] [[phát hành]], dùng để [[dán]] lên các [[bưu phẩm]] làm chứng từ [[cước phí]].
#: {{syn|vi|tem thư}}
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], dùng để [[dán]] vào một số [[giấy tờ]] [[chính thức]] hoặc [[hàng hoá]], [[chứng nhận]] đã [[nộp thuế]] hoặc [[lệ phí]].
# [[nhãn hiệu|Nhãn hiệu]] [[dán]] trên các [[mặt hàng]] để [[chứng nhận]] [[phẩm chất]].
#: ''Hàng chưa bóc '''tem'''.'' (kng. — còn mới nguyên, chưa sử dụng bao giờ)
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], có [[giá trị]] [[mua]] [[hàng hoá]] chỉ [[bán]] [[cung cấp]] theo [[định lượng]].
#: '''''Tem''' lương thực.''
==={{ĐM|ref}}===
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|enm}}==
==={{ĐM|etym}} 1===
{{etymid|enm|nhóm}}
{{inh+|enm|ang|tēam}}, nguồn gốc từ {{inh|enm|gmw-pro|*taum}}, hoặc {{inh|enm|gem-pro|*taumaz}}.
===={{ĐM|alt}}====
* {{alter|enm|teem|teeme|teme|teome|them|theam}}
* {{alter|enm|tæm|team||early}}
===={{ĐM|pron}}====
* {{IPA|enm|/tɛ̝ːm/}}
* {{rhymes|enm|ɛːm|s=1}}
===={{ĐM|noun}}====
{{enm-noun|temes}}
# [[thân tộc|Thân tộc]], [[thị tộc]], [[gia tộc]].
# {{lb|enm|legal}} Đặc quyền đưa ra quyết định về các [[tranh chấp]] quyền [[sở hữu]] giữa những [[thuộc hạ]] của cá nhân.
# Đàn [[gia súc]] kéo nông cụ.
# Đàn [[thủy điểu]] hoặc [[gà]].
# [[hậu duệ|Hậu duệ]], [[con cháu]]; cũng bao gồm cả đối tượng sau:
## {{lb|enm|legal}} Hậu duệ của thuộc hạ.
# {{lb|enm|rare}} Khả năng [[sinh sản]].
# {{lb|enm|rare}} [[đội|Đội]], [[toán]], [[nhóm]].
====={{ĐM|rel}}=====
* {{l|enm|barntem}}
* {{l|enm|temen|id=bear}}
====={{ĐM|desc}}=====
* {{desc|en|team}} {{see desc}}
* {{desc|sco|team}}
====={{ĐM|ref}}=====
* {{R:MED Online|entry=tēm(e |pos=n.(1) |id=MED44698 |accessdate=2018-04-25}}
==={{ĐM|etym}} 2===
===={{ĐM|verb}}====
{{head|enm|verb}}
# {{alt form|enm|temen|id=sinh|t=sinh con; chứng minh}}.
{{C|enm|Nông nghiệp|Gia đình|Gia súc|Mọi người}}
=={{langname|pl}}==
==={{ĐM|alt}}===
* {{l|pl|tym}}
==={{ĐM|pron}}===
{{pl-pr}}
==={{ĐM|pronoun}}===
{{head|pl|Biến thể hình thái đại từ|g=n}}
# {{lb|pl|obsolete}} {{inflection of|pl|to||ins//loc|s|;|dat|p}}
===={{ĐM|der}}====
{{col|pl|potem|przedtem|wtem|zatem}}
==={{ĐM|further}}===
* {{R:pl:PWN}}
=={{langname|pt}}==
==={{ĐM|etym}}===
Từ {{inh|pt|la|tenet}}. Cùng gốc với {{cog|gl|ten}} và {{cog|es|tiene}}. So sánh thêm với {{m|pt|vem}}.
==={{ĐM|pron}}===
{{pt-IPA}}
* {{audio|pt|LL-Q5146 (por)-JnpoJuwan-tem.wav|a=<<Brazil>> (<<São Paulo>>)}}
* {{audio|pt|LL-Q5146 (por)-Santamarcanda-tem.wav|a=<<Portugal>> (<<Porto>>)}}
* {{rhymes|pt|ẽj̃|q1=Brasil|ɐ̃j̃|q2=Bồ Đào Nha|s=1}}
* {{homophones|pt|têm|qq1=Brasil}}
* {{hyphenation|pt|tem}}
==={{ĐM|verb}}===
{{head|pt|Biến thể hình thái động từ}}
# {{pt-verb form of|ter}}
# {{lb|pt|Brazil}} {{misspelling of|pt|têm}}
=={{langname|ca}}==
==={{ĐM|etym}} 1===
{{nonlemma}}
===={{ĐM|pron}}====
* {{ca-IPA|é}}
===={{ĐM|verb}}====
{{head|ca|Biến thể hình thái động từ}}
# {{ca-verb form of|témer}}
==={{ĐM|etym}} 2===
{{inh+|ca|la|thymus||cỏ xạ hương}}. Xem thêm {{m|ca|timó}}.
===={{ĐM|pron}}====
* {{ca-IPA|ê}}<!-- theo GDLC, DNV, DCVB -->
===={{ĐM|noun}}====
{{ca-noun|m}}
# {{lb|ca|Minorca}} [[cỏ xạ hương|Cỏ xạ hương]].
#: {{syn|ca|farigola}}
==={{ĐM|ref}}===
* {{R:ca:DCVB}}
=={{langname|nl}}==
==={{ĐM|pron}}===
* {{audio|nl|Nl-tem.ogg}}
* {{rhymes|nl|ɛm|s=1}}
==={{ĐM|verb}}===
{{head|nl|Biến thể hình thái động từ}}
# {{infl of|nl|temmen||bare-verb}}
=={{langname|is}}==
==={{ĐM|verb}}===
{{head|is|Biến thể hình thái động từ}} {{qualifier|weak}}
# {{verb form of|is|temja||1s|pres|ind|;|2s|imp}}
=={{langname|kjg}}==
==={{ĐM|verb}}===
{{head|kjg|Động từ}}
# [[viết|Viết]].
==={{ĐM|ref}}===
* Tạ Văn Thông, Tạ Quang Tùng (2020). ''Trạng thái ngôn ngữ các dân tộc thuộc nhóm Khơ-mú ở Việt Nam''
=={{langname|nb}}==
==={{ĐM|verb}}===
{{head|nb|Biến thể hình thái động từ}}
# {{inflection of|nb|temme||imp}}
=={{langname|ro}}==
==={{ĐM|pron}}===
* {{IPA|ro|[tem]}}
==={{ĐM|verb}}===
{{head|ro|Biến thể hình thái động từ}}
# {{verb form of|ro|teme||1|s|pres|ind//sub|;|3|p|pres|ind}}
rtsuf6b6faal6q0xxh32s9zxzbiw68n
2567173
2567172
2026-09-28T14:28:40Z
TheHighFighter2
42988
/* Tiếng Iceland */
2567173
wikitext
text/x-wiki
{{đang viết}}
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|timbre}}.
==={{ĐM|pron}}===
{{vi-pron}}
* {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-tem.wav|a=Hanoi}}
==={{ĐM|nôm}}===
{{đầu}}
*[[尖]]: [[tiêm]], [[tem]], [[nhọn]]
{{cuối}}
==={{ĐM|noun}}===
{{vi-noun|cls=[[con]], [[chiếc]], [[cái]]}}
# [[miếng|Miếng]] [[giấy]] nhỏ, thường [[hình]] [[chữ nhật]], có [[in]] [[tranh]] ảnh và [[giá]] [[tiền]], do [[bưu điện]] [[phát hành]], dùng để [[dán]] lên các [[bưu phẩm]] làm chứng từ [[cước phí]].
#: {{syn|vi|tem thư}}
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], dùng để [[dán]] vào một số [[giấy tờ]] [[chính thức]] hoặc [[hàng hoá]], [[chứng nhận]] đã [[nộp thuế]] hoặc [[lệ phí]].
# [[nhãn hiệu|Nhãn hiệu]] [[dán]] trên các [[mặt hàng]] để [[chứng nhận]] [[phẩm chất]].
#: ''Hàng chưa bóc '''tem'''.'' (kng. — còn mới nguyên, chưa sử dụng bao giờ)
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], có [[giá trị]] [[mua]] [[hàng hoá]] chỉ [[bán]] [[cung cấp]] theo [[định lượng]].
#: '''''Tem''' lương thực.''
==={{ĐM|ref}}===
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|enm}}==
==={{ĐM|etym}} 1===
{{etymid|enm|nhóm}}
{{inh+|enm|ang|tēam}}, nguồn gốc từ {{inh|enm|gmw-pro|*taum}}, hoặc {{inh|enm|gem-pro|*taumaz}}.
===={{ĐM|alt}}====
* {{alter|enm|teem|teeme|teme|teome|them|theam}}
* {{alter|enm|tæm|team||early}}
===={{ĐM|pron}}====
* {{IPA|enm|/tɛ̝ːm/}}
* {{rhymes|enm|ɛːm|s=1}}
===={{ĐM|noun}}====
{{enm-noun|temes}}
# [[thân tộc|Thân tộc]], [[thị tộc]], [[gia tộc]].
# {{lb|enm|legal}} Đặc quyền đưa ra quyết định về các [[tranh chấp]] quyền [[sở hữu]] giữa những [[thuộc hạ]] của cá nhân.
# Đàn [[gia súc]] kéo nông cụ.
# Đàn [[thủy điểu]] hoặc [[gà]].
# [[hậu duệ|Hậu duệ]], [[con cháu]]; cũng bao gồm cả đối tượng sau:
## {{lb|enm|legal}} Hậu duệ của thuộc hạ.
# {{lb|enm|rare}} Khả năng [[sinh sản]].
# {{lb|enm|rare}} [[đội|Đội]], [[toán]], [[nhóm]].
====={{ĐM|rel}}=====
* {{l|enm|barntem}}
* {{l|enm|temen|id=bear}}
====={{ĐM|desc}}=====
* {{desc|en|team}} {{see desc}}
* {{desc|sco|team}}
====={{ĐM|ref}}=====
* {{R:MED Online|entry=tēm(e |pos=n.(1) |id=MED44698 |accessdate=2018-04-25}}
==={{ĐM|etym}} 2===
===={{ĐM|verb}}====
{{head|enm|verb}}
# {{alt form|enm|temen|id=sinh|t=sinh con; chứng minh}}.
{{C|enm|Nông nghiệp|Gia đình|Gia súc|Mọi người}}
=={{langname|pl}}==
==={{ĐM|alt}}===
* {{l|pl|tym}}
==={{ĐM|pron}}===
{{pl-pr}}
==={{ĐM|pronoun}}===
{{head|pl|Biến thể hình thái đại từ|g=n}}
# {{lb|pl|obsolete}} {{inflection of|pl|to||ins//loc|s|;|dat|p}}
===={{ĐM|der}}====
{{col|pl|potem|przedtem|wtem|zatem}}
==={{ĐM|further}}===
* {{R:pl:PWN}}
=={{langname|pt}}==
==={{ĐM|etym}}===
Từ {{inh|pt|la|tenet}}. Cùng gốc với {{cog|gl|ten}} và {{cog|es|tiene}}. So sánh thêm với {{m|pt|vem}}.
==={{ĐM|pron}}===
{{pt-IPA}}
* {{audio|pt|LL-Q5146 (por)-JnpoJuwan-tem.wav|a=<<Brazil>> (<<São Paulo>>)}}
* {{audio|pt|LL-Q5146 (por)-Santamarcanda-tem.wav|a=<<Portugal>> (<<Porto>>)}}
* {{rhymes|pt|ẽj̃|q1=Brasil|ɐ̃j̃|q2=Bồ Đào Nha|s=1}}
* {{homophones|pt|têm|qq1=Brasil}}
* {{hyphenation|pt|tem}}
==={{ĐM|verb}}===
{{head|pt|Biến thể hình thái động từ}}
# {{pt-verb form of|ter}}
# {{lb|pt|Brazil}} {{misspelling of|pt|têm}}
=={{langname|ca}}==
==={{ĐM|etym}} 1===
{{nonlemma}}
===={{ĐM|pron}}====
* {{ca-IPA|é}}
===={{ĐM|verb}}====
{{head|ca|Biến thể hình thái động từ}}
# {{ca-verb form of|témer}}
==={{ĐM|etym}} 2===
{{inh+|ca|la|thymus||cỏ xạ hương}}. Xem thêm {{m|ca|timó}}.
===={{ĐM|pron}}====
* {{ca-IPA|ê}}<!-- theo GDLC, DNV, DCVB -->
===={{ĐM|noun}}====
{{ca-noun|m}}
# {{lb|ca|Minorca}} [[cỏ xạ hương|Cỏ xạ hương]].
#: {{syn|ca|farigola}}
==={{ĐM|ref}}===
* {{R:ca:DCVB}}
=={{langname|nl}}==
==={{ĐM|pron}}===
* {{audio|nl|Nl-tem.ogg}}
* {{rhymes|nl|ɛm|s=1}}
==={{ĐM|verb}}===
{{head|nl|Biến thể hình thái động từ}}
# {{infl of|nl|temmen||bare-verb}}
=={{langname|is}}==
==={{ĐM|verb}}===
{{head|is|Biến thể hình thái động từ}} {{qualifier|yếu}}
# {{verb form of|is|temja||ind|pres|ở|1s|;|imp|ở|2s}}
=={{langname|kjg}}==
==={{ĐM|verb}}===
{{head|kjg|Động từ}}
# [[viết|Viết]].
==={{ĐM|ref}}===
* Tạ Văn Thông, Tạ Quang Tùng (2020). ''Trạng thái ngôn ngữ các dân tộc thuộc nhóm Khơ-mú ở Việt Nam''
=={{langname|nb}}==
==={{ĐM|verb}}===
{{head|nb|Biến thể hình thái động từ}}
# {{inflection of|nb|temme||imp}}
=={{langname|ro}}==
==={{ĐM|pron}}===
* {{IPA|ro|[tem]}}
==={{ĐM|verb}}===
{{head|ro|Biến thể hình thái động từ}}
# {{verb form of|ro|teme||1|s|pres|ind//sub|;|3|p|pres|ind}}
nsqefey3tkps22g8gt6h9h729v99itj
2567174
2567173
2026-09-28T14:30:56Z
TheHighFighter2
42988
/* Tiếng Rumani */
2567174
wikitext
text/x-wiki
{{đang viết}}
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|timbre}}.
==={{ĐM|pron}}===
{{vi-pron}}
* {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-tem.wav|a=Hanoi}}
==={{ĐM|nôm}}===
{{đầu}}
*[[尖]]: [[tiêm]], [[tem]], [[nhọn]]
{{cuối}}
==={{ĐM|noun}}===
{{vi-noun|cls=[[con]], [[chiếc]], [[cái]]}}
# [[miếng|Miếng]] [[giấy]] nhỏ, thường [[hình]] [[chữ nhật]], có [[in]] [[tranh]] ảnh và [[giá]] [[tiền]], do [[bưu điện]] [[phát hành]], dùng để [[dán]] lên các [[bưu phẩm]] làm chứng từ [[cước phí]].
#: {{syn|vi|tem thư}}
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], dùng để [[dán]] vào một số [[giấy tờ]] [[chính thức]] hoặc [[hàng hoá]], [[chứng nhận]] đã [[nộp thuế]] hoặc [[lệ phí]].
# [[nhãn hiệu|Nhãn hiệu]] [[dán]] trên các [[mặt hàng]] để [[chứng nhận]] [[phẩm chất]].
#: ''Hàng chưa bóc '''tem'''.'' (kng. — còn mới nguyên, chưa sử dụng bao giờ)
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], có [[giá trị]] [[mua]] [[hàng hoá]] chỉ [[bán]] [[cung cấp]] theo [[định lượng]].
#: '''''Tem''' lương thực.''
==={{ĐM|ref}}===
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|enm}}==
==={{ĐM|etym}} 1===
{{etymid|enm|nhóm}}
{{inh+|enm|ang|tēam}}, nguồn gốc từ {{inh|enm|gmw-pro|*taum}}, hoặc {{inh|enm|gem-pro|*taumaz}}.
===={{ĐM|alt}}====
* {{alter|enm|teem|teeme|teme|teome|them|theam}}
* {{alter|enm|tæm|team||early}}
===={{ĐM|pron}}====
* {{IPA|enm|/tɛ̝ːm/}}
* {{rhymes|enm|ɛːm|s=1}}
===={{ĐM|noun}}====
{{enm-noun|temes}}
# [[thân tộc|Thân tộc]], [[thị tộc]], [[gia tộc]].
# {{lb|enm|legal}} Đặc quyền đưa ra quyết định về các [[tranh chấp]] quyền [[sở hữu]] giữa những [[thuộc hạ]] của cá nhân.
# Đàn [[gia súc]] kéo nông cụ.
# Đàn [[thủy điểu]] hoặc [[gà]].
# [[hậu duệ|Hậu duệ]], [[con cháu]]; cũng bao gồm cả đối tượng sau:
## {{lb|enm|legal}} Hậu duệ của thuộc hạ.
# {{lb|enm|rare}} Khả năng [[sinh sản]].
# {{lb|enm|rare}} [[đội|Đội]], [[toán]], [[nhóm]].
====={{ĐM|rel}}=====
* {{l|enm|barntem}}
* {{l|enm|temen|id=bear}}
====={{ĐM|desc}}=====
* {{desc|en|team}} {{see desc}}
* {{desc|sco|team}}
====={{ĐM|ref}}=====
* {{R:MED Online|entry=tēm(e |pos=n.(1) |id=MED44698 |accessdate=2018-04-25}}
==={{ĐM|etym}} 2===
===={{ĐM|verb}}====
{{head|enm|verb}}
# {{alt form|enm|temen|id=sinh|t=sinh con; chứng minh}}.
{{C|enm|Nông nghiệp|Gia đình|Gia súc|Mọi người}}
=={{langname|pl}}==
==={{ĐM|alt}}===
* {{l|pl|tym}}
==={{ĐM|pron}}===
{{pl-pr}}
==={{ĐM|pronoun}}===
{{head|pl|Biến thể hình thái đại từ|g=n}}
# {{lb|pl|obsolete}} {{inflection of|pl|to||ins//loc|s|;|dat|p}}
===={{ĐM|der}}====
{{col|pl|potem|przedtem|wtem|zatem}}
==={{ĐM|further}}===
* {{R:pl:PWN}}
=={{langname|pt}}==
==={{ĐM|etym}}===
Từ {{inh|pt|la|tenet}}. Cùng gốc với {{cog|gl|ten}} và {{cog|es|tiene}}. So sánh thêm với {{m|pt|vem}}.
==={{ĐM|pron}}===
{{pt-IPA}}
* {{audio|pt|LL-Q5146 (por)-JnpoJuwan-tem.wav|a=<<Brazil>> (<<São Paulo>>)}}
* {{audio|pt|LL-Q5146 (por)-Santamarcanda-tem.wav|a=<<Portugal>> (<<Porto>>)}}
* {{rhymes|pt|ẽj̃|q1=Brasil|ɐ̃j̃|q2=Bồ Đào Nha|s=1}}
* {{homophones|pt|têm|qq1=Brasil}}
* {{hyphenation|pt|tem}}
==={{ĐM|verb}}===
{{head|pt|Biến thể hình thái động từ}}
# {{pt-verb form of|ter}}
# {{lb|pt|Brazil}} {{misspelling of|pt|têm}}
=={{langname|ca}}==
==={{ĐM|etym}} 1===
{{nonlemma}}
===={{ĐM|pron}}====
* {{ca-IPA|é}}
===={{ĐM|verb}}====
{{head|ca|Biến thể hình thái động từ}}
# {{ca-verb form of|témer}}
==={{ĐM|etym}} 2===
{{inh+|ca|la|thymus||cỏ xạ hương}}. Xem thêm {{m|ca|timó}}.
===={{ĐM|pron}}====
* {{ca-IPA|ê}}<!-- theo GDLC, DNV, DCVB -->
===={{ĐM|noun}}====
{{ca-noun|m}}
# {{lb|ca|Minorca}} [[cỏ xạ hương|Cỏ xạ hương]].
#: {{syn|ca|farigola}}
==={{ĐM|ref}}===
* {{R:ca:DCVB}}
=={{langname|nl}}==
==={{ĐM|pron}}===
* {{audio|nl|Nl-tem.ogg}}
* {{rhymes|nl|ɛm|s=1}}
==={{ĐM|verb}}===
{{head|nl|Biến thể hình thái động từ}}
# {{infl of|nl|temmen||bare-verb}}
=={{langname|is}}==
==={{ĐM|verb}}===
{{head|is|Biến thể hình thái động từ}} {{qualifier|yếu}}
# {{verb form of|is|temja||ind|pres|ở|1s|;|imp|ở|2s}}
=={{langname|kjg}}==
==={{ĐM|verb}}===
{{head|kjg|Động từ}}
# [[viết|Viết]].
==={{ĐM|ref}}===
* Tạ Văn Thông, Tạ Quang Tùng (2020). ''Trạng thái ngôn ngữ các dân tộc thuộc nhóm Khơ-mú ở Việt Nam''
=={{langname|nb}}==
==={{ĐM|verb}}===
{{head|nb|Biến thể hình thái động từ}}
# {{inflection of|nb|temme||imp}}
=={{langname|ro}}==
==={{ĐM|pron}}===
* {{IPA|ro|[tem]}}
==={{ĐM|verb}}===
{{head|ro|Biến thể hình thái động từ}}
# {{verb form of|ro|teme||ind//sub|pres|ở|1|s|;|ind|pres|ở|3|p}}
6mkv7ilz05k5mb8q94h2wpr0ic6xeja
2567175
2567174
2026-09-28T14:42:01Z
TheHighFighter2
42988
2567175
wikitext
text/x-wiki
{{đang viết}}
=={{langname|mul}}==
==={{ĐM|etym}}===
{{clip|mul|en:'''Tem'''ne}}.
==={{ĐM|symbol}}===
{{mul-symbol}}
# {{ISO 639|2&3}}
==={{ĐM|see}}===
* {{langcat}}
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|timbre}}.
==={{ĐM|pron}}===
{{vi-pron}}
* {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-tem.wav|a=Hanoi}}
==={{ĐM|nôm}}===
{{đầu}}
*[[尖]]: [[tiêm]], [[tem]], [[nhọn]]
{{cuối}}
==={{ĐM|noun}}===
{{vi-noun|cls=[[con]], [[chiếc]], [[cái]]}}
# [[miếng|Miếng]] [[giấy]] nhỏ, thường [[hình]] [[chữ nhật]], có [[in]] [[tranh]] ảnh và [[giá]] [[tiền]], do [[bưu điện]] [[phát hành]], dùng để [[dán]] lên các [[bưu phẩm]] làm chứng từ [[cước phí]].
#: {{syn|vi|tem thư}}
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], dùng để [[dán]] vào một số [[giấy tờ]] [[chính thức]] hoặc [[hàng hoá]], [[chứng nhận]] đã [[nộp thuế]] hoặc [[lệ phí]].
# [[nhãn hiệu|Nhãn hiệu]] [[dán]] trên các [[mặt hàng]] để [[chứng nhận]] [[phẩm chất]].
#: ''Hàng chưa bóc '''tem'''.'' (kng. — còn mới nguyên, chưa sử dụng bao giờ)
# [[miếng|Miếng]] [[giấy]] nhỏ [[hình]] [[chữ nhật]] giống như [[tem thư]], do [[nhà nước]] [[phát hành]], có [[giá trị]] [[mua]] [[hàng hoá]] chỉ [[bán]] [[cung cấp]] theo [[định lượng]].
#: '''''Tem''' lương thực.''
==={{ĐM|ref}}===
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|enm}}==
==={{ĐM|etym}} 1===
{{etymid|enm|nhóm}}
{{inh+|enm|ang|tēam}}, nguồn gốc từ {{inh|enm|gmw-pro|*taum}}, hoặc {{inh|enm|gem-pro|*taumaz}}.
===={{ĐM|alt}}====
* {{alter|enm|teem|teeme|teme|teome|them|theam}}
* {{alter|enm|tæm|team||early}}
===={{ĐM|pron}}====
* {{IPA|enm|/tɛ̝ːm/}}
* {{rhymes|enm|ɛːm|s=1}}
===={{ĐM|noun}}====
{{enm-noun|temes}}
# [[thân tộc|Thân tộc]], [[thị tộc]], [[gia tộc]].
# {{lb|enm|legal}} Đặc quyền đưa ra quyết định về các [[tranh chấp]] quyền [[sở hữu]] giữa những [[thuộc hạ]] của cá nhân.
# Đàn [[gia súc]] kéo nông cụ.
# Đàn [[thủy điểu]] hoặc [[gà]].
# [[hậu duệ|Hậu duệ]], [[con cháu]]; cũng bao gồm cả đối tượng sau:
## {{lb|enm|legal}} Hậu duệ của thuộc hạ.
# {{lb|enm|rare}} Khả năng [[sinh sản]].
# {{lb|enm|rare}} [[đội|Đội]], [[toán]], [[nhóm]].
====={{ĐM|rel}}=====
* {{l|enm|barntem}}
* {{l|enm|temen|id=bear}}
====={{ĐM|desc}}=====
* {{desc|en|team}} {{see desc}}
* {{desc|sco|team}}
====={{ĐM|ref}}=====
* {{R:MED Online|entry=tēm(e |pos=n.(1) |id=MED44698 |accessdate=2018-04-25}}
==={{ĐM|etym}} 2===
===={{ĐM|verb}}====
{{head|enm|verb}}
# {{alt form|enm|temen|id=sinh|t=sinh con; chứng minh}}.
{{C|enm|Nông nghiệp|Gia đình|Gia súc|Mọi người}}
=={{langname|pl}}==
==={{ĐM|alt}}===
* {{l|pl|tym}}
==={{ĐM|pron}}===
{{pl-pr}}
==={{ĐM|pronoun}}===
{{head|pl|Biến thể hình thái đại từ|g=n}}
# {{lb|pl|obsolete}} {{inflection of|pl|to||ins//loc|s|;|dat|p}}
===={{ĐM|der}}====
{{col|pl|potem|przedtem|wtem|zatem}}
==={{ĐM|further}}===
* {{R:pl:PWN}}
=={{langname|pt}}==
==={{ĐM|etym}}===
Từ {{inh|pt|la|tenet}}. Cùng gốc với {{cog|gl|ten}} và {{cog|es|tiene}}. So sánh thêm với {{m|pt|vem}}.
==={{ĐM|pron}}===
{{pt-IPA}}
* {{audio|pt|LL-Q5146 (por)-JnpoJuwan-tem.wav|a=<<Brazil>> (<<São Paulo>>)}}
* {{audio|pt|LL-Q5146 (por)-Santamarcanda-tem.wav|a=<<Portugal>> (<<Porto>>)}}
* {{rhymes|pt|ẽj̃|q1=Brasil|ɐ̃j̃|q2=Bồ Đào Nha|s=1}}
* {{homophones|pt|têm|qq1=Brasil}}
* {{hyphenation|pt|tem}}
==={{ĐM|verb}}===
{{head|pt|Biến thể hình thái động từ}}
# {{pt-verb form of|ter}}
# {{lb|pt|Brazil}} {{misspelling of|pt|têm}}
=={{langname|ca}}==
==={{ĐM|etym}} 1===
{{nonlemma}}
===={{ĐM|pron}}====
* {{ca-IPA|é}}
===={{ĐM|verb}}====
{{head|ca|Biến thể hình thái động từ}}
# {{ca-verb form of|témer}}
==={{ĐM|etym}} 2===
{{inh+|ca|la|thymus||cỏ xạ hương}}. Xem thêm {{m|ca|timó}}.
===={{ĐM|pron}}====
* {{ca-IPA|ê}}<!-- theo GDLC, DNV, DCVB -->
===={{ĐM|noun}}====
{{ca-noun|m}}
# {{lb|ca|Minorca}} [[cỏ xạ hương|Cỏ xạ hương]].
#: {{syn|ca|farigola}}
==={{ĐM|ref}}===
* {{R:ca:DCVB}}
=={{langname|nl}}==
==={{ĐM|pron}}===
* {{audio|nl|Nl-tem.ogg}}
* {{rhymes|nl|ɛm|s=1}}
==={{ĐM|verb}}===
{{head|nl|Biến thể hình thái động từ}}
# {{infl of|nl|temmen||bare-verb}}
=={{langname|is}}==
==={{ĐM|verb}}===
{{head|is|Biến thể hình thái động từ}} {{qualifier|yếu}}
# {{verb form of|is|temja||ind|pres|ở|1s|;|imp|ở|2s}}
=={{langname|kjg}}==
==={{ĐM|verb}}===
{{head|kjg|Động từ}}
# [[viết|Viết]].
==={{ĐM|ref}}===
* Tạ Văn Thông, Tạ Quang Tùng (2020). ''Trạng thái ngôn ngữ các dân tộc thuộc nhóm Khơ-mú ở Việt Nam''
=={{langname|nb}}==
==={{ĐM|verb}}===
{{head|nb|Biến thể hình thái động từ}}
# {{inflection of|nb|temme||imp}}.
=={{langname|ro}}==
==={{ĐM|pron}}===
* {{IPA|ro|[tem]}}
==={{ĐM|verb}}===
{{head|ro|Biến thể hình thái động từ}}
# {{verb form of|ro|teme||ind//sub|pres|ở|1|s|;|ind|pres|ở|3|p}}
=={{langname|vo}}==
==={{ĐM|noun}}===
{{vo-noun}}
# Nơi [[thờ tự]], [[đền]].
===={{ĐM|decl}}====
{{vo-decl-noun}}
==={{ĐM|further}}===
* {{R:vo:Vödabuk}}
s0obp7lrogcdp6xwhj9n199v9uz0r6r
2567180
2567175
2026-09-28T15:27:31Z
TheHighFighter2
42988
2567180
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "tem"}}
=={{langname|mul}}==
==={{ĐM|etym}}===
{{clip|mul|en:'''Tem'''ne}}.
==={{ĐM|symbol}}===
{{mul-symbol}}
# {{ISO 639|2&3}}
==={{ĐM|see}}===
* {{langcat}}
=={{langname|vi}}==
{{-info-}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|timbre}}.
==={{ĐM|pron}}===
{{vi-pron}}
* {{audio|vi|LL-Q9199 (vie)-Penn Zero MSSJ-tem.wav|a=Hanoi}}
==={{ĐM|nôm}}===
{{đầu}}
*[[尖]]: [[tiêm]], [[tem]], [[nhọn]]
{{cuối}}
==={{ĐM|noun}}===
{{vi-noun|cls=[[con]], [[chiếc]], [[cái]]}}
# Miếng [[giấy]] nhỏ, thường [[hình chữ nhật]], có in [[tranh ảnh]] và [[giá|giá tiền]], do [[bưu điện]] phát hành, dùng để [[dán]] lên các [[bưu phẩm]] làm [[chứng từ]] [[cước phí]].
#: {{syn|vi|tem thư|cò<q:phương ngữ>}}
# Miếng giấy nhỏ hình chữ nhật giống như tem thư, do [[nhà nước]] phát hành, dùng để dán vào một số [[giấy tờ]] [[chính thức]] hoặc [[hàng hoá]], [[chứng nhận]] đã nộp [[thuế]] hoặc [[lệ phí]].
# [[nhãn hiệu|Nhãn hiệu]] dán trên các [[mặt hàng]] để chứng nhận [[phẩm chất]].
#: {{ux|vi|Hàng chưa bóc '''tem'''.|q=[[khẩu ngữ|kng.]] — còn mới nguyên, chưa sử dụng bao giờ}}
# Miếng giấy nhỏ hình chữ nhật giống như tem thư, do nhà nước phát hành, có [[giá trị]] [[mua]] hàng hoá chỉ [[bán]] [[cung cấp]] theo [[định lượng]].
#: {{ux|vi|'''Tem''' lương thực.}}
===={{ĐM|der}}====
{{col2|vi|bóc tem|dao tem|tem phiếu}}
==={{ĐM|ref}}===
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
{{C|vi|Bưu chính}}
=={{langname|enm}}==
==={{ĐM|etym}} 1===
{{etymid|enm|nhóm}}
{{inh+|enm|ang|tēam}}, nguồn gốc từ {{inh|enm|gmw-pro|*taum}}, hoặc {{inh|enm|gem-pro|*taumaz}}.
===={{ĐM|alt}}====
* {{alter|enm|teem|teeme|teme|teome|them|theam}}
* {{alter|enm|tæm|team||early}}
===={{ĐM|pron}}====
* {{IPA|enm|/tɛ̝ːm/}}
* {{rhymes|enm|ɛːm|s=1}}
===={{ĐM|noun}}====
{{enm-noun|temes}}
# [[thân tộc|Thân tộc]], [[thị tộc]], [[gia tộc]].
# {{lb|enm|legal}} Đặc quyền đưa ra quyết định về các [[tranh chấp]] quyền [[sở hữu]] giữa những [[thuộc hạ]] của cá nhân.
# Đàn [[gia súc]] kéo nông cụ.
# Đàn [[thủy điểu]] hoặc [[gà]].
# [[hậu duệ|Hậu duệ]], [[con cháu]]; cũng bao gồm cả đối tượng sau:
## {{lb|enm|legal}} Hậu duệ của thuộc hạ.
# {{lb|enm|rare}} Khả năng [[sinh sản]].
# {{lb|enm|rare}} [[đội|Đội]], [[toán]], [[nhóm]].
====={{ĐM|rel}}=====
* {{l|enm|barntem}}
* {{l|enm|temen|id=bear}}
====={{ĐM|desc}}=====
* {{desc|en|team}} {{see desc}}
* {{desc|sco|team}}
====={{ĐM|ref}}=====
* {{R:MED Online|entry=tēm(e |pos=n.(1) |id=MED44698 |accessdate=2018-04-25}}
==={{ĐM|etym}} 2===
===={{ĐM|verb}}====
{{head|enm|verb}}
# {{alt form|enm|temen|id=sinh|t=sinh con; chứng minh}}.
{{C|enm|Nông nghiệp|Gia đình|Gia súc|Mọi người}}
=={{langname|pl}}==
==={{ĐM|alt}}===
* {{l|pl|tym}}
==={{ĐM|pron}}===
{{pl-pr}}
==={{ĐM|pronoun}}===
{{head|pl|Biến thể hình thái đại từ|g=n}}
# {{lb|pl|obsolete}} {{inflection of|pl|to||ins//loc|s|;|dat|p}}
===={{ĐM|der}}====
{{col|pl|potem|przedtem|wtem|zatem}}
==={{ĐM|further}}===
* {{R:pl:PWN}}
=={{langname|pt}}==
==={{ĐM|etym}}===
Từ {{inh|pt|la|tenet}}. Cùng gốc với {{cog|gl|ten}} và {{cog|es|tiene}}. So sánh thêm với {{m|pt|vem}}.
==={{ĐM|pron}}===
{{pt-IPA}}
* {{audio|pt|LL-Q5146 (por)-JnpoJuwan-tem.wav|a=<<Brazil>> (<<São Paulo>>)}}
* {{audio|pt|LL-Q5146 (por)-Santamarcanda-tem.wav|a=<<Portugal>> (<<Porto>>)}}
* {{rhymes|pt|ẽj̃|q1=Brasil|ɐ̃j̃|q2=Bồ Đào Nha|s=1}}
* {{homophones|pt|têm|qq1=Brasil}}
* {{hyphenation|pt|tem}}
==={{ĐM|verb}}===
{{head|pt|Biến thể hình thái động từ}}
# {{pt-verb form of|ter}}
# {{lb|pt|Brazil}} {{misspelling of|pt|têm}}
=={{langname|ca}}==
==={{ĐM|etym}} 1===
{{nonlemma}}
===={{ĐM|pron}}====
* {{ca-IPA|é}}
===={{ĐM|verb}}====
{{head|ca|Biến thể hình thái động từ}}
# {{ca-verb form of|témer}}
==={{ĐM|etym}} 2===
{{inh+|ca|la|thymus||cỏ xạ hương}}. Xem thêm {{m|ca|timó}}.
===={{ĐM|pron}}====
* {{ca-IPA|ê}}<!-- theo GDLC, DNV, DCVB -->
===={{ĐM|noun}}====
{{ca-noun|m}}
# {{lb|ca|Minorca}} [[cỏ xạ hương|Cỏ xạ hương]].
#: {{syn|ca|farigola}}
==={{ĐM|ref}}===
* {{R:ca:DCVB}}
=={{langname|nl}}==
==={{ĐM|pron}}===
* {{audio|nl|Nl-tem.ogg}}
* {{rhymes|nl|ɛm|s=1}}
==={{ĐM|verb}}===
{{head|nl|Biến thể hình thái động từ}}
# {{infl of|nl|temmen||bare-verb}}
=={{langname|is}}==
==={{ĐM|verb}}===
{{head|is|Biến thể hình thái động từ}} {{qualifier|yếu}}
# {{verb form of|is|temja||ind|pres|ở|1s|;|imp|ở|2s}}
=={{langname|kjg}}==
==={{ĐM|verb}}===
{{head|kjg|Động từ}}
# [[viết|Viết]].
==={{ĐM|ref}}===
* Tạ Văn Thông, Tạ Quang Tùng (2020). ''Trạng thái ngôn ngữ các dân tộc thuộc nhóm Khơ-mú ở Việt Nam''
=={{langname|nb}}==
==={{ĐM|verb}}===
{{head|nb|Biến thể hình thái động từ}}
# {{inflection of|nb|temme||imp}}.
=={{langname|ro}}==
==={{ĐM|pron}}===
* {{IPA|ro|[tem]}}
==={{ĐM|verb}}===
{{head|ro|Biến thể hình thái động từ}}
# {{verb form of|ro|teme||ind//sub|pres|ở|1|s|;|ind|pres|ở|3|p}}
=={{langname|vo}}==
==={{ĐM|noun}}===
{{vo-noun}}
# Nơi [[thờ tự]], [[đền]].
===={{ĐM|decl}}====
{{vo-decl-noun}}
==={{ĐM|further}}===
* {{R:vo:Vödabuk}}
lyjb75x18o5uaaiod80w83h1zkt8pmg
beton
0
113705
2567219
1801665
2026-09-29T00:50:52Z
Hiyuune
50834
/* */
2567219
wikitext
text/x-wiki
{{also|Beton|béton|betón}}
=={{langname|af}}==
==={{section|etym}}===
Từ {{inh|af|nl|beton}}.
==={{section|pron}}===
* {{IPA|af|/bəˈtɔn/}}
* {{audio|af|LL-Q14196 (afr)-Oesjaar-beton.wav}}
==={{section|n}}===
{{af-noun|-}}
# [[bê tông]].
=={{langname|sq}}==
==={{section|etym}}===
Từ {{bor|sq|fr|béton||bê tông}}, từ {{der|sq|la|bitūmen}}.<ref>{{R:sq:Topalli|betón|page=198a}}</ref>
==={{section|pron}}===
* {{IPA|sq|/beˈton/}}
* {{rhyme|sq|on|s=2}}
==={{section|n}}===
{{sq-noun|m||betóni}} {{tlb|sq|uncountable}}
# [[bê tông]].
===={{section|decl}}====
{{sq-noun-m-unc}}
===={{section|drv}}====
{{col|sq|betonoj|betonim|betonues|i betontë|betonarme|betonierë}}
==={{section|ref}}===
{{reflist}}
==={{section|further}}===
* {{R:sq:FMGSH:2026}}
oyt6cffnyi5340gq5zab4p5utynqle9
2567221
2567219
2026-09-29T03:25:39Z
Hiyuune
50834
/* Đọc thêm */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567221
wikitext
text/x-wiki
{{also|Beton|béton|betón}}
=={{langname|af}}==
==={{section|etym}}===
Từ {{inh|af|nl|beton}}.
==={{section|pron}}===
* {{IPA|af|/bəˈtɔn/}}
* {{audio|af|LL-Q14196 (afr)-Oesjaar-beton.wav}}
==={{section|n}}===
{{af-noun|-}}
# [[bê tông]].
=={{langname|sq}}==
==={{section|etym}}===
Từ {{bor|sq|fr|béton||bê tông}}, từ {{der|sq|la|bitūmen}}.<ref>{{R:sq:Topalli|betón|page=198a}}</ref>
==={{section|pron}}===
* {{IPA|sq|/beˈton/}}
* {{rhyme|sq|on|s=2}}
==={{section|n}}===
{{sq-noun|m||betóni}} {{tlb|sq|uncountable}}
# [[bê tông]].
===={{section|decl}}====
{{sq-noun-m-unc}}
===={{section|drv}}====
{{col|sq|betonoj|betonim|betonues|i betontë|betonarme|betonierë}}
==={{section|ref}}===
{{reflist}}
==={{section|further}}===
* {{R:sq:FMGSH:2026}}
{{C|sq|Vật liệu xây dựng}}
=={{langname|az}}==
{{wp|az:}}
{{az-variant|бетон|}}
==={{section|etym}}===
Từ {{der|az|fr|béton||bê tông}}, từ {{der|az|la|bitūmen||nhựa đường}}.
==={{section|pron}}===
* {{az-IPA}}
==={{section|n}}===
{{az-noun}}
# [[bê tông]].
===={{section|decl}}====
{{az-decl-noun|o|c}}
==={{section|ref}}===
* {{R:az:ADIL|page=259}}
{{c|az|Vật liệu xây dựng}}
l0tuunlk2hmrnni54dylav9davuhzr3
2567222
2567221
2026-09-29T03:25:50Z
Hiyuune
50834
/* Từ nguyên */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567222
wikitext
text/x-wiki
{{also|Beton|béton|betón}}
=={{langname|af}}==
==={{section|etym}}===
Từ {{inh|af|nl|beton}}.
==={{section|pron}}===
* {{IPA|af|/bəˈtɔn/}}
* {{audio|af|LL-Q14196 (afr)-Oesjaar-beton.wav}}
==={{section|n}}===
{{af-noun|-}}
# [[bê tông]].
=={{langname|sq}}==
==={{section|etym}}===
Từ {{bor|sq|fr|béton||bê tông}}, từ {{der|sq|la|bitūmen||nhựa đường}}.<ref>{{R:sq:Topalli|betón|page=198a}}</ref>
==={{section|pron}}===
* {{IPA|sq|/beˈton/}}
* {{rhyme|sq|on|s=2}}
==={{section|n}}===
{{sq-noun|m||betóni}} {{tlb|sq|uncountable}}
# [[bê tông]].
===={{section|decl}}====
{{sq-noun-m-unc}}
===={{section|drv}}====
{{col|sq|betonoj|betonim|betonues|i betontë|betonarme|betonierë}}
==={{section|ref}}===
{{reflist}}
==={{section|further}}===
* {{R:sq:FMGSH:2026}}
{{C|sq|Vật liệu xây dựng}}
=={{langname|az}}==
{{wp|az:}}
{{az-variant|бетон|}}
==={{section|etym}}===
Từ {{der|az|fr|béton||bê tông}}, từ {{der|az|la|bitūmen||nhựa đường}}.
==={{section|pron}}===
* {{az-IPA}}
==={{section|n}}===
{{az-noun}}
# [[bê tông]].
===={{section|decl}}====
{{az-decl-noun|o|c}}
==={{section|ref}}===
* {{R:az:ADIL|page=259}}
{{c|az|Vật liệu xây dựng}}
l8vengc67jenerruw42gdsdnwccgbak
krak
0
141955
2567267
2486256
2026-09-29T09:26:50Z
Hiyuune
50834
2567267
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "krak"}}
=={{langname|fr}}==
==={{section|etym}}===
Từ {{inh|fr|fro|crac}}, từ {{der|fr|syc|ܟܪܟܐ|tr=karəḵā}}.
==={{section|pron}}===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-krak.wav|a=Somain}}
==={{section|n}}===
{{fr-noun|m}}
# [[pháo đài|Pháo đài]] của quân chữ thập.
==={{section|ref}}===
* {{R:FVDP}}
==={{section|further}}===
* {{R:fr:TLFi}}
1lgzz6gmtr1wf4mnpm97bk5r6uwmikm
2567268
2567267
2026-09-29T09:27:12Z
Hiyuune
50834
2567268
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "krak"}}
=={{langname|fr}}==
==={{section|etym}}===
Từ {{inh|fr|fro|crac}}, từ {{der|fr|syc|ܟܪܟܐ|tr=karəḵā}}.
==={{section|pron}}===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-krak.wav|a=Somain}}
==={{section|n}}===
{{fr-noun|m}}
# [[pháo đài|Pháo đài]] của quân chữ thập.
==={{section|ref}}===
* {{R:FVDP|db=fv}}
==={{section|further}}===
* {{R:fr:TLFi}}
ex2wywd0yla96o122xfs0jsufhvszst
elastic-sides
0
147869
2567249
2533825
2026-09-29T06:40:18Z
Hiyuune
50834
2567249
wikitext
text/x-wiki
{{also|elastic sides}}
=={{langname|en}}==
==={{section|n}}===
{{en-noun|p}}
# {{alternative form of|en|elastic sides}}
==={{section|ref}}===
* {{R:FVDP|db=ev}}
lgu1hfh0rl6oaiz275z003nnriz06m4
Hồng Ngự
0
214793
2567252
1329724
2026-09-29T06:56:01Z
Hiyuune
50834
2567252
wikitext
text/x-wiki
=={{langname|vi}}==
{{wp|+ (thành phố)}}
==={{section|pron}}===
{{vi-pron}}
==={{section|pr-noun}}===
{{vi-pr-noun|head=[[hồng|Hồng]] [[ngự|Ngự]]}}
# {{lb|vi|historical}} {{place|vi|thành phố|p/Đồng Tháp|c/Việt Nam}}
s8k9tn9ywmolkmnax6lw1nw36n1mtlc
vergadering
0
216639
2567192
2524275
2026-09-28T16:03:14Z
Hiyuune
50834
2567192
wikitext
text/x-wiki
=={{langname|nl}}==
[[Hình:Kennisnet20060111.jpg|nhỏ|phải|vergadering]]
==={{section|etym}}===
Từ {{suffix|nl|vergaderen|ing}}.
==={{section|pron}}===
* {{IPA|nl|/vərˈɣaː.də.rɪŋ/}}
* {{audio|nl|Nl-vergadering.ogg}}
* {{rhyme|nl|s=4|aːdərɪŋ}}
* {{hyphenation|nl|ver|ga|de|ring}}
==={{section|n}}===
{{nl-noun|f|-en|++}}
# Cuộc [[gặp gỡ]], cuộc [[hội họp]], [[hội nghị]].
===={{section|drv}}====
{{col|nl
|landsvergadering
|standenvergadering
|werkvergadering
}}
===={{section|desc}}====
* {{desc|dcr|vergaadering}}
* {{desc|bew|perhadring|bor=1}}
* {{desc|jvn|begandring|bor=1}}
* {{desc|id|bor=1|begandering}}
rv00h4j2ze7puwpgc6418r0eh7t3ma7
muziekinstrument
0
216640
2567188
2499855
2026-09-28T15:47:16Z
Hiyuune
50834
2567188
wikitext
text/x-wiki
=={{langname|nl}}==
[[Image:Classical Guitar two views.jpg|thumb|Een ''muziekinstrument'': een akoestische gitaar.]]
==={{section|etym}}===
Từ ghép của {{com|nl|muziek|t1=âm nhạc|instrument|t2=dụng cụ}}.
==={{section|pron}}===
* {{IPA|nl|/mʏˈzik.ɪn.stryˌmɛnt/}}
* {{audio|nl|Nl-muziekinstrument.ogg}}
* {{hyphenation|nl|mu|ziek|in|stru|ment}}
==={{section|n}}===
{{nl-noun|n|-en|+}}
# [[nhạc cụ|Nhạc cụ]].
#: {{syn|nl|instrument|speeltuig}}
bhafepanui6xmkpmk11snb5h9f2ott4
peopling
0
218065
2567251
2163056
2026-09-29T06:51:17Z
Hiyuune
50834
2567251
wikitext
text/x-wiki
=={{langname|en}}==
==={{section|v}}===
{{head|en|Biến thể hình thái động từ}}
# {{infl of|en|people||ing-form}}.
==={{section|ana}}===
* {{đảo chữ|en|a=egilnopp|popeling}}
m7rbrcoxrxxseoujm640doaubss2j5g
peoples
0
218067
2567250
2006291
2026-09-29T06:50:04Z
Hiyuune
50834
2567250
wikitext
text/x-wiki
{{also|Peoples|people's}}
=={{langname|en}}==
==={{section|pron}}===
* {{IPA|en|/ˈpiːpəlz/}}
* {{audio|en|en-us-peoples.ogg|a=US}}
==={{section|n}}===
{{head|en|Biến thể hình thái danh từ}}
# {{plural of|en|people}}
# {{lb|en|chiefly|AAVE|nonstandard}} {{plural of|en|person}}
==={{section|v}}===
{{head|en|Biến thể hình thái động từ}}
# {{infl of|en|people||s-verb-form}}
=={{langname|fr}}==
==={{section|n}}===
{{head|fr|Biến thể hình thái danh từ|g=m}}
# {{plural of|fr|people}}
i90j88ylur7eep6bnr6m0vqucgu2wwk
혼자
0
246183
2567229
1989283
2026-09-29T03:43:36Z
Hiyuune
50834
2567229
wikitext
text/x-wiki
=={{langname|ko}}==
==={{section|etym}}===
{{ko-etym-native|yb|ᄒᆞᄫᆞᅀᅡ|hoWoza}} Cùng gốc với {{ko-l|한|một}}, {{ko-l|홀로}}.
==={{section|pron}}===
{{ko-IPA|a=LL-Q9176 (kor)-HappyMidnight-혼자.wav}}
==={{section|n}}===
{{ko-noun}}
# [[cô đơn|Cô đơn]]; [[một mình]].
m5zbmg3ijp5yept9nho4xn7kt0fxhpe
스토어
0
246233
2567233
1750113
2026-09-29T03:53:01Z
Hiyuune
50834
2567233
wikitext
text/x-wiki
=={{langname|ko}}==
==={{section|etym}}===
Từ {{bor|ko|en|store}}.
==={{section|pron}}===
{{ko-IPA}}
==={{section|n}}===
{{ko-noun}}
# [[cửa hàng|Cửa hàng]]; [[cửa hiệu]].
qpgls3bq85ajjpqa6m4a4bngctczmvu
신정
0
246266
2567228
1989178
2026-09-29T03:42:31Z
Hiyuune
50834
2567228
wikitext
text/x-wiki
=={{langname|ko}}==
==={{section|pron}}===
* {{ko-IPA}}
==={{section|n}}===
{{ko-noun|hanja=新正}}
# [[Tết Dương lịch]].
#: {{syn|ko|양력(陽曆)설}}
#: {{ant|ko|구정(舊正)}}
#: {{hyper|ko|새해|신년(新年)}}
f1xpxopbt4z4edwxqhymkdzns6gimku
자몽
0
246273
2567230
1989221
2026-09-29T03:47:27Z
Hiyuune
50834
2567230
wikitext
text/x-wiki
=={{langname|ko}}==
==={{section|etym}}===
{{bor+|ko|ja|-}} {{ja-l|ザボン}} ([[pomélo]], {{taxfmt|Citrus maxima|loài}}), từ {{der|ko|pt|zamboa}}.
==={{section|pron}}===
{{ko-IPA}}
==={{section|n}}===
{{ko-noun}}
# Quả [[bưởi]], {{taxfmt|Citrus paradisi|loài}}.
===={{section|syn}}====
* {{ko-l|그레이프프루트}}
{{C|ko|Trái cây}}
ne9qxb0lfhdadu950nford6yjvm29jj
다리
0
246293
2567235
1989105
2026-09-29T04:36:20Z
Hiyuune
50834
2567235
wikitext
text/x-wiki
=={{langname|ko}}==
==={{section|etym}} 1===
{{ko-etym-native|hh|ᄃᆞ리|tòlì}}
===={{section|pron}}====
{{ko-IPA}}
* {{ko-tone|LH_reg}}
===={{section|n}}====
{{ko-noun}}
# [[cầu|Cầu]].
==={{section|etym}} 2===
{{ko-etym-native|ss|다리|tàlì}}
===={{section|pron}}====
{{ko-IPA}}
* {{ko-tone|LH_reg}}
===={{section|n}}====
{{ko-noun}}
# [[chân|Chân]], [[cẳng]].
# [[cánh tay|Cánh tay]].
==={{section|etym}} 3===
Dạng rút gọn của {{m|ko|[[다르다|다른]] [[이#người|이]]|t=người khác}}.
===={{section|pron}}====
{{ko-IPA}}
* {{ko-tone|LF}}
===={{section|n}}====
{{ko-noun}}
# {{lb|ko|northern|_|Gyeongsang}} [[người|Người]] [[khác]].
#: {{syn|ko|남}}
====={{section|alt}}=====
* {{alter|ko|다리이}}
{{C|ko|Giải phẫu học}}
ivpb1rmq30vl8105j2jszh0c6zddok8
màn hình
0
247142
2567176
1877702
2026-09-28T15:02:32Z
Kateru Zakuro
34522
2567176
wikitext
text/x-wiki
=={{langname|vi}}==
{{-info-}}
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# Một [[thiết bị]] [[giúp]] [[hiển thị]] [[hình ảnh]] hay [[văn bản]] (của một thiết bị như [[máy tính]], [[điện thoại]],...)
===={{ĐM|trans}}====
{{trans-top}}
* {{langname|en}}: {{t|en|screen}}, {{t|en|display}}
{{trans-bottom}}
dptebvmo03xzycze0dx3iy65a9ahmrc
2567177
2567176
2026-09-28T15:13:30Z
Kateru Zakuro
34522
2567177
wikitext
text/x-wiki
=={{langname|vi}}==
{{-info-}}
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# Một [[thiết bị]] [[giúp]] [[hiển thị]] [[hình ảnh]] hay [[văn bản]] (của một thiết bị như [[máy tính]], [[điện thoại]],...)
===={{ĐM|trans}}====
{{trans-top}}
* {{langname|en}}: {{t|en|screen}}, {{t|en|display}}
* {{langname|bg}}: {{t|bg|монитор|m}}
* {{langname|fi}}: {{t+|fi|näyttö}}, {{t+|fi|monitori}}
* {{langname|pt}}: {{t+|pt|display|m}}, {{t+|pt|ecrã|m}} {{qualifier|Bồ Đào Nha}}, {{t+|pt|tela|f}} {{qualifier|Brasil}}
* {{langname|ru}}: {{t+|ru|диспле́й|m}}, {{t+|ru|диспле́й|m|tr=displɛ́j}}, {{t+|ru|монито́р|m}}, {{t+|ru|экра́н|m}}
{{trans-bottom}}
iqnupnzmaa9x9n4jkp9mz1cb0e6f8yz
derde
0
253339
2567205
2299393
2026-09-28T16:27:11Z
Hiyuune
50834
/* Biến tố */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567205
wikitext
text/x-wiki
=={{langname|af}}==
{{number box|af|3}}
==={{ĐM|pron}}===
* {{audio|af|LL-Q14196 (afr)-Oesjaar-derde.wav}}
==={{ĐM|adj}}===
{{af-adj||-}}
# {{cln|af|Số thứ tự}} [[thứ ba|Thứ ba]].
===={{ĐM|alter}}====
* {{l|af|3de}}
* {{l|af|3e}}
=={{langname|nl}}==
{{number box|nl|3}}
==={{ĐM|etym}}===
Từ {{inh|nl|dum|derde}}, từ {{inh|nl|odt|thriddo}}, từ {{inh|nl|gem-pro|*þridjô}}.
==={{ĐM|pron}}===
* {{IPA4|nl|/ˈdɛr.də/}}
* {{audio|nl|Nl-derde.ogg}}
* {{hyphenation|nl|der|de}}
* {{rhyme|nl|ɛrdə}}
==={{ĐM|adj}}===
{{nl-adj|-}}
# [[thứ ba|Thứ ba]].
===={{ĐM|decl}}====
{{nl-decl-adj||-|part=-}}
===={{ĐM|desc}}====
* {{desc|af|derde}}
* {{desc|gmw-jdt|drîde}}
* {{desc|dcr|derde|driede}}
==={{ĐM|n}}===
{{nl-noun|n|-en|-}}
# [[phần|Phần]] [[ba]].
==={{ĐM|n}}===
{{nl-noun|m|g2=f|-en|-}}
# [[bên|Bên]] [[thứ ba]].
===={{ĐM|drv}}====
{{col|nl
|derdenwerking
}}
==={{ĐM|ana}}===
* {{l|nl|redde}}
{{cln|nl|Số thứ tự}}
{{C|nl|Ba}}
=={{langname|dum}}==
==={{ĐM|etym}}===
Từ {{inh|dum|odt|thriddo}}, từ {{inh|dum|gem-pro|*þridjô}}.
==={{ĐM|adj}}===
{{dum-adj}}
# [[thứ ba|Thứ ba]].
===={{ĐM|infl}}====
{{rfinfl|dum|tính từ}}
===={{ĐM|desc}}====
* {{desc|nl|derde}}
* {{desc|li|dèrdje}}
==={{ĐM|further}}===
* {{R:VMNW|ID57992}}
* {{R:MNW|06378}}
{{cln|dum|Số thứ tự}}
1i0iny5s1m16fsacor6ocxpvfvieus6
vâm
0
254196
2567254
2160728
2026-09-29T07:16:34Z
Hiyuune
50834
2567254
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "vam"}}
=={{langname|vi}}==
==={{section|pron}}===
{{vi-pron}}
==={{section|n}}===
{{vi-noun|[[𠢝]], [[]], [[勨]]|cls= con}}
# {{lb|vi|obsolete|honorific}} [[voi|Voi]].
#: {{ux|vi|Khỏe như '''vâm'''.}}
#* {{quote-book|vi|year=1915|author=lw:vi:Phan Kế Bính|title=Việt Nam phong tục|text=Con hùm kiêng gọi là [[ông ba mươi]], con rắn kiêng gọi là ông [[lốt]], con voi kiêng gọi là ông '''vâm'''.}}
#* {{quote-journal|vi|journal= Phổ Thông Bán Nguyệt San|date=1940-06-16|issue=61|author= w:vi:Nguyễn Công Hoan|title= Xuất giá tòng phu|titleurl= http://chimviet.free.fr/tienchie/0051nch/nchn066.htm|text= Nhưng khỏe như con '''vâm''', đưa khuỷu ra, ngài gạt vợ ngã lăn, và nắm chặt lấy hai cổ tay.}}
#* {{quote-song|vi|date=2012-12-05|title=Súy Vân Giả Dại|album=w:vi:Kim Nham|artist=w:vi:Thúy Ngần|time=17:32|url= https://www.youtube.com/watch?v=AwmXVNmaxp4&t=1052s|text=Kìa con '''vâm''' kia nó ấp thì trứng í ba ba. Cưỡi con gà mà đi đánh giặc.}}
=={{langname|scb}}==
==={{section|noun}}===
{{head|scb|Danh từ}}
# [[mâm|Mâm]].
ehv2hmt8ao1p32gu66ey6xu2gmxlah9
2567274
2567254
2026-09-29T10:54:10Z
TheHighFighter2
42988
/* Danh từ */
2567274
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "vam"}}
=={{langname|vi}}==
==={{section|pron}}===
{{vi-pron}}
==={{section|n}}===
{{vi-noun|[[𠢝]], [[]], [[勨]]|cls= con}}
# {{lb|vi|obsolete|honorific}} [[voi|Voi]].
#: {{ux|vi|Khỏe như '''vâm'''.}}
#* {{RQ:Phan Kế Bính VNPT|chapter=Các việc kiêng kỵ|text=Con hùm kiêng gọi là [[ông ba mươi]], con rắn kiêng gọi là ông [[lốt]], con voi kiêng gọi là ông '''vâm'''.}}
#* {{quote-journal|vi|journal= Phổ Thông Bán Nguyệt San|date=1940-06-16|issue=61|author= w:vi:Nguyễn Công Hoan|title= Xuất giá tòng phu|titleurl= http://chimviet.free.fr/tienchie/0051nch/nchn066.htm|text= Nhưng khỏe như con '''vâm''', đưa khuỷu ra, ngài gạt vợ ngã lăn, và nắm chặt lấy hai cổ tay.}}
#* {{quote-song|vi|date=2012-12-05|title=Súy Vân Giả Dại|album=w:vi:Kim Nham|artist=w:vi:Thúy Ngần|time=17:32|url= https://www.youtube.com/watch?v=AwmXVNmaxp4&t=1052s|text=Kìa con '''vâm''' kia nó ấp thì trứng í ba ba. Cưỡi con gà mà đi đánh giặc.}}
=={{langname|scb}}==
==={{section|noun}}===
{{head|scb|Danh từ}}
# [[mâm|Mâm]].
t9vsmgf4axd369e0h858ag3pqxmqxbp
조선민주주의인민공화국
0
254957
2567227
2041606
2026-09-29T03:39:53Z
Hiyuune
50834
2567227
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{section|etym}}===
{{ko-etym-sino|조선(朝鮮)|[[Triều Tiên]]|민주주의(民主主義)|[[dân chủ]]|인민(人民)|[[nhân dân]]|공화국(共和國)|[[cộng hòa]]}}.
==={{section|pron}}===
{{ko-IPA|조선 민주주의 인민 공화국|ui=7|l=12|cap=y}}
==={{section|pr-noun}}===
{{ko-propn|head=[[조선]][[민주주의]][[인민]][[공화국]]|rv=Joseon Minjujuui Inmin Gonghwaguk|hanja=朝鮮民主主義人民共和國}}
# [[Cộng hòa Dân chủ Nhân dân Triều Tiên]].
#: {{syn|ko|^조선(朝鮮)|^북한(北韓)}}
#: {{mero|ko|^평안남도(平安南道)|^평안북도(平安北道)|^함경남도(咸鏡南道)|^함경북도(咸鏡北道)|^황해남도(黃海南道)|^황해북도(黃海北道)|^자강도(慈江道)|^량강도(兩江道)|^강원도(江原道)}}
===={{section|desc}}====
* {{desc|bor=1|zh|朝鮮民主主義人民共和國}}
* {{desc|ja|bor=1}} {{ja-r|朝鮮民主主義人民共和国|ちょうせん みんしゅ しゅぎ じんみん きょうわこく}}
95qo24re6td04oj10pbkqj9tbacnlix
Mô đun:utilities/data
828
256189
2567239
2170411
2026-09-29T06:13:23Z
Hiyuune
50834
2567239
Scribunto
text/plain
local data = {}
-- Namespaces which format_categories will allow: (main), Appendix, Thesaurus, Citations, Reconstruction
data.category_namespaces = require("Module:table").listToSet{0, 100, 110, 114, 118}
-- Script that should be applied to links in categories.
data.catfix_scripts = {
["ab"] = "Cyrl",
["ae"] = "Avst",
["ar"] = "Arab",
["ary"] = "Arab",
["be"] = "Cyrl",
["cmn"] = "Hani",
["cu"] = "Cyrs",
["de"] = "Latn",
["el"] = "Grek",
["en"] = "Latn",
["fa"] = "Arab",
["grc"] = "Polyt",
["he"] = "Hebr",
["hi"] = "Deva",
["hu"] = "Latn",
["ja"] = "Jpan",
["ka"] = "Geor",
["ko"] = "Kore",
["mr"] = "Deva",
["nan-hbl"] = "Hani",
["orv"] = "Cyrs",
["ro"] = "Latn",
["ru"] = "Cyrl",
["sa"] = "Deva",
["sq"] = "Latn",
["syl"] = "Sylo",
["xfa"] = "Ital",
["yue"] = "Hani",
["zh"] = "Hani",
["zle-ono"] = "Cyrs",
["zle-ort"] = "Cyrs",
--[[
[""] = "",
]]
}
return data
5r3vjfz59oyil3lm07bfrszeq7w30yp
Wiktionary:Tin nhắn cho bảo quản viên
4
261101
2567241
2564913
2026-09-29T06:19:24Z
Hiyuune
50834
/* Xóa mô đun vì các chức năng đã sáp nhập vào Mô đun:string utilities */ Đề tài mới ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
2567241
wikitext
text/x-wiki
{{Wiktionary:Tin nhắn cho bảo quản viên/Đầu}}
==[[:en:MediaWiki:Gadget-AcceleratedFormCreation.js/intro|MediaWiki:Gadget-AcceleratedFormCreation.js/intro]]==
Phiền nhờ BQVGD nhập về để hiển thị thông điệp Mediawiki khi dùng accel tạo mục từ biến thể hình thái. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 03:56, ngày 18 tháng 9 năm 2026 (UTC)
: Tiện thể nhờ cập nhật [[MediaWiki:Gadget-ShowIDs.js]], [[MediaWiki:Gadget-ShowIDs-pagestyles.css]], [[MediaWiki:Gadget-ShowIDs.js]] để hiển thị đúng trong mục từ [[咽]] (dùng [[Bản mẫu:etymid]]). [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 15:48, ngày 19 tháng 9 năm 2026 (UTC)
== Xóa mô đun vì các chức năng đã sáp nhập vào [[Mô đun:string utilities]] ==
* [[Mô đun:utilities/scribunto parameter key]]
* [[Mô đun:string/php trim]]
[[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 06:19, ngày 29 tháng 9 năm 2026 (UTC)
bf20oiww1xdu7z761z2fshuwzh2062i
2567243
2567241
2026-09-29T06:21:17Z
Hiyuune
50834
/* Xóa mô đun vì các chức năng đã sáp nhập vào Mô đun:string utilities */ Trả lời ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]])
2567243
wikitext
text/x-wiki
{{Wiktionary:Tin nhắn cho bảo quản viên/Đầu}}
==[[:en:MediaWiki:Gadget-AcceleratedFormCreation.js/intro|MediaWiki:Gadget-AcceleratedFormCreation.js/intro]]==
Phiền nhờ BQVGD nhập về để hiển thị thông điệp Mediawiki khi dùng accel tạo mục từ biến thể hình thái. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 03:56, ngày 18 tháng 9 năm 2026 (UTC)
: Tiện thể nhờ cập nhật [[MediaWiki:Gadget-ShowIDs.js]], [[MediaWiki:Gadget-ShowIDs-pagestyles.css]], [[MediaWiki:Gadget-ShowIDs.js]] để hiển thị đúng trong mục từ [[咽]] (dùng [[Bản mẫu:etymid]]). [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 15:48, ngày 19 tháng 9 năm 2026 (UTC)
== Xóa mô đun vì các chức năng đã sáp nhập vào [[Mô đun:string utilities]] ==
* [[Mô đun:utilities/scribunto parameter key]]
* [[Mô đun:string/php trim]]
[[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 06:19, ngày 29 tháng 9 năm 2026 (UTC)
: + Đề nghị xóa [[Mô đun:utilities/set]] do đã sáp nhập vào mô đun chính. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 06:21, ngày 29 tháng 9 năm 2026 (UTC)
c3bgonkidouyc490sp99gogi71w4y0e
𐰋𐰇𐰼𐰃
0
264933
2567238
2052818
2026-09-29T06:11:11Z
Hiyuune
50834
2567238
wikitext
text/x-wiki
=={{langname|otk}}==
==={{section|etym}}===
{{inh+|otk|trk-pro|*bȫrü}}.
{{col-top|2|Các từ cùng gốc}}
Cùng gốc với {{cog|oui|𐽼𐽳𐽶𐽾𐽳|ts=börü}}, {{cog|klj|bö̂ri}}, {{cog|tr, crh|börü}}, {{cog|uz|bo‘ri}}, {{cog|kk|бөрі}}, {{cog|ug|بۆرە}}, {{cog|ba|бүре}}, {{cog|cjs|пӧрӱ|tr=pörü}}, {{cog|kjh|пӱӱр}}, {{cog|tyv|бөрү}}, và {{cog|sah, dlg|бөрө|tr=börö}}.
{{col-bottom}}
==={{section|n}}===
{{head|otk|Danh từ|tr=böri}}
# [[chó sói|Chó sói]].
==={{section|further}}===
* {{R:otk:Tekin:1968|entry=böri|page=320}}
* {{R:trk:Clauson|entry=böri|pages=356}}
{{c|otk|Họ Chó|Động vật}}
b4art9fecx4ayky1n86yg0v8pr5d95f
Mô đun:headword utilities
828
270803
2567197
2566650
2026-09-28T16:09:11Z
Hiyuune
50834
2567197
Scribunto
text/plain
local export = {}
local require_when_needed = require("Module:utilities/require when needed")
local affix_module = "Module:affix"
local debug_track_module = "Module:debug/track"
local decorations_module = "Module:decorations"
local en_utilities_module = "Module:en-utilities"
local fun_is_callable_module = "Module:fun/isCallable"
local headword_module = "Module:headword"
local headword_data_module = "Module:headword/data"
local languages_module = "Module:languages"
local links_module = "Module:links"
local parameters_module = "Module:parameters"
local parse_interface_module = "Module:parse interface"
local parse_utilities_module = "Module:parse utilities"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local yesno_module = "Module:yesno"
local dump = mw.dumpObject
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
local insert = table.insert
local concat = table.concat
local remove = table.remove
local sort = table.sort
local deep_equals = require_when_needed(table_module, "deepEquals")
local extend = require_when_needed(table_module, "extend")
local insert_if_not = require_when_needed(table_module, "insertIfNot")
local list_to_set = require_when_needed(table_module, "listToSet")
local serial_comma_join = require_when_needed(table_module, "serialCommaJoin")
local shallow_copy = require_when_needed(table_module, "shallowCopy")
local split = require_when_needed(string_utilities_module, "split")
local ugsub = require_when_needed(string_utilities_module, "gsub")
local umatch = require_when_needed(string_utilities_module, "match")
local pattern_escape = require_when_needed(string_pattern_escape_module)
local replacement_escape = require_when_needed(string_replacement_escape_module)
local escape_wikicode = require_when_needed(parse_utilities_module, "escape_wikicode")
local parse_inline_modifiers = require_when_needed(parse_utilities_module, "parse_inline_modifiers")
local term_contains_top_level_html = require_when_needed(parse_utilities_module, "term_contains_top_level_html")
local get_lang_by_code = require_when_needed(languages_module, "getByCode")
local is_callable = require_when_needed(fun_is_callable_module)
local format_decorations = require_when_needed(decorations_module, "format_decorations")
local function split_on_comma(val)
if val:find(",") then
return require(parse_interface_module).split_on_comma(val)
else
return {val}
end
end
local function ine(val)
if val == "" then return nil else return val end
end
--[=[
Add decorations to a term. `termobj` is the object describing the term, which should optionally contain:
* left qualifiers in `q`, an array of strings;
* right qualifiers in `qq`, an array of strings;
* left labels in `l`, an array of strings;
* right labels in `ll`, an array of strings;
* references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text`
(formatted reference text) and optionally `name` and/or `group`;
`text` is the text of the term itself, and `lang` is the language object.
]=]
local function add_decorations(text, termobj, lang)
local function field_non_empty(field)
local list = termobj[field]
if not list then
return nil
end
if type(list) ~= "table" then
error(("Internal error: Wrong type for `termobj.%s`=%s, should be \"table\""):format(
field, mw.dumpObject(list)))
end
return list[1]
end
if field_non_empty("q") or field_non_empty("qq") or field_non_empty("l") or field_non_empty("ll") or
field_non_empty("refs") then
text = format_decorations {
lang = lang,
text = text,
q = termobj.q,
qq = termobj.qq,
l = termobj.l,
ll = termobj.ll,
refs = termobj.refs,
}
end
return text
end
local param_mods = {
id = {}, -- disabled when `is_head = true`
q = {type = "qualifier"},
qq = {type = "qualifier"},
l = {type = "labels"},
ll = {type = "labels"},
-- [[Module:headword]] expects part references in `.refs`.
ref = {item_dest = "refs", type = "references", store = "insert-flattened"},
}
local optional_param_mods = {
g = {item_dest = "genders", type = "genders"},
alt = {},
lang = {type = "language"},
sc = {type = "script"},
t = {item_dest = "gloss"},
gloss = {},
pos = {},
lit = {},
tr = {},
ts = {},
face = {},
nolinkinfl = {type = "boolean"},
}
local optional_headword_param_mods = {
sc = {type = "script"},
tr = {},
ts = {},
}
--[==[
Parse a single inflection or headword form or list of such forms. In either case, inline modifiers may be attached.
`data` is an object with the following fields:
* `val`: The raw value to parse. Required.
* `paramname`: The name of the parameter from which the value was taken; used in error messages. Required.
* `is_head`: We are parsing a headword parameter (a value which goes into the `heads` field of `data`). This changes
the allowed modifiers, disabling the `id` modifier and only allowing a subset of optional modifiers.
* `frob`: An optional function of one value to apply to the form after inline modifiers have been removed (i.e. to
apply to the `.term` field of the returned object).
* `include_mods`: List of extra inline modifiers to include, besides the default ones (see below). Each list item is
either a string specifying a recognized extra inline modifier (see `optional_param_mods` in the code), or a two-item
list of modifier name and modifier spec, where the spec should follow the syntax for modifier specs in
`parse_inline_modifiers` in [[Module:parse utilities]].
* `exclude_mods`: List of default inline modifiers to not include.
* `splitchar`: If specified, the value in `val` can be a list of forms to parse, separated by the value of `splitchar`
(which is a Lua pattern, as in `parse_inline_modifiers` in [[Module:parse utilities]]). Most commonly, `splitchar` is
a single comma and the values are comma-separated (in this case, splitting will not happen if a space follows the
comma).
* `parse_lang_prefix`: If specified, allow a language prefix to precede a form, and if found, store into the `.lang`
field of the returned object.
* `preserve_splitchar`, `delimiter_key`, `escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in
`parse_inline_modifiers` in [[Module:parse utilities]].
Returns an object suitable for storing as one element of one of the lists in `headdata.inflections`, where `headdata`
is the structure passed to [[Module:headword]]. If `splitchar` is specified, howeve, the return value is a list of such
objects.
The following default inline modifiers are currently recognized:
* `q`: Left qualifier.
* `qq`: Right qualifier.
* `l`: Comma-separated list of left labels. No space should follow the comma.
* `ll`: Comma-separated list of right labels. No space should follow the comma.
* `ref`: Reference or references. See {{tl|IPA}} for the syntax.
* `id`: Sense ID, in case there are multiple senses. See {{tl|l}}.
The following are the recognized additional inline modifiers:
* `g`: Comma-separated list of genders.
* `alt`: Display text.
* `lang`: Language code of language of the form, if different from the language of the headword.
* `sc`: Script code of script of the form. Almost never needed.
* `t`: Gloss for the form.
* `gloss`: Gloss for the form (alias for `t`).
* `pos`: Part of speech of the form.
* `lit`: Literal meaning of the form.
* `tr`: Manual transliteration of the form.
* `ts`: Transcription of the form, for languages where the transliteration differs markedly from the pronunciation.
* `face`: Face to display the form in, e.g. {"hypothetical"} for a hypothetical form (unlinkable and displayed in italics).
* `nolinkinfl`: Make the form unlinkable.
]==]
function export.parse_term_with_modifiers(data)
local paramname, val, frob = data.paramname, data.val, data.frob
local function generate_obj(term, parse_err)
if frob then
term = frob(term, parse_err)
end
if data.parse_lang_prefix and term:find(":") then
return require(parse_utilities_module).generate_obj_maybe_parsing_lang_prefix {
term = term,
paramname = paramname,
parse_lang_prefix = true,
parse_err = parse_err,
}
else
return {term = term}
end
end
-- Check for inline modifier, e.g. מרים<tr:Miryem>. But exclude top-level HTML entry with <span ...>,
-- <sup> or similar in it.
if (val:find("<", nil, true) or data.splitchar) and not term_contains_top_level_html(val) and
-- don't parse inline modifiers if is_head and the value begins with a ~ (link modifier syntax)
(not data.is_head or not val:find("^~")) then
local param_mods = param_mods
if data.is_head then
param_mods = shallow_copy(param_mods)
param_mods.id = nil
end
if data.include_mods or data.exclude_mods then
if not data.is_head then
-- already copied when data.is_head
param_mods = shallow_copy(param_mods)
end
if data.include_mods then
local optional_mods = data.is_head and optional_headword_param_mods or optional_param_mods
for _, mod in ipairs(data.include_mods) do
if type(mod) == "table" then
if #mod ~= 2 then
error(("Internal error: Modifier spec %s in `include_mods` should be of length 2"):format(
dump(mod)))
end
local modkey, modvalue = unpack(mod)
param_mods[modkey] = modvalue
elseif not optional_mods[mod] then
error(("Internal error: Unrecognized modifier spec %s in `include_mods`"):format(
dump(mod)))
else
param_mods[mod] = optional_mods[mod]
end
end
end
if data.exclude_mods then
for _, mod in ipairs(data.exclude_mods) do
if not param_mods[mod] then
error(("Internal error: Modifier spec %s in `exclude_mods` not found among existing modifiers"
):format(dump(mod)))
else
param_mods[mod] = nil
end
end
end
end
return parse_inline_modifiers(val, {
paramname = paramname,
param_mods = param_mods,
generate_obj = generate_obj,
splitchar = data.splitchar,
preserve_splitchar = data.preserve_splitchar,
delimiter_key = data.delimiter_key,
escape_fun = data.escape_fun,
unescape_fun = data.unescape_fun,
pre_normalize_modifiers = data.pre_normalize_modifiers,
})
else
local retval = generate_obj(val)
if data.splitchar then
retval = {retval}
end
return retval
end
end
--[==[
Parse a list of inflection forms that may have inline modifiers attached. `data` is an object with the following fields:
* `forms`: The list of raw values to parse. Required.
* `paramname`: The name of the first parameter from which the value was taken; used in error messages. If this is a
two-element list, the first element is the first parameter and the second element is the prefix of the remaining
parameters. Parameter names that are numbers are handled correctly, as are those with \1 in it marking where the
parameter index goes. Required.
* `qualifiers`: If specified, a possibly gappy list of left qualifiers to add to the parsed terms (for compatibility
purposes).
* `splitchar`: As in `parse_term_with_modifiers()`. The resulting per-term lists will be flattened.
* `frob`, `include_mods`, `exclude_mods`, `is_head`, `preserve_splitchar`, `parse_lang_prefix`, `delimiter_key`,
`escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_term_with_modifiers()`.
Returns a list of objects, suitable for storing as one of the lists in `headdata.inflections` (once a label is added),
where `headdata` is the structure passed to [[Module:headword]].
]==]
function export.parse_term_list_with_modifiers(data)
local paramname, forms = data.paramname, data.forms
local qualifiers = data.qualifiers
local first, restpref
if type(paramname) == "table" then
first = paramname[1]
restpref = paramname[2]
else
first = paramname
restpref = paramname
end
local terms = {}
data = shallow_copy(data)
for i, val in ipairs(forms) do
data.paramname = i == 1 and first or type(restpref) == "number" and restpref + i - 1 or
restpref:find("\1", nil, true) and restpref:gsub("\1", tostring(i)) or restpref .. i
data.val = val
local parsed = export.parse_term_with_modifiers(data)
if qualifiers and qualifiers[i] then
if data.splitchar then
for _, term in ipairs(parsed) do
term.q = {qualifiers[i]}
end
else
parsed.q = {qualifiers[i]}
end
end
if data.splitchar then
extend(terms, parsed)
else
terms[i] = parsed
end
end
return terms
end
--[==[
Construct a link to [[Appendix:Glossary]] for `entry`. If `text` is specified, it is the display text; otherwise,
`entry` is used.
]==]
function export.glossary_link(entry, text)
text = text or entry
return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]"
end
function export.replace_glossary_links_in_label(label)
if label:find("<<", nil, true) then
label = label:gsub("<<(.-)|(.-)>>", export.glossary_link):gsub("<<(.-)>>", export.glossary_link)
end
return label
end
--[==[
Insert a fixed inflection (a label not associated with any inflection values) into an `inflections` field. The
`inflections` field will be initialized if needed. `data` is an object with the following fields:
* `headdata`: The headword structure passed to [[Module:headword]]. Required.
* `inflobj`: The object whose `inflections` field the terms are inserted into. Defaults to `headdata`. Only needs
to be set for nested inflections, which are specified for an inflection object rather than the headword data
structure as a whole.
* `label`: The label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the
glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) Required.
* `originating_term`: The term object from which this label is derived. If specified, decorations will be taken from
this object.
]==]
function export.insert_fixed_inflection(data)
local headdata, origterm, label = data.headdata, data.originating_term, data.label
local inflobj = data.inflobj or headdata
inflobj.inflections = inflobj.inflections or {}
if not origterm then
insert(inflobj.inflections, {
label = export.replace_glossary_links_in_label(label)
})
else
if origterm.id then
error(("It doesn't make sense to pass in an ID '%s' for label '%s' in conjunction with a term value '%s'"
):format(origterm.id, label, origterm.term))
end
origterm = shallow_copy(origterm)
-- Preserve decorations
origterm.term = nil
origterm.label = export.replace_glossary_links_in_label(label)
insert(inflobj.inflections, origterm)
end
end
--[==[
Insert previously-parsed terms into an `inflections` field. The `inflections` field will be initialized if needed.
`data` is an object with the following fields:
* `headdata`: The headword structure passed to [[Module:headword]]. Required.
* `inflobj`: The object whose `inflections` field the terms are inserted into. Defaults to `headdata`. Only needs
to be set for nested inflections, which are specified for an inflection object rather than the headword data
structure as a whole.
* `terms`: The list of parsed terms. If {nil} or omitted, nothing happens unless `request` is set.
* `label`: The label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the
glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) Required.
* `no_label`: If the term is {"-"} and there are no other terms, insert a fixed label with this value. Defaults to
{"no "} plus the label.
* `usually_no_label`: If the term is {"-"} and there are other terms, insert a fixed label with this value. Defaults to
{"usually no "} plus the label.
* `cats`: List of categories to insert when terms are given that are not {"-"}. Each category is a string naming a full
category to insert (including the appropriate language name prefixed).
* `no_cats`: List of categories to insert when a term is given as {"-"}.
* `usually_no_cats`: List of categories to insert when a term is given as {"-"} and additional terms are specified as
well (representing, e.g. for the inflection {"plural"}, a term which usually has no plural but does under some
circumstances). If omitted, both the categories in `cats` and `no_cats` are inserted.
* `accel`: If specified, a full accelerator object to add to the inflections.
* `request`: If specified and no terms are given, insert a label with a request for inflections to be given.
* `enable_auto_translit`: If specified and terms are given, display automatic transliteration of the terms.
The return value indicates whether the inflection exists and how many terms are in it. It is an object with the
following fields:
* `exists`: {"yes"} if one or more terms were specified; {"no"} if the value was given as {"-"}; {"usually no"} if
the first value was given as {"-"} but additional terms were supplied; otherwise {nil}, indicating that the status
is unspecified.
* `numterms`: Number of terms in the inflection. Will be 0 unless `exists` has the value {"yes"} or {"usually no"}.
* `request`: True if no terms were specified but a term request was inserted into the inflection (because
`data.request` was specified). Otherwise {nil}.
]==]
function export.insert_inflection(data)
local headdata, terms, label = data.headdata, data.terms, data.label
local inflobj = data.inflobj or headdata
local retval = {}
local accel = data.accel
if data.accel_form then
if accel then
error("Internal error: can't specify both data.accel and data.accel_form")
end
if headdata.heads then
local lemmas = {}
local lemma_translits = {}
for i, headobj in ipairs(headdata.heads) do
lemmas[i] = headobj.term
if lemmas[i] == "+" then
error("Internal error: If you use data.accel_form, you should have resolved all occurrences of + in heads appropriately")
end
lemma_translits[i] = headobj.tr
end
accel = {
lemma = lemmas,
lemma_translit = lemma_translits,
form = data.accel_form,
}
else
accel = {
form = data.accel_form,
}
end
end
local function insert_cats(cats)
for _, cat in ipairs(cats) do
insert(headdata.categories, cat)
end
end
if terms and terms[1] then
terms = shallow_copy(terms)
if terms[1].term == "-" then
if terms[2] then
export.insert_fixed_inflection {
headdata = headdata,
inflobj = inflobj,
originating_term = terms[1],
label = data.usually_no_label or "thường không " .. label,
}
remove(terms, 1)
retval.numterms = #terms
retval.exists = "thường không"
if data.usually_no_cats then
insert_cats(data.usually_no_cats)
else
if data.no_cats then
insert_cats(data.no_cats)
end
if data.cats then
insert_cats(data.cats)
end
end
else
export.insert_fixed_inflection {
headdata = headdata,
inflobj = inflobj,
originating_term = terms[1],
label = data.no_label or "không " .. label,
}
retval.numterms = 0
retval.exists = "không"
if data.no_cats then
insert_cats(data.no_cats)
end
return retval
end
else
retval.numterms = #terms
retval.exists = "có"
if data.cats then
insert_cats(data.cats)
end
end
if data.check_missing then
error("Internal error: check_missing support removed; use checkredlinks=true in [[Module:headword]]")
end
terms.label = export.replace_glossary_links_in_label(label)
if accel then
terms.accel = accel
end
terms.enable_auto_translit = data.enable_auto_translit
inflobj.inflections = inflobj.inflections or {}
insert(inflobj.inflections, terms)
elseif data.request then
inflobj.inflections = inflobj.inflections or {}
insert(inflobj.inflections, {
label = export.replace_glossary_links_in_label(label),
request = true,
})
retval.numterms = 0
-- retval.exists = nil
retval.request = true
else
retval.numterms = 0
-- retval.exists = nil
end
return retval
end
--[==[
Parse raw arguments from `forms` for inline modifiers, and insert the resulting terms (which should not require
significant additional processing) into `headdata.inflections`. `data` is an object with the following fields:
* `forms`: The list of raw values to parse. If {nil} or omitted, nothing happens.
* `headdata`: The headword structure passed to [[Module:headword]]. Required.
* `paramname`: As in `parse_term_list_with_modifiers()`. Required.
* `label`: As in `insert_inflection()`. Required.
* `qualifiers`, `frob`, `include_mods`, `exclude_mods`, `is_head`, `splitchar`, `preserve_splitchar`, `delimiter_key`,
`escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_term_list_with_modifiers()`.
* `accel`: As in `insert_inflection()`.
Return value is as in `insert_inflection()`.
]==]
function export.parse_and_insert_inflection(data)
local forms = data.forms
if forms and forms[1] then
data = shallow_copy(data)
data.forms = forms
data.terms = export.parse_term_list_with_modifiers(data)
return export.insert_inflection(data)
end
return {
numterms = 0
}
end
--[==[
Canonicalize a single term or term-like object or a list of either into a list of term-like objects. `abterms` is the
term or list to canonicalize, and `field` is the name of the field holding the term (defaulting to {"term"}). This
does the minimal work necessary, meaning that the return value may partly or completely share memory with the value
passed in. As a special case, if `abterms` is {nil}, {nil} is returned. If `origin_val` is specified, add a field
`origin` containing the value of `origin_val` to each resulting term-like object (in this case, the object will be
copied a necessary to avoid side-effecting the passed-in objects).
]==]
function export.canonicalize_termobj_list(abterms, field, origin_val)
if abterms == nil then
return nil
end
field = field or "term"
if type(abterms) == "string" then
return {{[field] = abterms, origin = origin_val}}
elseif not abterms[1] then
if origin_val ~= nil then
abterms = shallow_copy(abterms)
abterms.origin = origin_val
end
return {abterms}
else
-- Check if already in full list term and return directly if so (unless `origin_val` is given, in which case we
-- need to shallow-copy both the list and each term in it).
local must_convert = false
for _, term in ipairs(abterms) do
if type(term) == "string" then
must_convert = true
break
end
end
if not must_convert then
if origin_val ~= nil then
abterms = shallow_copy(abterms)
for i, abterm in ipairs(abterms) do
abterms[i] = shallow_copy(abterm)
abterms[i].origin = origin_val
end
end
return abterms
end
end
local retval = {}
for _, term in ipairs(abterms) do
if type(term) == "string" then
insert(retval, {[field] = term, origin = origin_val})
else
if origin_val ~= nil then
term = shallow_copy(term)
term.origin = origin_val
end
insert(retval, term)
end
end
return retval
end
--[==[
Combine two sets of decorations. If either is {nil}, just return the other, and if both are {nil}, return {nil}.
]==]
function export.combine_decorations(decs1, decs2)
if not decs1 and not decs2 then
return nil
end
if not decs1 then
return decs2
end
if not decs2 then
return decs1
end
local combined = shallow_copy(decs1)
for _, dec in ipairs(decs2) do
insert_if_not(combined, dec)
end
return combined
end
function export.combine_qualifiers_or_labels(...)
-- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026.
error("Vui lòng dùng combine_decorations")
end
--[==[
Combine the decorations (qualifiers, labels, references) and ID's of two term objects. `destobj` is the "destination
term object" into which the combined properties are written, and `srcobj` is the "source object" into which the
properties are merged. `destobj` is side-effected (but the lists inside of `destobj` are not); if this is undesirable,
make sure to shallow-copy `destobj` first. If both objects have values for a given decoration, the values of `destobj`
come first. If both objects have a value for `id`, the values must match or an error is thrown; otherwise, the resulting
value of `id` comes from whichever one is defined.
'''NOTE:''' This may not be the correct behavior when deduplicating a list of term objects. See
`insert_termobj_combining_duplicates` for a different approach.
]==]
function export.combine_termobj_decorations(destobj, srcobj)
destobj.q = export.combine_decorations(destobj.q, srcobj.q)
destobj.qq = export.combine_decorations(destobj.qq, srcobj.qq)
destobj.l = export.combine_decorations(destobj.l, srcobj.l)
destobj.ll = export.combine_decorations(destobj.ll, srcobj.ll)
destobj.refs = export.combine_decorations(destobj.refs, srcobj.refs)
if destobj.id and srcobj.id and destobj.id ~= srcobj.id then
-- FIXME: We probably want to pass in an error function
error(("Can't specify two different ID's %s and %s when combining objects"):format(srcobj.id, destobj.id))
end
destobj.id = destobj.id or srcobj.id
return destobj
end
function export.combine_termobj_qualifiers_labels(...)
-- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026.
error("Vui lòng dùng combine_termobj_decorations")
end
function export.termobj_has_decorations(obj)
return obj.q and obj.q[1] or obj.qq and obj.qq[1] or obj.l and obj.l[1] or obj.ll and obj.ll[1] or
obj.refs and obj.refs[1]
end
function export.termobj_has_qualifiers_or_labels(...)
-- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026.
error("Vui lòng dùng termobj_has_decorations")
end
local function one_decoration_equal(prop1, prop2)
local prop1_is_nil = not prop1 or not prop1[1]
local prop2_is_nil = not prop2 or not prop2[1]
if prop1_is_nil and prop2_is_nil then
return true
end
if prop1_is_nil or prop2_is_nil then
return false
end
return deep_equals(prop1, prop2)
end
function export.termobj_decorations_equal(obj1, obj2)
return one_decoration_equal(obj1.q, obj2.q) and
one_decoration_equal(obj1.qq, obj2.qq) and
one_decoration_equal(obj1.l, obj2.l) and
one_decoration_equal(obj1.ll, obj2.ll) and
one_decoration_equal(obj1.refs, obj2.refs) and
obj1.id == obj2.id
end
function export.termobj_ancillary_properties_equal(...)
-- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026.
error("Vui lòng dùng termobj_decorations_equal")
end
function export.convert_termobj_to_formobj(termobj)
local formobj = {
form = termobj.term,
translit = termobj.tr,
}
local footnotes
local function mods_to_footnote(mod_prefix, mod_vals)
if mod_vals and mod_vals[1] then
footnotes = footnotes or {}
for _, val in ipairs(mod_vals) do
insert(footnotes, "[" .. mod_prefix .. ":" .. val .. "]")
end
end
end
mods_to_footnote("q", termobj.q)
mods_to_footnote("qq", termobj.qq)
mods_to_footnote("l", termobj.l)
mods_to_footnote("ll", termobj.ll)
mods_to_footnote("ref", termobj.refs)
mods_to_footnote("id", termobj.id and {termobj.id} or nil)
formobj.footnotes = footnotes
return formobj
end
local recognized_multi_mods = {
q = "q",
qq = "qq",
l = "l",
ll = "ll",
ref = "refs",
}
local recognized_single_mods = {
id = "id",
}
function export.add_footnote_to_termobj(termobj, footnote)
local stripped_footnote = footnote:match("^%[(.*)%]$")
if not stripped_footnote then
error("Internal error: Footnote should be surrounded by brackets at this stage: " .. footnote)
end
local prefix, rest = stripped_footnote:match("^([a-z]+):(.+)$")
local field, is_multi
if prefix then
if recognized_multi_mods[prefix] then
field = recognized_multi_mods[prefix]
is_multi = true
elseif recognized_single_mods[prefix] then
field = recognized_single_mods[prefix]
is_multi = false
end
end
if not field then
rest = stripped_footnote
field = "l"
is_multi = true
end
if is_multi then
if not termobj[field] then
termobj[field] = {}
end
insert(termobj[field], rest)
else
if termobj[field] and termobj[field] ~= rest then
error(("Không thể đặt hai giá trị của '%s': '%s' và '%s'"):format(field, termobj[field], rest))
end
termobj[field] = rest
end
end
function export.convert_formobj_to_termobj(formobj)
local termobj = {
term = formobj.form,
tr = formobj.translit,
}
if formobj.footnotes then
for _, footnote in ipairs(formobj.footnotes) do
export.add_footnote_to_termobj(termobj, footnote)
end
end
return termobj
end
local function extract_termobj_field_modifiers(fieldval)
return fieldval:match("^([*+]?)(.*)$")
end
function export.remove_termobj_field_modifiers(termobj)
local function remove_field_modifiers(field)
if termobj[field] and termobj[field][1] then
local any_field_modifiers = false
for _, val in ipairs(termobj[field]) do
local field_mods, _ = extract_termobj_field_modifiers(val)
if field_mods ~= "" then
any_field_modifiers = true
break
end
end
local new_field = {}
if any_field_modifiers then
for _, val in ipairs(termobj[field]) do
local _, field_without_mods = extract_termobj_field_modifiers(val)
insert_if_not(new_field, field_without_mods)
end
termobj[field] = new_field
end
end
end
remove_field_modifiers("q")
remove_field_modifiers("qq")
remove_field_modifiers("l")
remove_field_modifiers("ll")
remove_field_modifiers("refs")
end
function export.insert_termobj_combining_duplicates(destobjs, termobj)
for _, destobj in ipairs(destobjs) do
if destobj.term == termobj.term and destobj.tr == termobj.tr then
-- Form already present; maybe combine footnotes.
local function combine_field_values(field)
if termobj[field] and termobj[field][1] then
-- Check to see if there are existing values with *; if so, remove them.
if destobj[field] and destobj[field][1] then
local any_values_with_asterisk = false
for _, val in ipairs(destobj[field]) do
local field_mods, _ = extract_termobj_field_modifiers(val)
if field_mods:find("%*") then
any_values_with_asterisk = true
break
end
end
if any_values_with_asterisk then
local filtered_values = {}
for _, val in ipairs(destobj[field]) do
local field_mods, _ = extract_termobj_field_modifiers(val)
if not field_mods:find("%*") then
insert(filtered_values, val)
end
end
if filtered_values[1] then
destobj[field] = filtered_values
else
destobj[field] = nil
end
end
end
local any_footnotes_with_plus = false
for _, val in ipairs(termobj[field]) do
local field_mods, _ = extract_termobj_field_modifiers(val)
if field_mods:find("%+") then
any_footnotes_with_plus = true
break
end
end
if any_footnotes_with_plus then
if not destobj[field] then
destobj[field] = {}
else
destobj[field] = shallow_copy(destobj[field])
end
for _, val in ipairs(termobj[field]) do
local already_seen = false
local field_mods, field_without_mods = extract_termobj_field_modifiers(val)
if field_mods:find("%+") then
for _, existing_val in ipairs(destobj[field]) do
local _, existing_field_without_mods =
extract_termobj_field_modifiers(existing_val)
if existing_field_without_mods == field_without_mods then
already_seen = true
break
end
end
if not already_seen then
insert(destobj[field], val)
end
end
end
end
end
end
combine_field_values("q")
combine_field_values("qq")
combine_field_values("l")
combine_field_values("ll")
combine_field_values("refs")
if destobj.id and termobj.id and destobj.id ~= termobj.id then
-- FIXME: We probably want to pass in an error function
error(("Can't specify two different ID's %s and %s when combining objects"):format(termobj.id, destobj.id))
end
destobj.id = destobj.id or termobj.id
return
end
end
insert(destobjs, termobj)
end
export.allowed_special_indicators = {
["first"] = true,
["first-second"] = true,
["first-last"] = true,
["second"] = true,
["last"] = true,
["each"] = true,
["+"] = true, -- requests the default behavior with preposition handling
}
--[==[
Check for special indicators (values such as {"+first"} or {"+first-last"} that are used in a `pl`, `f`, etc. argument
and indicate how to inflect a multiword term). If `form` is such an indicator, the return value is `form` minus
the initial `+` sign; otherwise, if form begins with a `+` sign, an error is thrown; otherwise the return value is nil.
]==]
function export.get_special_indicator(form, noerror)
if form:find("^%+") then
form = form:gsub("^%+", "")
if not export.allowed_special_indicators[form] then
if noerror then
return nil
end
local indicators = {}
for indic, _ in pairs(export.allowed_special_indicators) do
insert(indicators, "+" .. indic)
end
sort(indicators)
error("Special inflection indicator beginning with '+' can only be " ..
mw.text.listToText(indicators) .. ": +" .. form)
end
return form
end
return nil
end
local function add_endings(bases, endings)
local retval = {}
if type(bases) ~= "table" then
bases = {bases}
end
if type(endings) ~= "table" then
endings = {endings}
end
for _, base in ipairs(bases) do
for _, ending in ipairs(endings) do
insert(retval, base .. ending)
end
end
return retval
end
--[==[
Inflect a possibly multiword or hyphenated term `form` using the function `inflect`, which is a function of one argument
that is called on a single word to inflect and should return either the inflected word or a list of inflected words.
`special` indicates how to inflect the multiword term and should be e.g. {"first"} to inflect only the first word,
{"first-last"} to inflect the first and last words, {"each"} to inflect each word, etc. See `allowed_special_indicators`
above for the possibilities. If `special` is `+`, or is omitted and the term is multiword (i.e. containing a space
character), and `prepositions` is supplied, the function checks for multiword or hyphenated terms containing the
prepositions in `prepositions`, e.g. Italian [[senso di marcia]] or [[medaglia d'oro]] or Portuguese
[[tartaruga-do-mar]]. If such a term is found, only the first word is inflected. Otherwise, the default is
{"first-last"}. `prepositions` is a list of Lua patterns matching prepositions. The patterns will automatically have the
separator character (space or hyphen) added to the left side but not the right side, so they should contain a space
character (which will automatically be converted to the appropriate separator) on the right side unless the preposition
is joined on the right side with an apostrophe. Examples of preposition patterns for Italian are {"di "}, {"sull'"} and
{"d?all[oae] "} (which matches {"dallo "}, {"dalle "}, {"alla "}, etc.).
The return value is always either a list of inflected multiword or hyphenated terms, or nil if `special` is omitted
and `form` is not multiword. (If `special` is specified and `form` is not multiword or hyphenated, an error results.)
]==]
function export.handle_multiword(form, special, inflect, prepositions, sep)
sep = sep or form:find(" ") and " " or "%-"
local raw_sep = sep == " " and " " or "-"
-- Used to add regex version of separator in the replacement portion of ugsub() or :gsub()
local sep_replacement = sep == " " and " " or "%%-"
-- Given a Lua pattern, replace space with the appropriate separator.
local function hack_re(re)
if sep == " " then
return re
end
return (re:gsub(" ", sep_replacement))
end
if special == "first" then
local first, rest = form:match(hack_re("^(.-)( .*)$"))
if not first then
error("Special indicator 'first' can only be used with a multiword term: " .. form)
end
return add_endings(inflect(first), rest)
elseif special == "second" then
local first, second, rest = form:match(hack_re("^([^ ]+ )([^ ]+)( .*)$"))
if not first then
error("Special indicator 'second' can only be used with a term with three or more words: " .. form)
end
return add_endings(add_endings({first}, inflect(second)), rest)
elseif special == "first-second" then
local first, space, second, rest = form:match(hack_re("^([^ ]+)( )([^ ]+)( .*)$"))
if not first then
error("Special indicator 'first-second' can only be used with a term with three or more words: " .. form)
end
return add_endings(add_endings(add_endings(inflect(first), space), inflect(second)), rest)
elseif special == "each" then
local terms = split(form, sep)
if #terms < 2 then
error("Special indicator 'each' can only be used with a multiword term: " .. form)
end
for i, term in ipairs(terms) do
terms[i] = inflect(term)
if i > 1 then
terms[i] = add_endings(raw_sep, terms[i])
end
end
local result = ""
for _, term in ipairs(terms) do
result = add_endings(result, term)
end
return result
elseif special == "first-last" then
local first, middle, last = form:match(hack_re("^(.-)( .* )(.-)$"))
if not first then
first, middle, last = form:match(hack_re("^(.-)( )(.*)$"))
end
if not first then
error("Special indicator 'first-last' can only be used with a multiword term: " .. form)
end
return add_endings(add_endings(inflect(first), middle), inflect(last))
elseif special == "last" then
local rest, last = form:match(hack_re("^(.* )(.-)$"))
if not rest then
error("Special indicator 'last' can only be used with a multiword term: " .. form)
end
return add_endings(rest, inflect(last))
elseif special and special ~= "+" then
error("Unrecognized special=" .. special)
end
-- Only do default behavior if special indicator '+' explicitly given or separator is space; otherwise we will
-- break existing behavior with hyphenated words.
if (special == "+" or sep == " ") and form:find(sep) then
if prepositions then
-- check for prepositions in the middle of the word; do it this way so we can handle
-- more than one word before the preposition (and usually inflect each word)
for _, prep in ipairs(prepositions) do
local first, space_prep_rest = umatch(form, hack_re("^(.-)( " .. prep .. ".*)$"))
if first then
return add_endings(inflect(first), space_prep_rest)
end
end
end
-- multiword or hyphenated expressions default to first-last; we need to pass in the separator to avoid
-- problems with multiword terms containing hyphens in the individual words
return export.handle_multiword(form, "first-last", inflect, prepositions, sep)
end
return nil
end
local function link_hyphen_split_component(word, data)
if data.link_hyphen_split_component then
return data.link_hyphen_split_component(word)
else
return "[[" .. word .. "]]"
end
end
-- Default function to split a word on apostrophes. Don't split apostrophes at the beginning or end of a word (e.g.
-- [['ndrangheta]] or [[po']]). Handle multiple apostrophes correctly, e.g. [[l'altr'ieri]] -> [[l']][altr']][[ieri]].
function export.default_split_apostrophe(word, data)
local apostrophe_parts = split(word, "'", true, true)
local linked_apostrophe_parts = {}
local apostrophes_at_beginning = ""
local i = 1
-- Apostrophes at beginning get attached to the first word after (which will always exist but may
-- be blank if the word consists only of apostrophes).
while i < #apostrophe_parts do -- <, not <=, in case the word consists only of apostrophes
local apostrophe_part = apostrophe_parts[i]
i = i + 1
if apostrophe_part == "" then
apostrophes_at_beginning = apostrophes_at_beginning .. "'"
else
break
end
end
apostrophe_parts[i] = apostrophes_at_beginning .. apostrophe_parts[i]
-- Now, do the remaining parts. A blank part indicates more than one apostrophe in a row; we join
-- all of them to the preceding word.
while i <= #apostrophe_parts do
local apostrophe_part = apostrophe_parts[i]
if apostrophe_part == "" then
linked_apostrophe_parts[#linked_apostrophe_parts] =
linked_apostrophe_parts[#linked_apostrophe_parts] .. "'"
elseif i == #apostrophe_parts then
insert(linked_apostrophe_parts, apostrophe_part)
else
insert(linked_apostrophe_parts, apostrophe_part .. "'")
end
i = i + 1
end
for j, tolink in ipairs(linked_apostrophe_parts) do
linked_apostrophe_parts[j] = link_hyphen_split_component(tolink, data)
end
return concat(linked_apostrophe_parts)
end
--[=[
Auto-add links to a word that should not have spaces but may have hyphens and/or apostrophes. We split off final
punctuation, then split on hyphens if `data.split_hyphen` is given, and also split on apostrophes if
`data.split_apostrophe` is given. We only split on hyphens if they are in the middle of the word, not at the beginning
or end (hyphens at the beginning or end indicate suffixes or prefixes, respectively). `include_hyphen_prefixes`, if
given, is a set of prefixes (not including the final hyphen) where we should include the final hyphen in the prefix.
Hence, e.g. if "anti" is in the set, a Portuguese word like [[anti-herói]] "anti-hero" will be split [[anti-]][[herói]]
(whereas a word like [[código-fonte]] "source code" will be split as [[código]]-[[fonte]]).
If `data.split_apostrophe` is specified, we split on apostrophes unless `data.no_split_apostrophe_words` is given and
the word is in the specified set, such as French [[c'est]] and [[quelqu'un]]. If `data.split_apostrophe` is true, the
default algorithm applies, which splits on all apostrophes except those at the beginning and end of a word (as in
Italian [['ndrangheta]] or [[po']]), and includes the apostrophe in the link to its left (so we auto-split French
[[l'eau]] as [[l']][[eau]] and [[l'altr'ieri]] as [[l']][altr']][[ieri]]). If `data.split_apostrophe` is specified
but not `true`, it should be a function of one argument that does custom apostrophe-splitting. The argument is the word
to split, and the return value should be the split and linked word.
]=]
local function add_single_word_links(space_word, data, term_has_spaces)
local space_word_no_punct, punct
local punct_pattern = data.punctuation
if punct_pattern and is_callable(punct_pattern) then
space_word_no_punct, punct = punct_pattern(space_word)
else
if punct_pattern == nil then
punct_pattern = "[,;:?!]"
end
space_word_no_punct, punct = umatch(space_word, "^(.*)(" .. punct_pattern .. ")$")
end
space_word_no_punct = space_word_no_punct or space_word
punct = punct or ""
local words
if space_word_no_punct:sub(1, 1) == "-" or space_word_no_punct:sub(-1) == "-" then
-- don't split prefixes and suffixes
words = {space_word_no_punct}
else
local splitter
if term_has_spaces then
splitter = data.split_hyphen_when_space
else
splitter = data.split_hyphen_when_no_space
end
if is_callable(splitter) then
words = splitter(space_word_no_punct)
if type(words) == "string" then
return words .. punct
end
end
end
if not words then
local split_hyphen
if term_has_spaces then
split_hyphen = data.split_hyphen_when_space
else
split_hyphen = data.split_hyphen_when_no_space
if split_hyphen == nil then -- default to true; use `false` to avoid this
split_hyphen = true
end
end
if split_hyphen then
words = split(space_word_no_punct, "-", true, true)
else
words = {space_word_no_punct}
end
end
local linked_words = {}
for j, word in ipairs(words) do
if j < #words and data.include_hyphen_prefixes and data.include_hyphen_prefixes[word] then
word = "[[" .. word .. "-]]"
elseif j > 1 and data.include_hyphen_suffixes and data.include_hyphen_suffixes[word] then
word = "[[-" .. word .. "]]"
else
-- Don't split on apostrophes if the word is in `no_split_apostrophe_words`.
if (not data.no_split_apostrophe_words or not data.no_split_apostrophe_words[word]) and
data.split_apostrophe and word:find("'", nil, true) then
if data.split_apostrophe == true then
word = export.default_split_apostrophe(word, data)
else -- custom apostrophe splitter/linker
word = data.split_apostrophe(word)
end
elseif word ~= "" then -- avoid -[[]]- (e.g. f--k)
word = link_hyphen_split_component(word, data)
end
if j < #words then
word = word .. "-"
end
end
insert(linked_words, word)
end
return concat(linked_words) .. punct
end
--[=[
Auto-add links to a multiword term. `data` contains fields customizing how to do this. By default we proceed as follows:
(1) If the term already has embedded links in it, they are left unchanged.
(2) Otherwise, if there are spaces present, we split on spaces and link each word separately.
(3) If a given space-separated component ends in punctuation (defaulting to [,;:?!]), it is separated off, the remainder
of the algorithm run, and the punctuation pasted back on.
(4) If there are hyphens in a given space-separated component, we may link each hyphenated term separately depending
on the settings in `data`. Normally the hyphens are not included in the linked terms, but this can be overridden
for specific prefixes and/or suffixes. By default, if there are spaces in the multiword term, we do not link
hyphenated components (because of cases like "boire du petit-lait" where "petit-lait" should be linked as a whole),
but do so otherwise (e.g. for "avant-avant-hier"); this can overridden for cases like "croyez-le ou non".
Cases where only some of the hyphens should be split can always be handled by explicitly specifying the head (e.g.
"Nord-Pas-de-Calais" given as head=[[Nord]]-[[Pas-de-Calais]]).
(5) If there are apostrophes in a given component, we may link each apostrophe-separated term separately depending
on the settings in `data`, including the apostrophe in the link to its left (so we split "de l'eau" as
"[[de]] [[l']][[eau]]").
The settings in `data` are as follows:
`split_hyphen_when_no_space`: Whether to split on hyphens when the term has no spaces. Defaults to true if set to `nil`.
This can be a function of one argument, to implement a custom splitting algorithm for hyphen-separated terms. If
this returns [FIXME: FINISH ME ...]
If `data.split_apostrophe` is specified, we split on apostrophes unless `data.no_split_apostrophe_words` is given and
the word is in the specified set, such as French [[c'est]] and [[quelqu'un]]. If `data.split_apostrophe` is true, the
default algorithm applies, which splits on all apostrophes except those at the beginning and end of a word (as in
Italian [['ndrangheta]] or [[po']]), and includes the apostrophe in the link to its left (so we auto-split French
[[l'eau]] as [[l']][[eau]] and [[l'altr'ieri]] as [[l']][altr']][[ieri]]). If `data.split_apostrophe` is specified
but not `true`, it should be a function of one argument that does custom apostrophe-splitting. The argument is the word
to split, and the return value should be the split and linked word.
We don't always split on hyphens because of cases like "boire du petit-lait" where "petit-lait" should be linked as a
whole, but provide the option to do it for cases like "croyez-le ou non". If there's no space, however, then it makes
sense to split on hyphens by `no_split_apostrophe_words` and `include_hyphen_prefixes` allow for special-case handling
of particular words and are as described in the comment above add_single_word_links().
]=]
function export.add_links_to_multiword_term(term, data)
if term:match("[%[%]]") then
return term
end
local words = split(term, " ", true, true)
local term_has_spaces = #words > 1
local linked_words = {}
for _, word in ipairs(words) do
insert(linked_words, add_single_word_links(word, data, term_has_spaces))
end
local retval = concat(linked_words, " ")
-- If we ended up with a single link consisting of the entire term,
-- remove the link.
return retval:match("^%[%[([^%[%]]*)%]%]$") or retval
end
local function canonicalize_begin_end_spec(spec)
local from, to = spec:match("^(.-):(.*)$")
if not from then
from = spec
to = ""
end
return from, to
end
--[==[
Given a `linked_term` that is the output of add_links_to_multiword_term(), apply modifications as given in
`modifier_spec` to change the link destination of subterms (normally single-word non-lemma forms; sometimes
collections of adjacent words). This is usually used to link non-lemma forms to their corresponding lemma, but can
also be used to replace a span of adjacent separately-linked words to a single multiword lemma. The format of
`modifier_spec` is one or more semicolon-separated subterm specs, where each such spec is of the form
SUBTERM:DEST, where SUBTERM is one or more words in the `linked_term` but without brackets in them, and DEST is the
corresponding link destination to link the subterm to. Any occurrence of ~ in DEST is replaced with SUBTERM.
Alternatively, a single modifier spec can be of the form BEGIN[FROM:TO], which is equivalent to writing
BEGINFROM:BEGINTO (see example below).
For example, given the source phrase [[il bue che dice cornuto all'asino]] "the pot calling the kettle black"
(literally "the ox that calls the donkey horned/cuckolded"), the result of calling add_links_to_multiword_term()
is [[il]] [[bue]] [[che]] [[dice]] [[cornuto]] [[all']][[asino]]. With a modifier_spec of 'dice:dire', the result
is [[il]] [[bue]] [[che]] [[dire|dice]] [[cornuto]] [[all']][[asino]]. Here, based on the modifier spec, the
non-lemma form [[dice]] is replaced with the two-part link [[dire|dice]].
Another example: given the source phrase [[chi semina vento raccoglie tempesta]] "sow the wind, reap the whirlwind"
(literally (he) who sows wind gathers [the] tempest"). The result of calling add_links_to_multiword_term() is
[[chi]] [[semina]] [[vento]] [[raccoglie]] [[tempesta]], and with a modifier_spec of 'semina:~re; raccoglie:~re',
the result is [[chi]] [[seminare|semina]] [[vento]] [[raccogliere|raccoglie]] [[tempesta]]. Here we use the ~
notation to stand for the non-lemma form in the destination link.
A more complex example is [[se non hai altri moccoli puoi andare a letto al buio]], which becomes
[[se]] [[non]] [[hai]] [[altri]] [[moccoli]] [[puoi]] [[andare]] [[a]] [[letto]] [[al]] [[buio]] after calling
add_links_to_multiword_term(). With the following modifier_spec:
'hai:avere; altr[i:o]; moccol[i:o]; puoi: potere; andare a letto:~; al buio:~', the result of applying the spec is
[[se]] [[non]] [[avere|hai]] [[altro|altri]] [[moccolo|moccoli]] [[potere|puoi]] [[andare a letto]] [[al buio]].
Here, we rely on the alternative notation mentioned above for e.g. 'altr[i:o]', which is equivalent to 'altri:altro',
and link multiword subterms using e.g. 'andare a letto:~'. (The code knows how to handle multiword subexpressions
properly, and if the link text and destination are the same, only a single-part link is formed.)
]==]
function export.apply_link_modifiers(linked_term, modifier_spec, lang)
local split_modspecs = split(modifier_spec, "%s*;%s*")
for j, modspec in ipairs(split_modspecs) do
local id
if modspec:find("<") then
local rest
rest, id = modspec:match("^(.*)<id:(.-)>$")
if rest then
modspec = rest
end
end
local subterm, dest, otherlang
local begin_spec, rest, end_spec = modspec:match("^%[(.-)%]([^:]*)%[(.-)%]$")
if begin_spec then
local begin_from, begin_to = canonicalize_begin_end_spec(begin_spec)
local end_from, end_to = canonicalize_begin_end_spec(end_spec)
subterm = begin_from .. rest .. end_from
dest = begin_to .. rest .. end_to
end
if not subterm then
rest, end_spec = modspec:match("^([^:]*)%[(.-)%]$")
if rest then
local end_from, end_to = canonicalize_begin_end_spec(end_spec)
subterm = rest .. end_from
dest = rest .. end_to
end
end
if not subterm then
begin_spec, rest = modspec:match("^%[(.-)%]([^:]*)$")
if begin_spec then
local begin_from, begin_to = canonicalize_begin_end_spec(begin_spec)
subterm = begin_from .. rest
dest = begin_to .. rest
end
end
if not subterm then
subterm, dest = modspec:match("^(.-)%s*:%s*(.*)$")
if subterm and subterm ~= "^" and subterm ~= "$" then
local langdest
-- Parse off an initial language code (e.g. 'en:Higgs', 'la:minūtia' or 'grc:σκατός'). Also handle
-- Wikipedia prefixes ('w:Abatemarco' or 'w:it:Colle Val d'Elsa').
otherlang, langdest = dest:match("^([A-Za-z0-9._-]+):([^ ].*)$")
if otherlang == "w" then
local foreign_wikipedia, foreign_term = langdest:match("^([A-Za-z0-9._-]+):([^ ].*)$")
if foreign_wikipedia then
otherlang = otherlang .. ":" .. foreign_wikipedia
langdest = foreign_term
end
dest = ("%s:%s"):format(otherlang, langdest)
otherlang = nil
elseif otherlang then
otherlang = get_lang_by_code(otherlang, true, "allow etym")
dest = langdest
end
end
end
if not subterm then
if modspec == "?" or modspec == "!" then
subterm = "$"
dest = modspec
elseif modspec == "..." or modspec == "...?" then
subterm = "$"
dest = " " .. modspec
elseif modspec:find("^[A-Z]$") then
-- X, Y, etc. by themselves are unlinked, to help with snowclones
subterm = modspec
dest = "_"
else
subterm = modspec
dest = "~"
end
end
if subterm == "^" then
linked_term = dest:gsub("_", " ") .. linked_term
elseif subterm == "$" then
linked_term = linked_term .. dest:gsub("_", " ")
else
if subterm:find("[", nil, true) then
error(("Subterm '%s' in modifier spec '%s' cannot have brackets in it"):format(
escape_wikicode(subterm), escape_wikicode(modspec)))
end
local escaped_subterm = pattern_escape(subterm)
local subterm_re = "%[%[" .. escaped_subterm:gsub("(%%?[ ',%-])", "%%]*%1%%[*") .. "%]%]"
local expanded_dest
if dest:find("~", nil, true) then
expanded_dest = dest:gsub("~", replacement_escape(subterm))
else
expanded_dest = dest
end
if otherlang then
expanded_dest = expanded_dest .. "#" .. otherlang:getCanonicalName()
end
local subterm_replacement
if expanded_dest == "_" then
subterm_replacement = subterm
if id then
error("Can't supply <id:...> with an unlinked subterm")
end
if otherlang then
error("Can't supply prefixed language with an unlinked subterm")
end
elseif id or otherlang then
if id and expanded_dest:find("[", nil, true) then
error("Can't supply <id:...> with destination with embedded brackets")
end
subterm_replacement = require(links_module).language_link {
lang = otherlang or lang,
term = expanded_dest,
alt = subterm,
id = id,
}
elseif expanded_dest:find("[", nil, true) then
-- Use the destination directly if it has brackets in it (e.g. to put brackets around parts of a word).
subterm_replacement = expanded_dest
elseif expanded_dest == subterm then
subterm_replacement = "[[" .. subterm .. "]]"
else
subterm_replacement = "[[" .. expanded_dest .. "|" .. subterm .. "]]"
end
local escaped_subterm_replacement = replacement_escape(subterm_replacement)
local replaced_linked_term = ugsub(linked_term, subterm_re, escaped_subterm_replacement)
if replaced_linked_term == linked_term then
mw.log(("Attempted to replace %s with %s in %s"):format(subterm_re, escaped_subterm_replacement, linked_term))
error(("Subterm '%s' could not be located in %slinked expression %s, or replacement same as subterm"):format(
subterm, j > 1 and "intermediate " or "", escape_wikicode(linked_term)))
else
linked_term = replaced_linked_term
end
end
end
return linked_term
end
local inflection_to_cats = {
plural = {
filter_plpos = function(plpos)
-- plurals also occur with determiners, adjectives etc. and we don't want to generate categories like
-- 'countable determiners', 'countable adjectives', etc. Note that the passed-in `plpos` has `proper nouns`
-- converted to `nouns`.
return plpos == "Danh từ"
end,
cats = {"{plpos} đếm được"},
no_cats = {"{plpos} không đếm được"},
},
comparative = {
cats = {"{plpos} so sánh được"},
no_cats = {"{plpos} không so sánh được"},
},
["female equivalent"] = {
cats = {"{plpos} with other-gender equivalents"},
},
["male equivalent"] = {
cats = {"{plpos} with other-gender equivalents"},
},
}
--[=[
Validate the items in `items` against the list or set of valid items in `valid_items`. If `field` is given, fetch the
item to check from that-named field of each object in `items`; otherwise use the items in `items` directly. If an error
occurs, `item_type` specifies the type of item to mention in the error message, which will also list the allowed items
(either taken directly from `valid_items` if a list, or from the sorted keys if a set).
]=]
local function validate_items(data)
local items, field, valid_items, item_type =
data.items, data.field, data.valid_items, data.item_type
local valid_set
if valid_items[1] then
valid_set = list_to_set(valid_items)
else
valid_set = valid_items
end
for _, item in ipairs(items) do
if field then
item = item[field]
end
if not valid_set[item] then
local valid_list
if valid_items[1] then
valid_list = valid_items
else
valid_list = {}
for valid_item, _ in pairs(valid_items) do
insert(valid_list, valid_item)
end
table.sort(valid_list)
end
error(("Invalid %s: %s; expected one of %s"):format(item_type, item, mw.text.listToText(valid_list)))
end
end
end
local Headdata = {}
function Headdata:get_canonicalized_plpos()
return (self.pos_category:gsub("proper noun", "noun"))
end
--[==[
Canonicalize a category. The category string will have the full language name (i.e. the name of the L2 language under
which an entry is inserted, which may a parent language if the language in question is an etymology-only language)
prepended to it, and any occurrences of `{plpos}` in the string replaced with the actual plural part of speech (with
some canonicalization; specifically, `proper nouns` is converted to `nouns` when replacing `{plpos}`). To specify a
full category and not have the language name prepended to it, precede it with {"Category:"}, which will be removed.
]==]
function Headdata:canonicalize_category(category)
if category:find("{plpos}") then
local plpos = self:get_canonicalized_plpos()
category = category:gsub("{plpos}", plpos)
end
if category:find("^Category:") then
return (category:gsub("^Category:", ""))
else
return self.langfullname .. " " .. category
end
end
--[==[
Canonicalize a list of categories according to the process described in `Headdata:canonicalize_category`. This simply
loops over each category in `categories` and calls `Headdata:canonicalize_category` on each one.
]==]
function Headdata:canonicalize_categories(categories)
if not categories then
return categories
end
local canon_cats = {}
for _, cat in ipairs(categories) do
insert(canon_cats, self:canonicalize_category(cat))
end
return canon_cats
end
--[==[
Insert a category into the `categories` list in the headword `data` structure. `category` is normally a string naming
the category, which will have the full language name prepended to it and any occurrences of `{plpos}` in the string
replaced with the actual plural part of speech (with some canonicalization; specifically, `proper nouns` is converted to
`nouns` when replacing `{plpos}`). To specify a full category and not have the language name prepended to it, precede it
with {"Category:"}.
]==]
function Headdata:insert_category(category)
insert(self.categories, self:canonicalize_category(category))
end
--[==[
Validate the genders in `genders` (a list of gender spec objects, as produced by {type = "genders"} in
[[Module:parameters]] and accepted by [[Module:gender and number]]), checking that all specified genders are in the list
given in `valid_genders`. Optional `props` controls how the validation happens. In particular, unless `props.no_augment`
is given, then for any gender beginning with `m`, if a corresponding gender beginning with `f` occurs, analogous genders
beginning with `mf`, `mfbysense` and `mfequiv` are also allowed. For example, if `m-d` (masculine dual) and `f-d`
(feminine dual) both occur, genders `mf-d`, `mfbysense-d` and `mfequiv-d` are also allowed. If a disallowed gender is
given, an error occurs, giving the disallowed gender along with the list of all allowed genders.
]==]
function Headdata:validate_genders(genders, valid_genders, props)
if not genders then
return
end
props = props or {}
local gender_type, no_augment = props.gender_type, props.no_augment
gender_type = gender_type or "headword"
local valid_gender_set = list_to_set(valid_genders)
local augmented_gender_set
if no_augment then
augmented_gender_set = valid_gender_set
else
augmented_gender_set = {}
for g, _ in pairs(valid_gender_set) do
augmented_gender_set[g] = true
if g:find("^m") and not g:find("^mf") and valid_gender_set[g:gsub("^m", "f")] then
augmented_gender_set[g:gsub("^m", "mf")] = true
augmented_gender_set[g:gsub("^m", "mfbysense")] = true
augmented_gender_set[g:gsub("^m", "mfequiv")] = true
end
end
end
validate_items {
items = genders,
field = "spec",
valid_items = augmented_gender_set,
item_type = ("%s gender"):format(gender_type),
}
end
--[==[
Parse an inflection specified in `field`, the name of a parameter holding an inflection. If the parameter is numeric,
the field should be given as a number (as with the `params` structure passed to [[Module:parameters]]), not a string
containing the representation of a number. The field can specify multiple comma-separated terms, and each term can have
associated inline modifiers that will be parsed (unless there is top-level HTML in the parameter, i.e. HTML not
contained inside an inline modifier, e.g. as may be generated by using {{tl|l}} or similar template inside a parameter).
This is a wrapper around the top-level `parse_term_with_modifiers()` function. `props` is an optional structure
containing additional properties, including all additional properties documented for the top-level
`parse_term_with_modifiers()` function.
If the parameter in `field` is unspecified, the return value of this function will be an empty list, not {nil}, so it
is always safe to iterate over the return value.
By default, the allowed modifiers are the same as for `parse_term_with_modifiers()`, except that (normally) the
`<tr:...>` modifier will be allowed if `include_tr` was specified in the original call to `process_headword()`; likewise
for the `<ts:...>` modifier if `include_ts` was specified and the `<sc:...>` modifier if `include_sc` was specified. If
If you pass in your own `include_mods` list of additional allowed modifiers, it will (normally) automatically be
augmented with {"tr"}, {"ts"} and/or {"sc"} if `include_tr`, `include_ts` and/or `include_sc` was specified when calling
`process_headword()`. To disable automatic augmentation of these modifiers (whether or not you specify an `include_mods`
property), specify {no_augment_include_mods = true} in `props`.
]==]
function Headdata:parse_inflection(field, props)
local val = self.process_props.args[field]
if not val then
return {}
end
props = props and shallow_copy(props) or {}
local include_mods = props.include_mods
local data = self.process_props.data
if not props.no_augment_include_mods and (data.include_tr or data.include_ts or data.include_sc) then
include_mods = include_mods and shallow_copy(include_mods) or {}
if data.include_tr then
insert_if_not(include_mods, "tr")
end
if data.include_ts then
insert_if_not(include_mods, "ts")
end
if data.include_sc then
insert_if_not(include_mods, "sc")
end
end
props.val = val
props.paramname = field
props.splitchar = props.splitchar or ","
props.include_mods = include_mods
return export.parse_term_with_modifiers(props) or {}
end
--[==[
Insert previously-parsed terms into the `inflections` of the headword `data` structure. This is a wrapper around
the top-level `insert_inflection()` function. `terms` is the list of parsed terms. (If {nil}, nothing happens unless
`request` is set in `props`.) `label` is the the label that the inflections are given; any parts of the label surrounded
in `<<...>>` are linked to the glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.)
`props` is an optional structure containing additional properties, including all additional properties documented for
the top-level `insert_inflection()` function.
Unless `no_auto_cats` is given in `props`, certain labels automatically trigger the insertion of additional
categories in specific circumstances. This is controlled by the `inflection_to_cats` structure in
[[Module:headword utilities]]. For example, if the part of speech is {"nouns"} or {"proper nouns"} and the label (after
removing any links and `<<...>>` glossary specs) is {"plural"}, an additional category
<code><var>lang</var> countable nouns</code> will be added if a plural value is given (i.e. the value is not {"-"}). If
the value is {"-"} (which indicates that there is no plural and triggers the insertion of the fixed inflection label
{"no plural"}), <code><var>lang</var> uncountable nouns</code> will be inserted instead, and if both {"-"} and a value
are given (which triggers the insertion of the {"usually no plural"} fixed inflection label), both categories are added.
Similar categories are inserted when a comparative is given (with a label {"comparative"}), and if the label is
{"female equivalent"} or {"male equivalent"} and the value is not {"-"}, a category such as
<code><var>lang</var> nouns with other-gender equivalents</code> is inserted.
]==]
function Headdata:insert_inflection(terms, label, props)
props = props and shallow_copy(props) or {}
if not props.no_auto_cats then
local bare_label = label
if bare_label:find("[[", nil, true) then
bare_label = require(links_module).remove_links(bare_label)
end
if bare_label:find("<<", nil, true) then
bare_label = bare_label:gsub("<<.-|(.-)>>", "%1"):gsub("<<(.-)>>", "%1")
end
local cats = inflection_to_cats[bare_label]
if cats then
if not cats.filter_plpos or cats.filter_plpos(self:get_canonicalized_plpos()) then
if props.cats == nil then
props.cats = self:canonicalize_categories(cats.cats)
end
if props.usually_no_cats == nil then
props.usually_no_cats = self:canonicalize_categories(cats.usually_no_cats)
end
if props.no_cats == nil then
props.no_cats = self:canonicalize_categories(cats.no_cats)
end
end
end
end
props.headdata = self
props.terms = terms
props.label = label
return export.insert_inflection(props)
end
--[==[
Insert a "fixed" inflection (a label without associated values) into the `inflections` table of the headword `data`
structure, labeled according to `label` (which can have glossary links in it specified using `<<...>>`, exactly as for
`:insert_inflection()`). An example label (from {{tl|mn-noun}} in [[Module:mn-headword]]) is {"hidden-g declension"},
specifying that the noun belongs to the hidden-''g'' declension. This is a direct wrapper around the top-level function
`insert_fixed_inflection()`; see that function for more details on optional `props`.
]==]
function Headdata:insert_fixed_inflection(label, props)
props = props and shallow_copy(props) or {}
props.headdata = self
props.label = label
export.insert_fixed_inflection(props)
end
--[==[
Parse the inflection(s) specified in `field` and insert them into the `inflections` table of the headword `data`
structure, labeled according to `label`. This is equivalent to calling {terms = data:parse_inflection(field, props)}
followed by {return data:insert_inflection(terms, label, props)} and behaves the same as the combination of those two
functions. See their documentation for more details.
]==]
function Headdata:parse_and_insert_inflection(field, label, props)
local terms = self:parse_inflection(field, props)
return self:insert_inflection(terms, label, props)
end
--[==[
Generate an inflection that may be specified explicitly or defaulted (which involves looping over the specified or
defaulted heads and determining the script of each one, since the formation of the default depends on the script).
`data` is the data object passed into the POS handler. `terms` is the list of terms to process. Those where the term
itself is not `+` will be returned unchanged, while those where the term is `+` will be handled by generating the
appropriate inflections from the headwords using `make_inflection` (which is passed three arguments, `head`, `tr` and
`sccode`, i.e. the script code of `head`) and should return two values, term and translit, either of which can be
nil. A nil head will be ignored, and otherwise the decorations specified on the `+` term will be combined with the
decorations specified on the head. The return value is a list of inflections where no requests for the default
inflection remain.
]==]
function Headdata:resolve_special(terms, handle_special, props)
props = props or {}
local infls = {}
local is_special = props.is_special or function(_data, infl) return infl.term == "+" end
for _, termobj in ipairs(terms) do
if not is_special(self, termobj) then
insert(infls, termobj)
else
for _, headobj in ipairs(self.heads) do
local head = headobj.term or self.pagename
local head_no_links
if props.with_links then
head = head:find("%[") and head or require(headword_module).add_multiword_links(head, not headobj.term)
head_no_links = require(links_module).remove_links(head)
else
head = require(links_module).remove_links(head)
head_no_links = head
end
local newterms = handle_special {
head = head,
tr = headobj.tr,
infl = termobj,
sc = self.lang:findBestScript(head_no_links),
}
if newterms then
newterms = export.canonicalize_termobj_list(newterms, "term", "resolve_special")
for _, newterm in ipairs(newterms) do
if not props.no_combine_handle_special_retval_with_origin then
export.combine_termobj_decorations(newterm, termobj)
end
if not props.no_combine_handle_special_retval_with_head then
export.combine_termobj_decorations(newterm, headobj)
end
insert(infls, newterm)
end
end
end
end
end
return infls
end
--[==[
Add the current page to a tracking page named `Wiktionary:Tracking/``lang``-headword/``page```, where ``lang`` is the
language code of the current language. For example, if the current language is `mak` and `page` is {"redundant-lon"},
the current page will get added to the tracking page `Wiktionary:Tracking/mak-headword/redundant-lon`. All pages added
to that tracking page can be seen by going to [[Special:WhatLinksHere/Wiktionary:Tracking/mak-headword/redundant-lon]].
This is typically used to track issues occurring in user-specified parameters that do not rise to the level of errors
(e.g. redundant parameters, deprecated usages or other dispreferred values).
]==]
function Headdata:track(page)
return require(debug_track_module)(self.langcode .. "-headword/" .. page)
end
local boolean_param = {type = "boolean"}
--[==[
Process an arbitrary headword in an arbitrary language, handling generic and language-specific arguments and calling
`full_headword()` in [[Module:headword]]. This is intended for use in implementing headword modules (e.g.
[[Module:uz-headword]] for Uzbek, [[Module:mn-headword]] for Uzbek, [[Module:gsw-headword]] for Alemannic German, etc.)
and provides a general implementation of such modules. On input, `data` is an object with the following fields:
* `lang`: The language object of the language being handled. '''Required.''' Use the special value {false} to indicate
that the language is specified by the user in {{para|1}}.
* `frame`: The frame object passed into the `show()` function of your module, which implements headword-handling for
all parts of speech in the module, including a generic POS-handling template (e.g. {{tl|uz-head}} or {{tl|mn-head}}),
which allows arbitrary parts of speech to be handled. '''Required.'''
* `pos_functions`: A table listing, for each part of speech requiring special handling, the extra parameters (if any)
that the part of speech accepts, along with how to handle them. See the examples below. '''Required.'''
* `validate_lang`: If {lang = true} is specified, this is a function of one argument (a language object, based on the
language specified in {{para|1}}) that should throw an error if the language object is disallowed. If omitted, all
languages are allowed.
* `numbered_head`: If true, explicit headwords are specified in a numbered param instead of in {{para|head}}. The param
used is usually {{para|1}}, but is {{para|2}} for generic POS templates such as {{tl|mn-head}} or for POS-specific
templates when {lang = true} is specified (e.g. {{tl|arb-noun}}), and is {{para|3}} for generic POS templates when
{lang = true} is spcified (e.g. {{tl|arb-head}}).
* `include_tr`: If true, allow explicit transliterations to be specified. The transliteration(s) for the headword(s)
themselves is/are specified in {{para|tr}} or through the {{cd|<tr:...>}} inline modifier on headwords, and
transliterations of inflections are specified through the {{cd|<tr:...>}} inline modifier. This should generally be
given when a headword for the language may be in a script other than Latin.
* `include_ts`: If true, allow explicit transcriptions to be specified. The transcription(s) for the headword(s)
themselves is/are specified in {{para|ts}} or through the {{cd|<ts:...>}} inline modifier on headwords, and
transcriptions of inflections are specified through the {{cd|<ts:...>}} inline modifier. This should generally only
be given for certain languages where the spelling is radically different from the pronunciation (e.g. in cuneiform
languages such as Hittite and Akkadian, and potentially in Tibetan), and represents a pronunciation-based rendering
(usually not direct IPA).
* `include_sc`: If true, allow an explicit script code to be specified. The overall script code for the headword(s)
themselves can be specified using {{para|sc}}, and per-headword or per-inflection script codes are specified using the
{{cd|<sc:...>}} inline modifier. This should generally be given when a language supports multiple scripts.
* `infls`: An inflections structure specifying extra generic parameters that apply to all parts of speech and how to
handle them. The format is the same as for the `infls` structure in `pos_functions`.
* `augment_params`: A callback function to add extra generic parameters, or modify existing generic parameters in the
`params` structure; but in general, extra generic parameters should be added through the `infls` structure instead.
This callback should not be used to add part-of-speech-specific parameters; those are handled through the appropriate
setting in `pos_functions`. It is passed two single arguments, the `headdata` object and the `params` table to be
augmented. See below for extra fields stored in the `process_props` structure of the `headdata` object. This function
is called after initializing the `params` table and processing the overall `infls` structure, but just before adding
part-of-speech-specific parameters (from `pos_functions`) to `params`. Thus, it can override any generic parameters
but may itself be overridden by a part-of-speech-specific parameter.
* `augment_headdata`: A callback function to modify the `headdata` object passed to `full_headword()` in
[[Module:headword]]. This should not be used to for part-of-speech-specific parameter handling; this is handled
through the appropriate setting in `pos_functions`. It is passed a single argument, the `headdata` object, as for
`augment_params`; but the `process_props` structure and other fields will be more filled out, as this callback is
called later. This can be used, for example, to override the value of a generic setting in `headdata` (e.g.
[[Module:uz-headword]] uses this to mark non-Latin terms as variant forms by setting `headdata.var`, being careful not
to override a value already set by the user). This function is called after initializing the `headdata` table with all
information taken from generic parameters and processing generic parameters specified in the overall `infls`
structure, and just before processing the appropriate part-of-speech-specific `infls` structure in `pos_functions`
(which in turn is followed by any handler function in `pos_functions`). Thus, it can override any value set during
generic parameter processing but may itself be overridden by a part-of-speech-specific parameter or handler.
* `force_cat`: If true, add the headword to the appropriate categories even on non-mainspace pages. This can be used for
testing category handling in sample template calls on userspace test pages or template documentation pages. It should
not be set in production code.
* `enable_auto_translit`: If true, turn on automatic transliteration of inflections at a global level (i.e. applying to
all inflections). This has no effect on headwords, which are automatically transliterated by default if in a non-Latin
script and automatic transliteration is available for the language. You can also set this value for particular
inflections in the `insert_inflection()` function.
The `headdata` headword data structure has an extra field in it called `process_props` that is specific to the
`process_headword()` function, containing various extra properies. As the operation of `process_headword()` proceeds,
this object gets filled out with more fields. For example, once parameter parsing happens, the resulting values are
available in the `args` field of `process_props`. The following fields are found in `process_props` (note that `poscat`,
the canonicalized plural part of speech of the headword being processed, is *not* present here; it's directly on
`headdata`):
* `namespace`: The name of the current namespace; an empty string for the mainspace. This references the namespace of
the actual page and isn't affected by the {{para|pagename}} parameter.
* `indexing_poscat`: The canonicalized part of speech of the headword used to index into `pos_functions`. This is the
same as `poscat` for specific part-of-speech templates such as {{tl|uz-noun}}, but has the value {"head"} for generic
part-of-speech templates such as {{tl|uz-head}}. (Note that `poscat` is directly available on `headdata`.)
* `generic_pos_template`: True if a generic POS templates like {{tl|uz-head}} or {{tl|mn-head}} was used. (This is
signaled by omitting the invocation parameter {{para|1}} to `process_headword`.)
* `lang_in_1`: True if the language code is to be fetched from {{para|1}}.
* `pos_param`: The parameter holding the part of speech, if a generic POS tempalte like {{tl|mn-head}} is being
processed (i.e. `generic_pos_template` is set). In such a case, it will have the value of {1} or {2}, depending on
whether the language code is being fetched from {{para|1}} (see `lang_in_1`). Otherwise it will be {nil}.
* `head_param`: The parameter holding the explicit headword. If `numbered_head` was specified (as for Mongolian headword
templates), this has the value {1}, {2} or {3} depending on whether the language code is being fetched from {{para|1}}
(see `lang_in_1`) and whether a generic POS template like {{tl|mn-head}} is being processed (see
`generic_pos_template`). Otherwise, it has the value {"head"}. Also see the `lang` and `numbered_head` properties in
the `data` structure sent to `process_headword()`.
* `is_suffix`: True if the current term is a suffix. This is set when processing the `suffix`, `nosuffix` and `clitic`
parameters; it is always {false} beforehand (i.e. during `augment_params` and processing of the general `infls`
structure).
* `insert_specs`: This is a table mapping parameter names to the return value of `Headdata:insert_inflection()`, filled
out as parameter values are processed. This lets a given parameter processing function in `infls` gain access to the
result of calling `insert_inflection()` on previous parameters (which indicates the number of items inserted as well
as whether `-` was specified).
The `pos_functions` table contains an entry for each part of speech needing special handling, where the key is the
canonical plural part of speech (e.g. {"adverbs"} or {"proper nouns"}). The value associated with each key is a table
normally containing a field `infls`, listing the extra part-of-speech-specific inflection and other parameters along
with how to handle them. The specs in `infls` are used in three ways:
# to augment the `params` object passed to the `process()` function in [[Module:parameters]], specifying how to parse
the appropriate inflectional parameters;
# to specify how to process any inflectional parameters given and insert them into the `headdata` object passed to
`full_headword()` in [[Module:headword]];
# to generate appropriate documentation for the parameters and other changes made by the headword template (e.g.
inserting categories).
Alternatively, you can separately control the augmentation of the `params` object and the procesing of the resulting
arguments. This is done by specifying two fields in place of `infls`, named `params` and `func`. `params` is a table
containing extra parameters to add to the overall `params` object passed to the `process()` function in
[[Module:parameters]]. `func` is a function of two arguments, normally called `data` (the headword data structure
`headdata`) and `args` (the processed arguments table). However, this alternative method is not normally recommended
because it leads to duplication between the `params and `func` fields and the documentation, which must be manually
specified.
A simple example, as used to handle pronouns for Turoyo, is
{
local valid_genders = {"m", "f", "m-p", "f-p", "p", "?"}
pos_functions["pronouns"] = {
infls = {
{2, type = "genders", validate = valid_genders},
{"f", label = "feminine"},
{"pl", label = "plural"},
},
}
}
The equivalent using `params` and `func` is
{
local valid_genders = {"m", "f", "m-p", "f-p", "p", "?"}
pos_functions["pronouns"] = {
params = {
[2] = {type = "genders"},
f = true,
pl = true,
},
func = function(data, args)
data:validate_genders(args[2], valid_genders)
data.genders = args[2]
data:parse_and_insert_inflection("f", "feminine")
data:parse_and_insert_inflection("pl", "plural")
end
}
}
Note how the version with separate `params and `func` is longer and splits information on the parameters between the
two fields. The `params` structure sets extra user-specifiable parameters {{para|2}} for genders (since the headword is
in {{para|1}}) as well a {{para|f}} and {{para|pl}}, and the `func` handler processes those parameters. Note how this is
done by calling methods on the headword `data` structure. Each such parameter can have multiple comma-separated values,
and each value can have inline modifiers attached to it to specify further properties of the value. The `infls` version
ends up making the same method calls, but does it for you instead of you having to do it yourself.
These methods are implemented through a metatable set on the headword `data` structure, which is removed before calling
`full_headword()` in [[Module:headword]]. The methods access extra information related to headword processing (such as
the `args` table) that is stored in the `process_props` field of the headword `data` strucuture. This field is also
removed prior to calling `full_headword()`.
The methods available on the headword `data` structure are as follows. Each one also has its own documentation.
* {parse_inflection(field, props)}: Parse value(s) specified in `field` (a user-specified parameter in the `args` table)
and return a list of term objects. Optional `props` specifies additional properties controlling the parsing.
* {insert_inflection(terms, label, props)}: Insert the terms in `terms` (a list of term objects as returned by
`parse_inflection()`) into the `inflections` list in the headword `data` structure, giving the inflection the label as
specified in `label`. Optional `props` specifies additional properties controlling the parsing.
* {parse_and_insert_inflection(field, label, props)}: A combination of `parse_inflection()` and `insert_inflection()`,
if no further processing of the parsed values needs to be done before insertion.
* {insert_fixed_inflection(label, props)}: Insert a "fixed" inflection (a label without associated values) into the
`inflections` table. An example (from {{tl|mn-noun}} in [[Module:mn-headword]]) is {"hidden-g declension"}, specifying
that the noun belongs to the hidden-''g'' declension.
* {resolve_special(terms, handle_special, props)}: Resolve "special" indicators as specified by the user in an inflection
parameter. A typical example is {"+"}, requesting a default value. `terms` is the list of parsed term objects and
`handle_special` is a handler function to process special indicators and convert them to their actual values.
* {validate_genders(genders, valid_genders, props)}: Validate that the user-specified genders in `genders` all belong to
the list given in `valid_genders`, throwing an error if not.
* {insert_category(category)}: Insert a category into the `categories` list in the headword `data` structure. `category`
is normally a string naming the category, which will have the language prepended to it and any occurrences of
`{plpos}` in the string replaced with the actual plural part of speech.
]==]
function export.process_headword(data)
local lang, frame, pos_functions, validate_lang, numbered_head, include_tr, include_ts, include_sc, force_cat,
enable_auto_translit, infls, augment_params, augment_headdata =
data.lang, data.frame, data.pos_functions, data.validate_lang, data.numbered_head, data.include_tr,
data.include_ts, data.include_sc, data.force_cat, data.enable_auto_translit, data.infls, data.augment_params,
data.augment_headdata
local iparams = {
[1] = true,
def = true,
}
local iargs = require(parameters_module).process(frame.args, iparams)
local parargs = frame:getParent().args
local langcode
if not lang then
error("Internal error: `data.lang` must be specified; either a language object or `true` for a user-specified language")
end
local lang_in_1
if lang == true then
lang_in_1 = true
langcode = ine(parargs[1])
if langcode then
langcode = mw.text.trim(langcode)
lang = require(languages_module).getByCode(langcode, 1, true)
if validate_lang then
validate_lang(lang)
end
else
error("Language code (see [[WT:Language codes]]) must be specified in 1=")
end
else
langcode = lang:getCode()
if validate_lang then
error("Internal error: `data.validate_lang` must not be specified if a language code is given in `data.lang`")
end
end
local poscat = iargs[1]
local generic_pos_template = not poscat
local pos_param
if generic_pos_template then
pos_param = lang_in_1 and 2 or 1
poscat = ine(parargs[pos_param]) or
mw.title.getCurrentTitle().fullText == ("Bản_mẫu:%s-head"):format(langcode) and "interjection" or
error(("Part of speech must be specified in %s="):format(pos_param))
poscat = require(headword_module).canonicalize_pos(poscat)
end
local head_param = numbered_head and (generic_pos_template and lang_in_1 and 3 or
(generic_pos_template or lang_in_1) and 2 or 1) or "head"
local indexing_poscat = generic_pos_template and "head" or poscat
local namespace = mw.loadData(headword_data_module).page.namespace
-- Partly initialize headdata now for use in generic infls callbacks. Will be further initialized later after
-- processing parameters.
local headdata = {
lang = lang,
langcode = langcode,
langfullcode = lang:getFullCode(),
langname = lang:getCanonicalName(),
langfullname = lang:getFullName(),
process_props = {
namespace = namespace,
data = data,
indexing_poscat = indexing_poscat,
generic_pos_template = generic_pos_template,
lang_in_1 = lang_in_1,
pos_param = pos_param,
head_param = head_param,
is_suffix = false,
insert_specs = {},
},
pos_category = poscat,
orig_poscat = poscat, -- preserve user-specified poscat in case pos_category is changed to 'suffixes'
categories = {},
inflections = {enable_auto_translit = enable_auto_translit},
force_cat_output = force_cat,
no_redundant_head_cat = true,
}
setmetatable(headdata, {__index = Headdata})
local params = {
[head_param] = {template_default = iargs.def},
head2 = {replaced_by = false, instead = ("use comma-separated |%s="):format(head_param)},
id = true,
sort = true,
cat = true,
nolink = boolean_param,
nolinkhead = {type = "boolean", alias_of = "nolink"},
suffix = boolean_param,
nosuffix = boolean_param,
clitic = true,
addlpos = true,
var = {type = "boolean", allow = {"both"}},
json = boolean_param,
pagename = true, -- for testing
}
if include_sc then
params.sc = {type = "script"}
end
if include_tr then
params.tr = true
params.tr2 = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"}
end
if include_ts then
params.ts = true
params.ts2 = {replaced_by = false, instead = "use comma-separated |ts= or <ts:...> inline modifier on head"}
end
if lang_in_1 then
params[1] = {required = true} -- required but ignored as already processed above
end
if generic_pos_template then
params[pos_param] = {required = true} -- required but ignored as already processed above
end
local function resolve_prop(prop, ...)
if type(prop) == "function" then
prop = prop(headdata, ...)
end
return prop
end
local function augment_params_from_infls(infls)
infls = resolve_prop(infls)
for _, infl in ipairs(infls) do
local function interr(txt)
error(("Internal error: %s (coming from infls spec %s)"):format(txt, dump(infl)))
end
local param = infl[1]
if param then
param = resolve_prop(param)
if type(param) ~= "string" and type(param) ~= "number" then
interr(("Parameter name %s must be a string or number"):format(dump(param)))
end
-- We handle defaults as well as validation ourselves.
local typ = resolve_prop(infl.type) or "string"
if typ ~= "genders" and typ ~= "boolean" and typ ~= "string" then
-- FIXME: Handle more types.
interr(('Unrecognized type %s; can only currently handle "genders", "boolean" and "string" (the default)'):format(
dump(typ)))
end
params[param] = {type = typ, required = resolve_prop(infl.required), template_default = resolve_prop(infl.template_default)}
if typ ~= "boolean" and type(param) == "string" then
params[param .. "2"] = {replaced_by = false, instead = ("use comma-separated |%s="):format(param)}
end
end
end
end
if infls then
augment_params_from_infls(infls)
end
if augment_params then
augment_params(headdata, params)
end
if pos_functions[indexing_poscat] then
local pos_infls = pos_functions[indexing_poscat].infls
if pos_infls then
augment_params_from_infls(pos_infls)
end
local pos_params = pos_functions[indexing_poscat].params
if pos_params then
for key, val in pairs(pos_params) do
params[key] = val
end
end
end
local args = require("Module:parameters").process(parargs, params)
local pagename = args.pagename or mw.loadData(headword_data_module).pagename
local sc = args.sc or lang:findBestScript(pagename)
headdata.pagename = pagename
headdata.process_props.args = args
headdata.sc = sc
headdata.id = args.id
headdata.sort = args.sort
-- No redundant script cat unless the user explicitly gave sc=
headdata.no_script_code_cat = not args.sc
headdata.var = args.var
local extra_term_mods = {}
if include_tr then
insert(extra_term_mods, "tr")
end
if include_ts then
insert(extra_term_mods, "ts")
end
if include_sc then
insert(extra_term_mods, "sc")
end
if not extra_term_mods[1] then
extra_term_mods = nil
end
local trs = args.tr and split_on_comma(args.tr) or {}
local num_trs = #trs
local tss = args.ts and split_on_comma(args.ts) or {}
local num_tss = #tss
local heads = args[head_param] and export.parse_term_with_modifiers {
val = args[head_param],
paramname = head_param,
splitchar = ",",
is_head = true,
include_mods = extra_term_mods,
} or {}
local num_heads = #heads
if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then
error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or default automatic translit and '-' to stand for no translit"):format(
num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or ""))
end
if num_heads > 0 and num_tss > 0 and num_heads ~= num_tss then
error(("%s head%s specified explicitly but %s transcription%s; they must match; use '+' to stand for the default head (the pagename) and '-' to stand for no transcription"):format(
num_heads, num_heads > 1 and "s" or "", num_tss, num_tss > 1 and "s" or ""))
end
if num_trs > 0 and num_tss > 0 and num_trs ~= num_tss then
error(("%s translit%s specified explicitly but %s transcription%s; they must match; use '+' to stand for default automatic translit and '-' to stand for no translit or transcription"):format(
num_trs, num_trs > 1 and "s" or "", num_tss, num_tss > 1 and "s" or ""))
end
-- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads
-- to see if the user provided any heads.
local max_tr_ts = math.max(num_trs, num_tss)
if num_heads == 0 and max_tr_ts > 0 then
heads = {}
for i = 1, max_tr_ts do
heads[i] = {term = "+"}
end
end
if not heads[1] then
heads = {{term = "+"}}
end
for i, headobj in ipairs(heads) do
if headobj.tr and trs[i] then
if headobj.tr ~= trs[i] then
error(("Saw two different translits '%s' and '%s' for head #%s"):format(
headobj.tr, trs[i], i))
end
else
headobj.tr = headobj.tr or trs[i]
end
if headobj.tr == "+" then
headobj.tr = nil
end
if headobj.ts and tss[i] then
if headobj.ts ~= tss[i] then
error(("Saw two different transcriptions '%s' and '%s' for head #%s"):format(
headobj.ts, tss[i], i))
end
else
headobj.ts = headobj.ts or tss[i]
end
if headobj.ts == "-" then
headobj.ts = nil
end
if headobj.term == "+" then
headobj.term = args.nolink and pagename or nil
if headobj.term and namespace == "Reconstruction" then
headobj.term = "*" .. headobj.term
end
end
end
headdata.heads = heads
local function pagename_is_suffix()
if sc:getCode() == "Latn" then
-- shortcut Latin terms to avoid unnecessarily loading [[Module:affix]]
return pagename:find("^%-") and not pagename:find("%-$")
else
local affix_type, _, _, _ = require(affix_module).parse_term_for_affixes(pagename, lang, sc)
return affix_type == "Hậu tố"
end
end
local clitic_label
if args.clitic then
clitic_label = require(yesno_module)(args.clitic, args.clitic)
end
if clitic_label == true then
clitic_label = "clitic"
end
if clitic_label then
headdata:insert_category("clitics")
headdata:insert_fixed_inflection(clitic_label)
elseif args.suffix or (
not args.nosuffix and pagename_is_suffix() and poscat ~= "Hậu tố" and poscat ~= "Biến thể hình thái hậu tố"
) then
headdata.process_props.is_suffix = true
local function handle_suffix_pos(pos, is_first)
local form_type = pos:match("^Biến thể hình thái (.*)$")
local actual_poscat
if form_type then
headdata:insert_category(("%s suffix forms"):format(form_type))
headdata:insert_fixed_inflection(form_type .. " suffix form")
else
local singular_pos = require(en_utilities_module).singularize(pos)
headdata:insert_category(("%s-forming suffixes"):format(singular_pos))
headdata:insert_fixed_inflection(singular_pos .. "-forming suffix")
end
local postype = require(headword_module).pos_lemma_or_nonlemma(pos)
if not postype then
error(("Unrecognized canonicalized part of speech '%s' in addlpos=, cannot determine whether lemma or non-lemma form"):format(
pos
))
end
actual_poscat = postype == "Mục từ" and "Hậu tố" or "Biến thể hình thái hậu tố"
if is_first then
headdata.pos_category = actual_poscat
elseif headdata.pos_category ~= actual_poscat then
error(("Cannot mix suffixes and suffix forms using addlpos=; '%s' is a %s while overall POS '%s' is a %s; use separate POS headers for the two"):
format(pos, actual_poscat, poscat, headdata.pos_category))
end
end
handle_suffix_pos(poscat, true)
if args.addlpos then
for _, addlpos in ipairs(split(args.addlpos, "%s*,%s*")) do
addlpos = require(headword_module).canonicalize_pos(addlpos)
handle_suffix_pos(addlpos, false)
end
end
end
if args.cat then
for _, cat in ipairs(split_on_comma(args.cat)) do
headdata:insert_category(cat)
end
end
local function augment_headdata_from_infls(infls)
infls = resolve_prop(infls)
for _, infl in ipairs(infls) do
local function interr(txt)
error(("Internal error: %s (coming from infls spec %s)"):format(txt, dump(infl)))
end
local function process_labelobjs(labelobjs, originating_term, handle_labelobj)
if labelobjs == nil then
return
end
if type(labelobjs) ~= "string" and type(labelobjs) ~= "table" then
interr(("Wrong type '%s' for label object(s) %s, expected string or table"):format(
type(labelobjs), dump(labelobjs)
))
end
if type(labelobjs) == "string" or type(labelobjs) == "table" and not labelobjs[1] then
labelobjs = {labelobjs}
end
for _, labelobj in ipairs(labelobjs) do
local label, termobj
if type(labelobj) == "string" then
label = labelobj
termobj = originating_term
elseif type(labelobj) ~= "table" then
interr(("Wrong type '%s' for label object %s, expected string or table"):format(
type(labelobj), dump(labelobj)
))
label = labelobj.term
if type(label) ~= "string" then
interr(("Wrong type '%s' for label %s from label object %s, expected string"):format(
type(label), dump(label), dump(labelobj)
))
end
termobj = labelobj
end
handle_labelobj(label, termobj)
end
end
local param = infl[1]
if param then
local vals
-- Fetch the param and make sure it's a string or number.
param = resolve_prop(param)
if type(param) ~= "string" and type(param) ~= "number" then
interr(("Parameter name %s must be a string or number"):format(dump(param)))
end
-- Fetch the type and validate.
local typ = resolve_prop(infl.type)
if typ == nil then
typ = "string"
end
if typ ~= "genders" and typ ~= "boolean" and typ ~= "string" then
-- FIXME: Handle more types.
interr(('Unrecognized type %s; can only currently handle "genders", "boolean" and "string" (the default)'):format(
dump(typ)))
end
-- Fetch the value(s).
if typ == "genders" or typ == "boolean" then
vals = args[param]
elseif typ == "string" then
local parse_inflection_props = resolve_prop(infl.parse_inflection_props)
local include_mods = resolve_prop(infl.include_mods)
local no_augment_include_mods = resolve_prop(infl.no_augment_include_mods)
if include_mods ~= nil or no_augment_include_mods ~= nil then
if parse_inflection_props == nil then
parse_inflection_props = {}
else
parse_inflection_props = shallow_copy(parse_inflection_props)
end
if include_mods ~= nil then
parse_inflection_props.include_mods = include_mods
end
if no_augment_include_mods ~= nil then
parse_inflection_props.no_augment_include_mods = no_augment_include_mods
end
end
vals = headdata:parse_inflection(param, parse_inflection_props)
-- Convert an empty list to nil for consistent checking below.
if not vals[1] then
vals = nil
end
else
interr(("Unrecognized type '%s"):format(typ))
end
-- If value(s) nil, fetch the default.
if vals == nil and infl.default ~= nil then
local default = resolve_prop(infl.default)
if typ == "genders" then
vals = export.canonicalize_termobj_list(default, "spec", "default")
elseif typ == "boolean" then
vals = default
elseif typ == "string" then
vals = export.canonicalize_termobj_list(default, "term", "default")
else
interr(("Unrecognized type '%s"):format(typ))
end
end
-- Resolve "special" values (special signals a string values, such as requesting the default with "+").
if vals ~= nil and infl.resolve_special then
if typ ~= "string" then
interr(("Cannot specify resolve_special= for type %s"):format(dump(typ)))
end
local resolve_special_props = resolve_prop(infl.resolve_special_props, vals)
if infl.is_special ~= nil then
if resolve_special_props == nil then
resolve_special_props = {}
else
resolve_special_props = shallow_copy(resolve_special_props)
end
resolve_special_props.is_special = infl.is_special
end
vals = headdata:resolve_special(vals, infl.resolve_special, resolve_special_props)
end
-- Validate the value(s).
if vals ~= nil and infl.validate ~= nil then
if typ == "boolean" then
interr('Cannot specify validate= when type is "boolean"')
elseif type(infl.validate) == "function" then
infl.validate(headdata, vals)
elseif typ == "genders" then
headdata:validate_genders(vals, infl.validate)
elseif typ == "string" then
validate_items {
items = vals,
field = "term",
valid_items = infl.validate,
item_type = ("values in |%s="):format(param),
}
else
interr(("Unrecognized type '%s"):format(typ))
end
end
-- Run the process_after_parse handler, if it exists.
if vals ~= nil and infl.process_after_parse ~= nil then
local intentionally_nil
vals, intentionally_nil = infl.process_after_parse(headdata, vals)
if vals == nil and not intentionally_nil then
interr("If you return nil from process_after_parse, you must return a second non-nil return " ..
"value to indicate that the nil return value was intentional")
end
end
-- "Implement" the values, if non-falsy (i.e. we don't want to fire on boolean false or empty list).
-- If a fixed label is specified, insert it. Then, depending on the type, attach the values to a label
-- as an inflection, set the `genders` field, or do nothing if boolean (throwing an error if there was
-- no fixed label).
if vals == true or type(vals) == "table" and vals[1] then
if infl.fixed_label and infl.all_fixed_label then
interr("Cannot specify both fixed_label= and all_fixed_label=; specify one or the other")
end
local function check_fixed_label_references_val(label)
if type(label) == "table" and label[1] then
for _, lab in ipairs(label) do
if check_fixed_label_references_val(lab) then
return true
end
end
return false
end
if type(label) == "table" then
if not label.term then
interr(("Fixed label structure %s does not have a value for `.term`"):format(dump(label)))
end
label = label.term
end
if type(label) ~= "string" then
interr(("Wrong type for fixed label %s, should be string"):format(type(label)))
end
return not not label:find("{val}")
end
local fixed_label = infl.fixed_label
local all_fixed_label = infl.all_fixed_label
-- If the value being processed is boolean, there's only one value so treat a fixed_label as an
-- all_fixed_label and output only once; likewise if the caller specified a fixed_label without
-- {val} in it.
if fixed_label and (typ == "boolean" or type(fixed_label) ~= "function" and not
check_fixed_label_references_val(fixed_label)) then
all_fixed_label = fixed_label
fixed_label = nil
end
local inserted_fixed_label
if fixed_label then
if typ == "boolean" then
interr("Boolean fixed_label values should have been converted to all_fixed_label")
end
for _, valobj in ipairs(vals) do
local labelobjs = resolve_prop(fixed_label, valobj)
process_labelobjs(labelobjs, valobj, function(label, termobj)
if label:find("{val}") then
if typ ~= "string" then
interr(('Cannot specify {val} in fixed_label %s when type is "%s"'):format(dump(label), typ))
end
label = label:gsub("{val}", replacement_escape(valobj.term))
end
headdata:insert_fixed_inflection(label, {
originating_term = termobj
})
inserted_fixed_label = true
end)
end
elseif all_fixed_label then
local labelobjs = resolve_prop(all_fixed_label, vals)
process_labelobjs(labelobjs, nil, function(label, termobj)
if label:find("{vals}") then
if typ ~= "string" then
interr(('Cannot specify {vals} in all_fixed_label %s when type is "%s"'):format(dump(label), typ))
end
local formatted_labels = {}
for _, valobj in ipairs(vals) do
insert(formatted_labels, add_decorations(valobj.term, valobj, lang))
end
label = label:gsub("{vals}", replacement_escape(serial_comma_join(formatted_labels)))
end
headdata:insert_fixed_inflection(label, termobj)
inserted_fixed_label = true
end)
end
local inserted_vals
if infl.label ~= nil then
if typ ~= "string" then
interr(("label=%s can only be specified for type 'string', not '%s'"):format(
dump(infl.label), typ
))
end
local label = resolve_prop(infl.label, vals)
if label ~= nil then
local insert_inflection_props = resolve_prop(infl.insert_inflection_props, vals)
local no_auto_cats = resolve_prop(infl.no_auto_cats, vals)
if no_auto_cats ~= nil then
if insert_inflection_props == nil then
insert_inflection_props = {}
else
insert_inflection_props = shallow_copy(insert_inflection_props)
end
insert_inflection_props.no_auto_cats = infl.no_auto_cats
end
local insert_spec = headdata:insert_inflection(vals, label, insert_inflection_props)
headdata.process_props.insert_specs[param] = insert_spec
inserted_vals = true
end
end
if typ == "genders" then
headdata.genders = vals
end
local inserted_cat
if infl.cat then
local allcats = {}
for _, valobj in ipairs(vals) do
local cats = resolve_prop(infl.cat, valobj)
if type(cats) == "string" then
cats = {cats}
end
if cats ~= nil then
for _, cat in ipairs(cats) do
if cat:find("{val}") then
cat = cat:gsub("{val}", replacement_escape(valobj.term))
end
insert_if_not(allcats, cat)
end
end
end
for _, cat in ipairs(allcats) do
headdata:insert_category(cat)
inserted_cat = true
end
end
if typ == "boolean" then
if not inserted_fixed_label and not inserted_cat then
interr(("User set boolean setting for %s= but no fixed label added and no category " ..
"inserted; if you took action in process_after_parse(), make sure to return " ..
"`nil, true`"):format(param))
end
elseif typ == "string" then
if not inserted_vals and not inserted_fixed_label then
interr(("User set value(s) %s for %s= but no inflection inserted and no fixed label " ..
"added; if you took action in process_after_parse(), make sure to return " ..
"`nil, true`"):format(dump(vals), param))
end
end
end
else -- no param specified
if infl.label or infl.all_fixed_label then
interr("Cannot have label= or all_fixed_label= without specifying a param")
end
if infl.fixed_label then
local labelobjs = resolve_prop(infl.fixed_label)
process_labelobjs(labelobjs, nil, function(label, termobj)
if label:find("{val}") then
interr("Cannot specify {val} in a fixed_label= value without specifying a param")
end
headdata:insert_fixed_inflection(label, {
originating_term = termobj
})
end)
end
if infl.cat then
local cats = resolve_prop(infl.cat)
if type(cats) == "string" then
cats = {cats}
end
if cats ~= nil then
for _, cat in ipairs(cats) do
if cat:find("{val}") then
interr("Cannot specify {val} in a cat= value without specifying a param")
end
headdata:insert_category(cat)
end
end
end
end
end
end
if infls then
augment_headdata_from_infls(infls)
end
if augment_headdata then
augment_headdata(headdata, args)
end
if pos_functions[indexing_poscat] then
local pos_infls = pos_functions[indexing_poscat].infls
if pos_infls then
augment_headdata_from_infls(pos_infls)
end
local func = pos_functions[indexing_poscat].func
if func then
func(headdata, args)
end
end
setmetatable(headdata, nil)
if args.json then
return require("Module:JSON").toJSON(headdata)
end
headdata.process_props = nil
return require(headword_module).full_headword(headdata)
end
return export
64mg2im562aq2dm5mkior365d5h5ii7
Mô đun:utilities/templates
828
270834
2567240
2283853
2026-09-29T06:16:48Z
Hiyuune
50834
2567240
Scribunto
text/plain
local export = {}
local debug_track_module = "Module:debug/track"
local parameters_module = "Module:parameters"
local utilities_module = "Module:utilities"
local utilities_format_categories_with_sort_keys_module = "Module:utilities/format_categories_with_sort_keys"
local concat = table.concat
local insert = table.insert
local require = require
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_categories_with_sort_keys(...)
format_categories_with_sort_keys = require(utilities_format_categories_with_sort_keys_module)
return format_categories_with_sort_keys(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function track(...)
track = require(debug_track_module)
return track(...)
end
-- Used by {{catfix}}.
function export.catfix(frame)
local args = process_params(frame:getParent().args, {
[1] = {type = "language", required = true},
[2] = {alias_of = "sc"},
["sc"] = {type = "script"},
})
return require("Module:utilities").catfix(args[1], args.sc)
end
-- Used by {{categorize}}, {{catlangname}} and {{topics}}.
function export.categorize(frame)
local args = process_params(frame:getParent().args, {
[1] = {required = true, type = "language", default = "und", sublist = true},
[2] = {required = true, list = true, allow_holes = true},
sort = {list = true, separate_no_index = true, allow_holes = true},
force = {type = "boolean"},
})
local langs = args[1]
if not langs[1] then
return ""
end
local parts = {}
for _, lang in ipairs(langs) do
local full_langcode = lang:getFullCode()
if lang:getCode() ~= full_langcode then
track("Module:utilities/templates/categorize called with variant langcode")
end
local raw_cats, sort_keys, format = args[2], args.sort, frame.args["format"]
local default_sort = sort_keys.default
local prefix = format == "pos" and lang:getFullName() .. " " or format == "topic" and full_langcode .. ":" or ""
-- Put the categories in an array. If any have an individual sortkey, they
-- will need to be tables with the category and sort key for
-- [[Module:utilities/format_categories_with_sort_keys]]; otherwise, add
-- them as strings.
local cats, n, with_sort_keys = {}, 0, false
for i = 1, raw_cats.maxindex do
local cat = raw_cats[i]
if cat ~= nil then
cat = prefix .. cat
local sort_key = sort_keys[i]
if with_sort_keys then
cat = {category = cat, sort_key = sort_key}
-- If a sort key exists, reformat all previously-processed
-- categories into the table format.
elseif sort_key ~= nil then
with_sort_keys = true
for j = 1, n do
cats[j] = {category = cats[j]}
end
cat = {category = cat, sort_key = sort_key}
end
n = n + 1
cats[n] = cat
end
end
if with_sort_keys then
insert(parts, format_categories_with_sort_keys(cats, lang, default_sort, nil, args.force))
else
insert(parts, format_categories(cats, lang, default_sort, nil, args.force))
end
end
return concat(parts)
end
return export
s31ss6vfmg5spqyg1qbe9bav60gd1kv
Mô đun:languages/data/3/w
828
272294
2567169
2555388
2026-09-28T13:49:45Z
Lcsnes
40261
2567169
Scribunto
text/plain
local m_langdata = require("Module:languages/data")
-- Loaded on demand, as it may not be needed (depending on the data).
local function u(...)
u = require("Module:string utilities").char
return u(...)
end
local c = m_langdata.chars
local p = m_langdata.puaChars
local s = m_langdata.shared
local m = {}
m["waa"] = {
"Walla Walla",
12953960,
"nai-shp",
"Latn",
ancestors = "nai-spt",
}
m["wab"] = {
"Wab",
11222271,
"poz-ocw",
"Latn",
}
m["wac"] = {
"Wasco-Wishram",
12645081,
"nai-ckn",
"Latn",
}
m["wad"] = {
"Wandamen",
2806128,
"poz-hce",
"Latn",
}
m["waf"] = {
"Wakoná",
7961205,
}
m["wag"] = {
"Wa'ema",
12953264,
"poz-ocw",
"Latn",
}
m["wah"] = {
"Watubela",
7975070,
"poz-cma",
"Latn",
}
m["waj"] = {
"Waffa",
3565058,
"paa-kag",
"Latn",
}
m["wal"] = {
"tiếng Wolaytta",
36943,
"omv-nom",
"Latn, Ethi",
"Tiếng Wolaytta",
"Wolaytta",
}
m["wam"] = {
"Massachusett",
56519,
"alg-eas",
"Latn",
}
m["wan"] = {
"Wan",
3913272,
"dmn-nbe",
}
m["wao"] = {
"Wappo",
56530,
"nai-ykn",
"Latn",
}
m["wap"] = {
"Wapishana",
3450493,
"awd",
"Latn",
}
m["waq"] = {
"Wageman",
3436843,
"aus-gun",
"Latn",
}
m["war"] = {
"tiếng Waray",
34279,
"phi",
"Latn",
"Tiếng Waray",
"Waray",
strip_diacritics = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ}},
standard_chars = {
Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy",
c.punc
},
sort_key = {
Latn = "tl-sortkey",
},
}
m["was"] = {
"Washo",
34198,
}
m["wat"] = {
"Kaninuwa",
12952565,
"poz-ocw",
"Latn",
}
m["wau"] = {
"Wauja",
3450522,
"awd",
"Latn",
}
m["wav"] = {
"Waka",
3913394,
"alv-mye",
}
m["waw"] = {
"tiếng Waiwai",
56632,
"sai-prk",
"Latn",
"Tiếng Waiwai",
"Waiwai",
}
m["wax"] = {
"Watam",
3566597,
"paa",
"Latn",
}
m["way"] = {
"tiếng Wayana",
5908753,
"sai-gui",
"Latn",
"Tiếng Wayana",
"Wayana",
}
m["waz"] = {
"Wampur",
7966957,
"poz-ocw",
"Latn",
}
m["wba"] = {
"Warao",
36946,
"qfa-iso",
"Latn",
}
m["wbb"] = {
"Wabo",
7958701,
"poz-hce",
"Latn",
}
m["wbe"] = {
"Waritai",
7969453,
"paa-lkp",
"Latn",
}
m["wbf"] = {
"Wara",
3914052,
"alv-wan",
}
m["wbh"] = {
"Wanda",
7967153,
"bnt-mwi",
}
m["wbi"] = {
"Wanji",
3376818,
"bnt-bki",
"Latn",
}
m["wbj"] = {
"tiếng Alagwa",
56621,
"cus-sou",
"Latn",
"Tiếng Alagwa",
"Alagwa",
}
m["wbk"] = {
"Waigali",
34196,
"nur-sou",
}
m["wbl"] = {
"tiếng Wakhi",
34208,
"xsc-skw",
"Cyrl, Latn, Arab",
"Tiếng Wakhi",
"Wakhi",
translit = {Cyrl = "tg-translit"},
}
m["wbm"] = {
"Wa",
12644869,
"mkh-pal",
}
m["wbp"] = {
"Warlpiri",
1639998,
"aus-pam",
"Latn",
}
m["wbq"] = {
"Waddar",
6708569,
"dra-tel",
}
m["wbr"] = {
"Wagdi",
7959490,
"inc-bhi",
}
m["wbt"] = {
"Wanman",
7967989,
}
m["wbv"] = {
"Wajarri",
3913856,
"aus-psw",
"Latn",
}
m["wbw"] = {
"Woi",
8029092,
"poz-hce",
"Latn",
}
m["wca"] = {
"Yanomámi",
7960056,
}
m["wci"] = {
"tiếng Gbe Waci",
36987,
"alv-gbe",
"Latn",
"Tiếng Gbe Waci",
"Gbe Waci",
}
m["wdd"] = {
"Wandji",
36976,
"bnt-nze",
}
m["wdg"] = {
"Wadaginam",
7958930,
}
m["wdj"] = {
"Wadjiginy",
7959489,
}
m["wdt"] = {
"Wendat",
3567223,
"iro-nor",
"Latn",
ancestors = "iro-ohu",
}
m["wdu"] = {
"Wadjigu",
10719025,
}
m["wdy"] = {
"Wadjabangayi",
nil,
}
m["wea"] = {
"tiếng Wewaw",
15895870,
"kar",
"Mymr",
"Tiếng Wewaw",
"Wewaw",
translit = "ksw-translit",
}
m["wec"] = {
"Wè Western",
11159067,
"kro-wee",
}
m["wed"] = {
"Wedau",
12953294,
"poz-ocw",
"Latn",
}
m["weh"] = {
"Weh",
7979690,
"nic-rnw",
}
m["wei"] = {
"Kiunum",
7983230,
}
m["wem"] = {
"Weme Gbe",
18379970,
"alv-gbe",
}
m["weo"] = {
"Wemale",
7982165,
"poz-cma",
}
m["wer"] = {
"Weri",
11732752,
"paa",
}
m["wes"] = {
"Cameroon Pidgin",
35541,
"crp",
"Latn",
ancestors = "en",
}
m["wet"] = {
"Perai",
12953035,
"poz-tim",
}
m["weu"] = {
"Welaung",
7980503,
"tbq-kuk",
}
m["wew"] = {
"Weyewa",
4314526,
"poz-cet",
"Latn",
}
m["wfg"] = {
"Yafi",
8074520,
"paa-pau",
}
m["wga"] = {
"Wagaya",
7959487,
"aus-pam",
}
m["wgb"] = {
"Wagawaga",
7959485,
}
m["wgg"] = {
"Wangganguru",
7967859,
"aus-kar",
"Latn",
}
m["wgi"] = {
"tiếng Wahgi",
3565122,
nil,
"Latn",
"Tiếng Wahgi",
"Wahgi",
}
m["wgo"] = {
"Waigeo",
7959937,
"poz-hce",
}
m["wgu"] = {
"Wirangu",
2092286,
"aus-pam",
"Latn",
}
m["wgy"] = {
"Warrgamay",
3915942,
"aus-pam",
"Latn",
}
m["wha"] = {
"Manusela",
3287127,
"poz-cma",
}
m["whg"] = {
"North Wahgi",
12953273,
"ngf",
}
m["whk"] = {
"Wahau Kenyah",
7959737,
"poz-swa",
}
m["whu"] = {
"Wahau Kayan",
12473397,
}
m["wib"] = {
"Southern Toussian",
11158982,
"alv-sav",
}
m["wic"] = {
"Wichita",
56513,
"cdd",
"Latn",
}
m["wie"] = {
"Wik-Epa",
10720035,
"aus-pmn",
}
m["wif"] = {
"Wik-Keyangan",
10720037,
"aus-pmn",
}
m["wig"] = {
"Wik-Ngathana",
3915695,
"aus-pmn",
}
m["wih"] = {
"Wik-Me'anha",
10720039,
"aus-pmn",
}
m["wii"] = {
"Minidien",
6865237,
"qfa-tor",
"Latn",
}
m["wij"] = {
"Wik-Iiyanh",
10720036,
"aus-pmn",
}
m["wik"] = {
"Wikalkan",
7999800,
"aus-pmn",
}
m["wil"] = {
"Wilawila",
10720050,
"aus-wor",
}
m["wim"] = {
"Wik-Mungkan",
2092246,
"aus-pmn",
"Latn",
}
m["win"] = {
"tiếng Hocak",
1957108,
"sio-msv",
"Latn",
"Tiếng Hocak",
"Hocak",
}
m["wir"] = {
"Wiraféd",
12953970,
"tup-gua",
"Latn",
}
m["wiu"] = {
"Wiru",
8027044,
"paa",
}
m["wiv"] = {
"Muduapa",
3121040,
"poz-ocw",
"Latn",
}
m["wiy"] = {
"tiếng Wiyot",
36937,
"aql",
"Latn",
"Tiếng Wiyot",
"Wiyot",
}
m["wja"] = {
"Waja",
3914415,
"alv-wjk",
}
m["wji"] = {
"tiếng Warji",
3440381,
"cdc-wst",
nil,
"Tiếng Warji",
"Warji",
}
m["wka"] = {
"tiếng Kw'adza",
3807652,
"cus-sou",
nil,
"Tiếng Kw'adza",
"Kw'adza",
}
m["wkb"] = {
"Kumbaran",
16878146,
"dra-sdo",
}
m["wkd"] = {
"Mo",
7960881,
"poz-ocw",
"Latn",
}
m["wkl"] = {
"tiếng Kalanad",
6350515,
"dra-mal",
"Mlym",
"Tiếng Kalanad",
"Kalanad",
translit = "ml-translit",
}
m["wku"] = {
"tiếng Kunduvadi",
6444383,
"dra-mal",
"Mlym",
"Tiếng Kunduvadi",
"Kunduvadi",
translit = "ml-translit",
}
m["wkw"] = {
"Wakawaka",
10719110,
"aus-pam",
}
m["wky"] = {
"Wangkayutyuru",
33060533,
"aus-kar",
}
m["wla"] = {
"Walio",
7961958,
}
m["wlc"] = {
"Mwali Comorian",
3319155,
"bnt-com",
"Latn",
sort_key = "bnt-com-sortkey",
}
m["wle"] = {
"tiếng Wolane",
12645275,
"sem-eth",
"Latn, Ethi",
"Tiếng Wolane",
"Wolane",
}
m["wlg"] = {
"Kunbarlang",
5618523,
"aus-gun",
"Latn",
}
m["wli"] = {
"Waioli",
7960241,
"paa-nha"
}
m["wlk"] = {
"Wailaki",
20832,
"ath-pco",
"Latn",
}
m["wll"] = {
"Wali (Sudan)",
30597440,
"nub-hil",
}
m["wlm"] = {
"tiếng Wales trung đại",
2487263,
"cel-brw",
"Latn",
"Tiếng Wales trung đại",
"Wales trung đại",
ancestors = "owl",
entry_name = {
from = {"Ð", "ð"},
to = {"D", "d"}
},
sort_key = "wlm-sortkey",
}
m["wlo"] = {
"tiếng Wolio",
1185114,
"poz-wot",
"Latn, Arab",
"Tiếng Wolio",
"Wolio"
}
m["wlr"] = {
"Wailapa",
7960062,
"poz-vnc",
"Latn",
}
m["wls"] = {
"tiếng Wallis",
36979,
"poz-pnp",
"Latn",
"Tiếng Wallis",
"Wallis",
}
m["wlu"] = {
"Wuliwuli",
8039208,
}
m["wlv"] = {
"Wichí Lhamtés Vejoz",
13526867,
"sai-wic",
"Latn",
}
m["wlw"] = {
"Walak",
7961258,
}
m["wlx"] = {
"Wali (Ghana)",
36895,
"nic-mre",
"Latn",
}
m["wly"] = {
"Waling",
7961957,
"sit-kic",
ancestors = "bap",
}
m["wmb"] = {
"Wambaya",
2083197,
"aus-mir",
}
m["wmc"] = {
"Wamas",
7966909,
"ngf-mad",
}
m["wmd"] = {
"Mamaindé",
3284890,
"sai-nmk",
"Latn",
}
m["wme"] = {
"tiếng Wambule",
56785,
"sit-kiw",
"Latn",
"Tiếng Wambule",
"Wambule",
}
m["wmh"] = {
"Waima'a",
7960132,
"poz-tim",
"Latn",
}
m["wmi"] = {
"Wamin",
7966934,
}
m["wmm"] = {
"Maiwa (Indonesia)",
6737226,
"poz",
"Latn",
}
m["wmn"] = {
"Waamwang",
7958575,
"poz-cln",
"Latn",
}
m["wmo"] = {
"Wam",
8030620,
"qfa-tor",
"Latn",
}
m["wms"] = {
"Wambon",
7966922,
"ngf",
"Latn",
}
m["wmt"] = {
"Walmajarri",
2232696,
"aus-pam",
"Latn",
}
m["wmw"] = {
"Mwani",
3042206,
"bnt-swh",
"Latn",
}
m["wmx"] = {
"Womo",
8031646,
"paa-msk",
"Latn",
}
m["wnb"] = {
"Wanambre",
7967057,
"ngf",
"Latn",
}
m["wnc"] = {
"Wantoat",
7968184,
"ngf-fin",
"Latn",
}
m["wnd"] = {
"Wandarang",
3913767,
"aus-arn",
"Latn",
}
m["wne"] = {
"tiếng Waneci",
7967334,
"ira-pat",
"ps-Arab",
"Tiếng Waneci",
"Waneci",
}
m["wng"] = {
"Wanggom",
11732736,
"ngf",
"Latn",
}
m["wni"] = {
"Ndzwani Comorian",
2850262,
"bnt-com",
"Latn",
sort_key = "bnt-com-sortkey",
}
m["wnk"] = {
"Wanukaka",
2370136,
"poz",
"Latn",
}
m["wnm"] = {
"Wanggamala",
7967860,
"aus-kar",
"Latn",
}
m["wno"] = {
"Wano",
3566166,
"ngf",
"Latn",
}
m["wnp"] = {
"Wanap",
7967060,
"qfa-tor",
"Latn",
}
m["wnu"] = {
"Usan",
7901709,
"ngf",
"Latn",
}
m["wnw"] = {
"Wintu",
56754,
"nai-wtq",
"Latn",
}
m["wny"] = {
"Wanyi",
7968201,
"aus-gar",
"Latn",
}
m["woa"] = {
"Tyaraity",
10706951,
}
m["wob"] = {
"tiếng Wobé",
3915363,
"kro-wee",
nil,
"Tiếng Wobé",
"Wobé",
}
m["woc"] = {
"Wogeo",
8029061,
"poz-ocw",
"Latn",
}
m["wod"] = {
"Wolani",
8029704,
"ngf",
"Latn",
}
m["woe"] = {
"Woleaian",
34037,
"poz-mic",
"Latn, Wole",
}
m["wog"] = {
"Wogamusin",
56991,
"paa-spk",
"Latn",
}
m["woi"] = {
"Kamang",
8029096,
"ngf",
"Latn",
}
m["wok"] = {
"Longto",
35795,
"alv-dur",
"Latn",
}
m["wom"] = {
"Perema",
3913378,
"alv-lek",
"Latn",
}
m["won"] = {
"Wongo",
8032058,
"bnt-bsh",
"Latn",
}
m["woo"] = {
"Manombai",
6751253,
"poz",
"Latn",
}
m["wor"] = {
"Woria",
8034514,
"paa-egb",
"Latn",
}
m["wos"] = {
"Hanga Hundi",
6450232,
"paa-spk",
"Latn",
}
m["wow"] = {
"tiếng Wawonii",
3566780,
"poz-btk",
"Latn",
"Tiếng Wawonii",
"Wawonii",
}
m["wpc"] = {
"Wirö",
12953684,
nil,
"Latn",
}
m["wra"] = {
"Warapu",
56739,
"paa-msk",
"Latn",
}
m["wrb"] = {
"Warluwara",
3913761,
"aus-pam",
"Latn",
}
m["wrg"] = {
"Warungu",
7970854,
"aus-pam",
"Latn",
}
m["wrh"] = {
"tiếng Wiradjuri",
3913840,
"aus-cww",
"Latn",
"Tiếng Wiradjuri",
"Wiradjuri",
}
m["wri"] = {
"Wariyangga",
10719289,
"aus-psw",
"Latn",
}
m["wrk"] = {
"Garawa",
2524022,
"aus-gar",
"Latn",
}
m["wrl"] = {
"Warlmanpa",
3913823,
"aus-pam",
}
m["wrm"] = {
"Warumungu",
1764544,
"aus-pam",
"Latn",
}
m["wrn"] = {
"Warnang",
36971,
"alv-hei",
}
m["wro"] = {
"Worora",
3504106,
"aus-wor",
}
m["wrp"] = {
"Waropen",
7969851,
"poz-hce",
"Latn",
}
m["wrr"] = {
"tiếng Wardaman",
3913842,
"aus-yng",
"Latn",
"Tiếng Wardaman",
"Wardaman"
}
m["wrs"] = {
"Waris",
3502610,
"paa-brd",
}
m["wru"] = {
"Waru",
3566463,
}
m["wrv"] = {
"Waruna",
7971078,
}
m["wrw"] = {
"Gugu Warra",
5615286,
}
m["wrx"] = {
"Wae Rana",
7959375,
}
m["wrz"] = {
"Warray",
7969971,
"aus-gun",
}
m["wsa"] = {
"Warembori",
56459,
}
m["wsi"] = {
"Wusi",
8039349,
"poz-vnc",
"Latn",
}
m["wsk"] = {
"Waskia",
7972683,
"ngf-mad",
"Latn",
}
m["wsr"] = {
"Owenia",
7114727,
}
m["wss"] = {
"Wasa",
36914,
"alv-ctn",
ancestors = "ak",
}
m["wsu"] = {
"Wasu",
7972892,
}
m["wsv"] = {
"Wotapuri-Katarqalai",
3877569,
"inc-koh",
}
m["wtf"] = {
"Watiwa",
35316,
"ngf-mad",
"Latn",
}
m["wth"] = {
"Wathaurong",
7974656,
"aus-pam",
"Latn",
}
m["wti"] = {
"Berta",
33178,
}
m["wtk"] = {
"Watakataui",
7972975,
"paa-spk",
}
m["wtm"] = {
"Mewati",
2605943,
"inc-wes",
}
m["wtw"] = {
"tiếng Wotu",
12473488,
"poz",
"Latn",
"Tiếng Wotu",
"Wotu"
}
m["wua"] = {
"Wikngenchera",
10720045,
"aus-pmn",
}
m["wub"] = {
"Wunambal",
3913805,
"aus-wor",
}
m["wud"] = {
"Wudu",
36972,
"alv-gbe",
"Latn",
}
m["wuh"] = {
"tiếng Ngũ Đồn",
1012917,
"crp",
"Latn",
"Tiếng Ngũ Đồn",
"Ngũ Đồn",
ancestors = "cmn, bo, peh",
}
m["wul"] = {
"Silimo",
11732514,
"ngf",
}
m["wum"] = {
"Wumbvu",
36891,
"bnt-kel",
"Latn",
}
m["wun"] = {
"Bungu",
4997686,
"bnt-mby",
"Latn",
}
m["wur"] = {
"Wurrugu",
8039305,
"aus-wdj",
}
m["wut"] = {
"Wutung",
56743,
"paa-msk",
"Latn",
}
m["wuu"] = {
"tiếng Ngô",
34290,
"zhx",
"Hants",
"Tiếng Ngô",
"Ngô",
ancestors = "ltc",
generate_forms = "zh-generateforms",
translit = "zh-translit",
sort_key = "Hani-sortkey",
}
m["wuv"] = {
"Wuvulu-Aua",
3062746,
"poz-aay",
}
m["wux"] = {
"Wulna",
13591670,
}
m["wuy"] = {
"Wauyai",
12953295,
"poz-hce",
}
m["wwa"] = {
"tiếng Waama",
7958576,
"nic-eov",
"Latn",
"Tiếng Waama",
"Waama",
}
m["wwo"] = {
"Dorig",
3037047,
"poz-vnc",
}
m["wwr"] = {
"Warrwa",
7970852,
}
m["www"] = {
"Wawa",
36889,
"nic-mmb",
"Latn",
}
m["wxa"] = {
"tiếng Ngõa Hương",
2252191,
"zhx",
"Hants",
generate_forms = "zh-generateforms",
sort_key = "Hani-sortkey",
}
m["wxw"] = {
"Wardandi",
nil,
}
m["wya"] = {
"Wyandot",
1185119,
"iro-nor",
"Latn",
}
m["wyb"] = {
"tiếng Ngiyambaa",
3913825,
"aus-cww",
"Latn",
"Tiếng Ngiyambaa",
"Ngiyambaa",
}
m["wyi"] = {
"tiếng Woiwurrung",
8029099,
"aus-pam",
"Latn",
"Tiếng Woiwurrung",
"Woiwurrung",
}
m["wym"] = {
"tiếng Wymysorys",
56485,
"gmw-hgm",
"Latn",
"Tiếng Wymysorys",
"Wymysorys",
ancestors = "gmh",
strip_diacritics = {remove_diacritics = c.dotabove},
}
m["wyr"] = {
"Wayoró",
2875044,
"tup",
}
m["wyy"] = {
"Western Fijian",
3062751,
"poz-occ",
}
return require("Module:languages").finalizeData(m, "language")
n9tdvezbg3l3x2xdybp0i6q4bgyd6ct
Mô đun:sa-pronunc
828
275234
2567269
2352594
2026-09-29T09:28:56Z
Hiyuune
50834
2567269
Scribunto
text/plain
local export = {}
local u = require("Module:string/char")
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local ACUTE = u(0x0301)
local COARTIC = u(0x0361)
local DENTAL = u(0x032A)
local FLAP = u(0x0306)
local NORELEASE = u(0x031A)
local SYLLABIC = u(0x0329)
local NONSYLLABIC = u(0x032F)
local NASAL = u(0x0303)
local m_IPA = require("Module:IPA")
local lang = require("Module:languages").getByCode("sa")
local m_a = require("Module:accent qualifier")
local consonants = {
["क"] = "k", ["ग"] = "ɡ", ["ख"] = "kʰ", ["घ"] = "ɡʱ", ["ङ"] = "ŋ",
["च"] = "t͡ɕ", ["ज"] = "d͡ʑ", ["छ"] = "t͡ɕʰ", ["झ"] = "d͡ʑʱ", ["ञ"] = "ɲ",
["त"] = "t", ["द"] = "d", ["थ"] = "tʰ", ["ध"] = "dʱ", ["न"] = "n",
["ट"] = "ʈ", ["ड"] = "ɖ", ["ठ"] = "ʈʰ", ["ढ"] = "ɖʱ", ["ण"] = "ɳ",
["प"] = "p", ["ब"] = "b", ["फ"] = "pʰ", ["भ"] = "bʱ", ["म"] = "m",
["य"] = "j", ["र"] = "ɾ", ["ल"] = "l", ["व"] = "ʋ", ["ळ"] = "ɭ̆", -- ["ळ्ह"] = "ɭ̆ʱ",
["श"] = "ɕ", ["ष"] = "ʂ", ["स"] = "s", ["ह"] = "ɦ",
}
local diacritics = {
["ा"] = "ɑː", ["ि"] = "i", ["ी"] = "iː", ["ु"] = "u", ["ू"] = "uː", ["ृ"] = "r̩", ["ॄ"] = "r̩ː",
["ॢ"] = "l̩", ["ॣ"] = "l̩ː", ["े"] = "ɐi̯", ["ै"] = "ɑːi̯", ["ो"] = "ɐu̯", ["ौ"] = "ɑːu̯", ["्"] = "",
}
local vowel_list = {
["ɐ"] = true, ["ɑː"] = true, ["i"] = true, ["iː"] = true, ["u"] = true, ["uː"] = true, ["r̩"] = true, ["r̩ː"] = true,
["l̩"] = true, ["l̩ː"] = true, ["ɐi̯"] = true, ["ɑːi̯"] = true, ["ɐu̯"] = true, ["ɑːu̯"] = true,
}
local stop_list = {
["k"] = true, ["ɡ"] = true, ["kʰ"] = true, ["ɡʱ"] = true,
["t͡ɕ"] = true, ["d͡ʑ"] = true, ["t͡ɕʰ"] = true, ["d͡ʑʱ"] = true,
["t"] = true, ["d"] = true, ["tʰ"] = true, ["dʱ"] = true,
["ʈ"] = true, ["ɖ"] = true, ["ʈʰ"] = true, ["ɖʱ"] = true,
["p"] = true, ["b"] = true, ["pʰ"] = true, ["bʱ"] = true,
}
local consonant_sonority = {
-- voiceless stops and affricates
["k"] = 1, ["kʰ"] = 1,
["t͡ɕ"] = 1, ["t͡ɕʰ"] = 1,
["t"] = 1, ["tʰ"] = 1,
["ʈ"] = 1, ["ʈʰ"] = 1,
["p"] = 1, ["pʰ"] = 1,
-- voiceless fricatives
["ɕ"] = 2, ["ʂ"] = 2, ["s"] = 2, ["h"] = 2, ["x"] = 2, ["ɸ"] = 2,
-- voiced stops and affricates
["ɡ"] = 3, ["ɡʱ"] = 3,
["d͡ʑ"] = 3, ["d͡ʑʱ"] = 3,
["d"] = 3, ["dʱ"] = 3,
["ɖ"] = 3, ["ɖʱ"] = 3,
["b"] = 3, ["bʱ"] = 3,
-- voiced fricatives
["ɦ"] = 4,
-- nasals
["ŋ"] = 5, ["ɲ"] = 5, ["n"] = 5, ["ɳ"] = 5, ["m"] = 5, ["m̐"] = 5, ["ṃ"] = 5,
-- flaps
["ɾ"] = 6,
-- laterals
["l"] = 7, ["ɭ̆"] = 7, ["ɭ̆ʱ"] = 7,
-- glides
["j"] = 8, ["ʋ"] = 8,
}
local tt = {
-- vowels
["अ"] = "ɐ", ["आ"] = "ɑː", ["इ"] = "i", ["ई"] = "iː", ["उ"] = "u", ["ऊ"] = "uː", ["ऋ"] = "r̩", ["ॠ"] = "r̩ː",
["ऌ"] = "l̩", ["ॡ"] = "l̩ː", ["ए"] = "ɐi̯", ["ऐ"] = "ɑːi̯", ["ओ"] = "ɐu̯", ["औ"] = "ɑːu̯",
-- visarga
["ः"] = "h",
-- chandrabindu
["ँ"] = "m̐",
-- anusvara
["ं"] = "ṃ",
-- avagraha
['ऽ'] = "",
--Vedic extensions
['ᳵ'] = "x", ['ᳶ'] = "ɸ",
}
local accent_vowel = {
["ɐ"] = "ɐ́", ["ɑː"] = "ɑ́ː", ["i"] = "í", ["iː"] = "íː", ["u"] = "ú", ["uː"] = "úː", ["r̩"] = "ŕ̩", ["r̩ː"] = "ŕ̩ː",
["l̩"] = "ĺ̩", ["l̩ː"] = "ĺ̩ː", ["ɐi̯"] = "ɐ́i̯", ["ɑːi̯"] = "ɑ́ːi̯", ["ɐu̯"] = "ɐ́u̯", ["ɑːu̯"] = "ɑ́ːu̯",
}
local function shift_to_codas(syllables)
-- shift codas to previous syllable using the Weerasinghe-Wasala-Gamage method
local to_move = 0
for i, syll in ipairs(syllables) do
if i == 1 then
-- no need to shift to coda if in the first syllable
elseif #syll < 3 then
-- coda movement only needed for onset clusters of 2 or more
elseif #syll == 3 then
-- V.CCV => VC.CV
to_move = 1
elseif #syll == 4 then
if syll[#syll - 1] == "ɾ" or syll[#syll - 1] == "j" or (stop_list[syll[1]] and stop_list[syll[2]]) then
-- V.CCrV or V.CCyV => VC.CrV or VC.CyV
-- if the first two consonants are stops, VC.CCV
to_move = 1
else
-- V.CCCV => VCC.CV
to_move = 2
end
else
-- 4 consonants or more
if syll[#syll - 1] == "ɾ" or syll[#syll - 1] == "j" then
to_move = #syll - 3
else
-- find index of consonant of least sonority
to_move = #syll - 1
local min_son = consonant_sonority[syll[#syll - 1]]
for i = (#syll - 1), 1, -1 do
if consonant_sonority[syll[i]] < min_son then
to_move = i
min_son = consonant_sonority[syll[i]]
end
end
end
end
while to_move > 0 do
table.insert(syllables[i - 1], table.remove(syllables[i], 1))
to_move = to_move - 1
end
end
return syllables
end
local function syllabify(remainder, accent)
local syllables = {}
local syll = {}
while #remainder > 0 do
local phoneme = table.remove(remainder, 1)
if vowel_list[phoneme] then
table.insert(syll, phoneme)
table.insert(syllables, syll)
syll = {}
else
table.insert(syll, phoneme)
end
end
-- store whatever consonants remain
local final_cons = syll
-- Vedic pitch accent
if accent ~= nil and accent <= #syllables then
syll = syllables[accent]
syllables[accent][#syll] = accent_vowel[syll[#syll]]
end
syllables = shift_to_codas(syllables)
-- it is not necessary to include 'l' in the pattern for short vowels as it doesn't occur as a vowel in syllable coda and as consonantal 'l' would then be erroneously included
local short_vowel_patt = "^[ɐiur]" .. SYLLABIC .. "?" .. ACUTE .. "?$"
-- Classic stress accent
-- local num_sylls = #syllables
-- if num_sylls == 2 then
-- table.insert(syllables[1], 1, 'ˈ')
-- elseif num_sylls == 3 then
-- -- if the final segment of the second syllable is not a short vowel, stress the second syllable
-- if match(syllables[2][#syllables[2]], short_vowel_patt) == nil then
-- table.insert(syllables[2], 1, 'ˈ')
-- -- else stress the third
-- else
-- table.insert(syllables[1], 1, 'ˈ')
-- end
-- elseif num_sylls >= 4 then
-- if match(syllables[num_sylls - 1][#syllables[num_sylls - 1]], short_vowel_patt) == nil then
-- table.insert(syllables[num_sylls - 1], 1, 'ˈ')
-- elseif match(syllables[num_sylls - 2][#syllables[num_sylls - 2]], short_vowel_patt) == nil then
-- table.insert(syllables[num_sylls - 2], 1, 'ˈ')
-- else
-- table.insert(syllables[num_sylls - 3], 1, 'ˈ')
-- end
-- end
-- If there are phonemes left, then the word ends in a consonant
-- Add them to the last syllable
for _, phoneme in ipairs(final_cons) do
table.insert(syllables[#syllables], phoneme)
end
for i, _ in ipairs(syllables) do
syllables[i] = table.concat(syllables[i], "")
end
return table.concat(syllables, ".")
end
local anu_to_nasals = {
["k"] = "ŋ", ["ɡ"] = "ŋ", ["ŋ"] = "ŋ",
["t͡ɕ"] = "ɲ", ["d͡ʑ"] = "ɲ", [""] = "ɲ",
["t"] = "n", ["d"] = "n", ["n"] = "n",
["ʈ"] = "ɳ", ["ɖ"] = "ɳ", ["ɳ"] = "ɳ",
["p"] = "m", ["b"] = "m", ["m"] = "m",
}
local function anusvara(text)
text = gsub(text, "ṃ$", "m")
text = gsub(
text,
"ṃ([ %.ˈ]?)([kɡtdnʈɖpbm])([" .. DENTAL .. COARTIC .. "]?)([ɕʑ]?)",
function(div, cons, mark, fric)
return anu_to_nasals[cons .. mark .. fric] .. div .. cons .. mark .. fric
end
)
text = gsub(
text,
"([ɐɑiurleo]" .. SYLLABIC .. "?)(" .. ACUTE .. "?ː?)ṃ",
"%1" .. NASAL .. "%2"
)
-- for diphthongs
text = gsub(
text,
"([ɐɑ])(" .. ACUTE .. "?ː?[iu]" .. NONSYLLABIC .. ")ṃ",
"%1" .. NASAL .. "%2"
)
text = gsub(text, "ṃ", "ɴ")
return text
end
local function convert_word(word, accent)
local chars = {}
local t = {}
gsub(word, ".", function(c) table.insert(chars, c) end)
for i, c in ipairs(chars) do
if consonants[c] then
table.insert(t, consonants[c])
if not diacritics[chars[i + 1]] then
table.insert(t, "ɐ")
end
elseif c == "्" then
-- do nothing
elseif diacritics[c] then
table.insert(t, diacritics[c])
elseif tt[c] then
table.insert(t, tt[c])
end
end
word = syllabify(t, accent)
word = gsub(word, "%.ˈ", "ˈ")
-- correction for ळ्ह = ɭ̆ʱ
word = gsub(word, "ɭ̆([.']?)ɦ", "%1ɭ̆ʱ")
-- chandrabindu (shouldn't this code be in the anusvara function?)
word = gsub(
word,
"([ɐɑiurleo]" .. SYLLABIC .. "?)(" .. ACUTE .. "?ː?)m̐",
"%1" .. NASAL .. "%2"
)
-- for diphthongs
word = gsub(
word,
"([ɐɑ])(" .. ACUTE .. "?ː?[iu]" .. NONSYLLABIC .. ")m̐",
"%1" .. NASAL .. "%2"
)
return word
end
local function convert_words(words, accents)
local result = {}
local word_num = 1
for word in mw.text.gsplit(words, " ") do
table.insert(result, convert_word(word, accents[word_num]))
word_num = word_num + 1
end
text = table.concat(result, " ")
return text
end
local function phon_procs(text)
-- Anusvāra
text = anusvara(text)
return text
end
local function abhinidhana_phonemic(text)
--de-aspirate and de-affricate before stops
text = gsub(
text,
"([kɡtdʈɖpb])(" .. DENTAL .. "?)[ʰʱ]?([ %.ˈ]?)([kɡtdʈɖpb])",
"%1%2%3%4"
)
text = gsub(
text,
"([td])" .. COARTIC .. "[ɕʑ][ʰʱ]?([ %.ˈ]?)([kɡtdʈɖpb])",
"%1%2%3"
)
return text
end
local function abhinidhana_phonetic(text)
text = gsub(
text,
"([kɡtdʈɖpb])(" .. DENTAL .. "?)([ %.ˈ]?)([kɡtdʈɖpb])",
"%1%2" .. NORELEASE .. "%3%4"
)
return text
end
local superscript = {
["ɐ"] = "ɐ̆",
["ɑ"] = "ɑ̆",
["e"] = "ĕ",
["o"] = "ŏ",
["i"] = "ĭ",
["u"] = "ŭ",
}
local function make_dialects(text)
local dialects = {}
text = abhinidhana_phonemic(text)
-- Rigvedic Sanskrit
local rig_phnm = text
rig_phnm = gsub(rig_phnm, "^ˈ", "")
rig_phnm = gsub(rig_phnm, "ˈ", ".")
rig_phnm = gsub(rig_phnm, " %.", " ")
local rig_phnt = abhinidhana_phonetic(rig_phnm)
-- visarga alternation
rig_phnt = gsub(rig_phnt, "h([ %.ˈ]?)([p])", "ɸ%1%2")
rig_phnt = gsub(rig_phnt, "h([ %.ˈ]?)([k])", "x%1%2")
-- nasalized semivowels [this is suspected to be relevant only for anusvara (see Whitney §71c), so outcommented for now]
-- rig_phnt = gsub(
-- rig_phnt,
-- "([ŋɲnɳm])(" .. DENTAL .. "?)([ %.ˈ]?)([lɭjʋ])([" .. DENTAL .. FLAP .. "]?)(ʱ?)",
-- "%4%5" .. NASAL .. "%3%4%5%6"
-- )
dialects['rig'] = {
label = "Vệ Đà",
phonemic = rig_phnm,
phonetic = rig_phnt,
}
-- Classical Sanskrit
local cla_phnm = text
cla_phnm = gsub(cla_phnm, "[éóíúŕĺ" .. ACUTE .. "]", {
["é"] = "e", ["ó"] = "o", ["í"] = "i", ["ú"] = "u",
["ŕ"] = "r", ["ĺ"] = "l", [ACUTE] = ""
})
cla_phnm = gsub(cla_phnm, "ɐ(" .. NASAL .. "?)i" .. NONSYLLABIC, "e%1ː")
cla_phnm = gsub(cla_phnm, "ɐ(" .. NASAL .. "?)u" .. NONSYLLABIC, "o%1ː")
cla_phnm = gsub(cla_phnm, "ɑ(" .. NASAL .. "?)ː([iu]" .. NONSYLLABIC .. ")", "ɑ%1%2")
-- Add dental diacritic to t, d, tʰ, dʱ, n, l, s.
cla_phnm = gsub(
cla_phnm,
"([td]" .. COARTIC .. "?[ɕʑ]?)([ʰʱ]?)",
function(base_consonant, aspiration)
if base_consonant == "t" or base_consonant == "d" then
return base_consonant .. DENTAL .. aspiration
end
end
)
cla_phnm = gsub(cla_phnm, "([nls])", "%1" .. DENTAL)
local cla_phnt = abhinidhana_phonetic(cla_phnm)
-- cla_pron = gsub(cla_pron, "r̩(" .. NASAL .. "?)(" .. ACUTE .. "?)(ː?)", "ɾi%1%2%3")
-- cla_pron = gsub(cla_pron, "l̩(" .. NASAL .. "?)(" .. ACUTE .. "?)(ː?)", "l̪i%1%2%3")
cla_phnt = gsub(
cla_phnt,
"([ɐɑeoiu])(" .. NASAL .. "?)(ː?)h$",
function (vow, nas, length)
return vow .. nas .. length .. "h" .. superscript[vow]
end
)
cla_phnt = gsub(
cla_phnt,
"([ɐɑeoiu])(" .. NASAL .. "?)(ː?)h ",
function (vow, nas, length)
return vow .. nas .. length .. "h" .. superscript[vow] .. " "
end
)
-- for diphthongs
cla_phnt = gsub(
cla_phnt,
"(ɑ)(" .. NASAL .. "?)([iu]" .. NONSYLLABIC .. ")h$",
function (vow, nas, glide)
return vow .. nas .. glide .. "h" .. superscript[vow]
end
)
cla_phnt = gsub(
cla_phnt,
"(ɑ)(" .. NASAL .. "?)([iu]" .. NONSYLLABIC .. ")h ",
function (vow, nas, glide)
return vow .. nas .. glide .. "h" .. superscript[vow] .. " "
end
)
dialects['cla'] = {
label = "tiếng Phạn cổ điển",
phonemic = cla_phnm,
phonetic = cla_phnt,
}
return dialects
end
local function make_table(dialects, novedic, noclassical, nolabel)
local dial_types = {'rig', 'cla'}
if novedic then
table.remove(dial_types, 1)
end
if noclassical then
table.remove(dial_types, 2)
end
if #dial_types == 1 then
local dial = dial_types[1]
local IPA_args = {{pron = '/' .. dialects[dial].phonemic .. '/'}}
if dialects[dial].phonemic ~= dialects[dial].phonetic then
table.insert(IPA_args, {pron = '[' .. dialects[dial].phonetic .. ']'})
end
if nolabel then
return m_IPA.format_IPA_full { lang = lang, items = IPA_args }
else
return table.concat{
'\n* ',
m_a.format_qualifiers(lang, {dialects[dial].label}),
' ',
m_IPA.format_IPA_full { lang = lang, items = IPA_args },
}
end
else
local inline_args = {{pron = '/' .. dialects.cla.phonemic .. '/'}}
if dialects.cla.phonemic ~= dialects.cla.phonetic then
table.insert(inline_args, {pron = '['.. dialects.cla.phonetic ..']'})
end
local full = {}
for _, dial in ipairs(dial_types) do
local full_args = {{pron = '/' .. dialects[dial].phonemic .. '/'}}
if dialects[dial].phonemic ~= dialects[dial].phonetic then
table.insert(full_args, {pron = '['.. dialects[dial].phonetic ..']'})
end
table.insert(full, table.concat{
'\n* ',
m_a.format_qualifiers(lang, {dialects[dial].label}),
' ',
m_IPA.format_IPA_full { lang = lang, items = full_args },
})
end
return table.concat(full, "")
end
end
function export.show(frame)
local params = {
[1] = {alias_of = 'w'},
w = {default = mw.loadData("Module:headword/data").pagename},
a = {list = true, allow_holes = true, type = 'number'},
novedic = {type = 'boolean'},
nv = {alias_of = 'novedic'},
noclassical = {type = 'boolean'},
nolabel = {type = 'boolean'},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local text = convert_words(args.w, args.a)
text = phon_procs(text)
local dialects = make_dialects(text)
return make_table(dialects, args.novedic, args.noclassical, args.nolabel)
end
return export
qx44zn1ox1zyo66a97yp7nv4ylvv0r4
lơka
0
275715
2567253
2087243
2026-09-29T06:59:10Z
Hiyuune
50834
2567253
wikitext
text/x-wiki
=={{langname|scb}}==
==={{section|noun}}===
{{head|scb|Danh từ}}
# {{lb|scb|Rục}} [[gà|Gà]].
ht6mehohi81904mwyi690la493h1kwh
Bản mẫu:sa-decl-adj
10
279322
2567271
2095608
2026-09-29T09:34:26Z
Hiyuune
50834
Đổi hướng đến [[Bản mẫu:sa-decl-adj-mfn]]
2567271
wikitext
text/x-wiki
#redirect [[Template:sa-decl-adj-mfn]]
axmitovmiqsekp72zp2bctwshqg4tx6
Mô đun:he-headword
828
281368
2567258
2317151
2026-09-29T08:32:20Z
Hiyuune
50834
2567258
Scribunto
text/plain
local m_headword = require("Module:headword")
local m_headword_utilities = require("Module:headword utilities")
local com = require("Module:he-common")
local export = {}
local pos_functions = {}
local lang = require("Module:languages").getByCode("he")
local function get_params_list(args, argprefix)
local export = {}
i = 1
term = argprefix
while args[term] ~= nil and args[term] ~= "" do
table.insert(export, term)
i = i + 1
term = argprefix .. i
end
return export
end
local function make_params_array(args, params)
local export = {}
for _, param in ipairs(params) do
table.insert(export, args[param])
end
return export
end
-- extensions to what parse_term_with_modifiers() enables by default
local inflection_inline_mods = {
"tr",
{"wv", {}},
{"dwv", {}},
}
local function object_has_property_other_than(obj, excluded)
for key in pairs(obj) do
if key ~= excluded then
return true
end
end
return false
end
local function parse_form(value, param)
if value == nil then
return nil
end
local obj = m_headword_utilities.parse_term_with_modifiers {
val = value,
paramname = param,
include_mods = inflection_inline_mods,
}
-- For modifier-only values such as <wv:bar>, the parser returns term="".
-- Normalize it to nil so the unvocalized link target can be derived from wv/dwv.
if obj.term == "" then
obj.term = nil
end
if obj.term == "-" and object_has_property_other_than(obj, "term") then
error(("Parameter |%s= uses the sentinel - with inline modifiers; use bare - instead")
:format(param))
end
return obj
end
local function parse_form_slot(args, param)
local legacy = {
wv = args[param .. "wv"],
dwv = args[param .. "dwv"],
}
local obj = parse_form(args[param], param)
if not obj then
if legacy.wv == nil and legacy.dwv == nil then
return nil
end
obj = {}
end
-- Legacy companions remain plain strings. Inline syntax belongs only on the
-- main form value, but the old companions can still provide wv/dwv displays.
for _, kind in ipairs({"wv", "dwv"}) do
local value = legacy[kind]
if value ~= nil then
if obj[kind] ~= nil then
error(("Can't specify both |%s%s= and inline <%s:...> in |%s=")
:format(param, kind, kind, param))
end
obj[kind] = value
end
end
return obj
end
local function normalize_inflection_obj(obj, is_construct, param)
if is_construct then
-- Resolve a target before adding display-only makaf. In particular, if
-- only wv/dwv was supplied, deriving the target afterwards would wrongly
-- include the newly added makaf in the target.
obj.term, obj.wv, obj.dwv = com.process_wv_triad(obj.term, obj.wv, obj.dwv)
obj.wv = com.end_with_makaf(obj.wv or obj.term)
obj.dwv = com.end_with_makaf(obj.dwv)
end
if obj.wv or obj.dwv then
return com.apply_wv_to_link_data(obj)
end
if not obj.term or obj.term == "" then
error(("Parameter |%s= has no term or vocalization; specify a term, <wv:...>, or <dwv:...>")
:format(param))
end
return obj
end
local function format_head(head, wv, dwv)
if head then
return head
end
wv = wv or mw.loadData("Module:headword/data").pagename
-- not really an inflection table but for the black links
return dwv and wv .. " / " .. '<span class="inflection-table">' .. "[[" .. dwv .. "]]" .. "</span>" or wv
end
local function format_preview_warnings(warnings)
if not warnings[1] then
return ""
end
return ' <span class="error previewonly">' .. table.concat(warnings, "<br />") .. "</span>"
end
local function maybe_get_inflection(args, name, params, list, accel, is_construct)
if list then
-- Preserving existing behavior: scan consecutive form parameters (e.g. |pl=,
-- |pl2=, ...), without treating |plNwv= or |plNdwv= as forms by themselves.
-- TODO: Add tracking and warnings for ignored, etc.
params = get_params_list(args, params)
end
local tbl = {}
if type(params) ~= "table" then
params = {params}
end
for _, param in ipairs(params) do
local obj = parse_form_slot(args, param)
if obj then
tbl.label = name
tbl.accel = accel
table.insert(tbl, normalize_inflection_obj(obj, is_construct, param))
end
if args[param] == "" or args[param .. "wv"] == "" or args[param .. "dwv"] == "" then
require('Module:debug').track("he-noun/empty-form-param")
elseif args[param] ~= nil and args[param .. "wv"] ~= nil then
require('Module:debug').track("he-noun/param-and-paramwv")
end
end
return next(tbl) and tbl
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local preview_warnings = {}
local args = {}
for k, v in pairs(frame:getParent().args) do
if v ~= "" then
args[k] = v
end
end
local poscat = frame.args[1] or error("Từ loại không được chỉ rõ. Vui lòng thêm tham số đầu tiên để gọi mô đun.")
if frame.args["auto"] and (args["auto"] == "" or not args["auto"]) then args["auto"] = frame.args["auto"] end
local data = {lang = lang, pos_category = poscat, categories = {}, heads = {}, translits = make_params_array(args, get_params_list(args, "tr")), genders = {}, inflections = {}}
data.sort_key = args["sort"]; if data.sort_key == "" then data.sort_key = nil end
if data.sort_key then
data.sort_key = data.sort_key .. "a" .. mw.loadData("Module:headword/data").pagename
end
local wv = args["wv"] or mw.loadData("Module:headword/data").pagename
if not args["head"] then
data.no_redundant_head_cat = true
end
-- headword forms
local i = 1
repeat
local suffix = i == 1 and "" or i
local this_head = args["head" .. suffix]
local this_wv = args["wv" .. suffix]
local this_dwv = args["dwv" .. suffix]
data.heads[i] = format_head(this_head, this_wv, this_dwv)
if this_head and (this_wv or this_dwv) then
table.insert(preview_warnings, "Cảnh báo: <code>|head" .. suffix ..
"=</code> bị ghi đè <code>|wv" .. suffix .. "=</code>/<code>|dwv" .. suffix .. "=</code>.")
end
if this_dwv and mw.ustring.match(this_dwv, "%[%[") then
require('Module:debug').track("he-noun/link-in-dwv")
end
i = i + 1
until not (args["head" .. i] or args["wv" .. i] or args["dwv" .. i])
if not (args["wv"] or args["dwv"] or args["head"]) then
require('Module:debug').track("he-noun/no-nikud")
end
local character_categories = {
{"׳", "Từ đánh vần với ׳ tiếng Do Thái"},
{"״", "Từ đánh vần với ״ tiếng Do Thái"},
{"ׇ", "Từ đánh vần với kamats katan tiếng Do Thái"},
{"ֳ", "Từ đánh vần với khataf kamats tiếng Do Thái"},
}
for _, category_spec in ipairs(character_categories) do
for _, head in ipairs(data.heads) do -- check dwv/wv or head
if mw.ustring.match(head, category_spec[1]) then
table.insert(data.categories, category_spec[2])
break
end
end
end
local begedkefet = "בגדכפת"
local vowels = "ְֱֲֳִֵֶַָֹֻ"
local begedkefet_regex = "[" .. begedkefet .. "]"
local vowels_with_mater_lectionis_regex = "[" .. vowels .. "וא" .. "]"
local fixed_nikud = com.fix_nikud(args["dwv"] or args["wv"] or "")
if args["unchangeablebegedkefet"] == "1"
or mw.ustring.match(fixed_nikud, "^" .. begedkefet_regex .. vowels_with_mater_lectionis_regex) then
table.insert(data.categories, "Hebrew terms beginning with an unchangeable begedkefet letter")
end
local pattern_link = ""
if args["pat"] and args["pat"] ~= "" and poscat ~= "Động từ" then
table.insert(data.categories, "Mục từ loại " .. args["pat"] .. " tiếng Do Thái")
local patfmt = require("Module:links").full_link({lang = lang, alt = args["pat"], tr = "-"})
pattern_link = " <small>[[Phụ lục:Tiếng Do Thái/loại" .. args["pat"] .. "|[loại: " .. patfmt .. "] ]]</small>"
end
if pos_functions[poscat] then
pos_functions[poscat](args, data, wv)
end
table.insert(data.inflections, maybe_get_inflection(args, "Biblical Hebrew [[w:Pausa|pausal form]]", "pausal", false))
return (m_headword.full_headword(data)) .. pattern_link .. format_preview_warnings(preview_warnings)
end
local final_to_nonfinal = {
["ך"]="כ",
["ם"]="מ",
["ן"]="נ",
["ף"]="פ",
["ץ"]="צ",
}
local function stemify_helper(letter, rest)
return (final_to_nonfinal[letter] or letter) .. rest
end
local function stemify(x)
if x then
x = mw.ustring.gsub(x, "ְ([^א-תﭏ]*)$", "%1")
x = mw.ustring.gsub(x, "([ךםןףץ])([^א-תﭏ]*)$", stemify_helper)
end
return x
end
local function gen_fem_t(stemwv)
local stub, vowel, final, dagesh = mw.ustring.match(com.fix_nikud(stemwv), "^(.*)([ְֲִָ])([א-ת][ׁׂ]?)(ּ?)$")
if not stub then
error("Error attaching feminine ת suffix, please check vocalization.")
end
if final == "י" then
if vowel ~= "ִ" or dagesh ~= "ּ" then
error("Error attaching feminine ת suffix, please check vocalization.")
end
return stub .. vowel .. final .. "ת"
end
if vowel == "ִ" or dagesh ~= "" then
error("Error attaching feminine ת suffix, please check vocalization.")
end
if final == "א" then
return stub .. "ֵ" .. final .. "ת"
end
if final == "ה" or final == "ח" or final == "ע" then
return stub .. "ַ" .. final .. "ַ" .. "ת"
end
return stub .. "ֶ" .. final .. "ֶ" .. "ת"
end
pos_functions["Tính từ"] = function(args, data)
-- table.insert(genders, "m")
if args["auto"] == nil or args["auto"] == "" then
-- Use only provided inflections
table.insert(data.inflections, maybe_get_inflection(args, "giống cái", {"f", "f2"}, false))
table.insert(data.inflections, maybe_get_inflection(args, "giống đực số nhiều", {"mp", "mp2"}, false))
table.insert(data.inflections, maybe_get_inflection(args, "giống cái số nhiều", "fp", true))
else
require("Module:debug").track("he-adj/auto")
-- Parse explicit rendered overrides before doing any morphology. Stem
-- parameters are generation inputs, not rendered forms, and stay raw.
local function prepare_objects(primary, secondary)
local objects = {}
local primary_obj = parse_form_slot(args, primary)
table.insert(objects, {form = primary_obj or {}, param = primary})
if secondary then
local secondary_obj = parse_form_slot(args, secondary)
if secondary_obj then
table.insert(objects, {form = secondary_obj, param = secondary})
end
end
return objects
end
local feminine = prepare_objects("f", "f2")
local masculine_plural = prepare_objects("mp", "mp2")
local feminine_plural = prepare_objects("fp")
-- Automatically generate inflections.
local stem = args["stem"]
local stemwv = args["stemwv"]
local stemdwv = args["stemdwv"]
local e = false
if not stem then
if stemwv then
stem = com.remove_nikud(stemwv)
else
stem = stemify(mw.loadData("Module:headword/data").pagename)
if not stemdwv then
stemwv = stemify(args["wv"])
stemdwv = stemify(args["dwv"])
end
local fstemwv = stemwv and com.fix_nikud(stemwv)
local fstemdwv = stemdwv and com.fix_nikud(stemdwv)
if (fstemwv or fstemdwv) and (stem ~= nil or stem:match("ה$")) and (fstemwv == nil or fstemwv:match("ֶה$")) and (fstemdwv == nil or fstemdwv:match("ֶה$")) then
e = true
stem = stem and stem:gsub("ה$", "")
stemwv = fstemwv and fstemwv:gsub("ֶה$", "")
stemdwv = fstemdwv and fstemdwv:gsub("ֶה$", "")
end
end
end
stem, stemwv, stemdwv = com.process_wv_triad(stem, stemwv, stemdwv)
local function insert_generated_inflection(label, objects, generate)
for _, item in ipairs(objects) do
local obj = item.form
obj.term, obj.wv, obj.dwv = com.process_wv_triad(obj.term, obj.wv, obj.dwv)
end
-- Preserve the established primary bare-hyphen suppression behavior.
if objects[1].form.term == "-" then
return
end
local forms = {label = label}
for _, item in ipairs(objects) do
generate(item.form)
table.insert(forms, normalize_inflection_obj(item.form, false, item.param))
end
table.insert(data.inflections, forms)
end
insert_generated_inflection("giống cái", feminine, function(obj)
if not (obj.term or obj.wv or obj.dwv) then
obj.term = stem and (stem .. "ה")
obj.wv = stemwv and (stemwv .. "ָה")
obj.dwv = stemdwv and (stemdwv .. "ָה")
elseif obj.term == "ת" and not (obj.wv or obj.dwv) then
obj.term = stem and (stem .. (e and "ית" or "ת"))
obj.wv = stemwv and (e and (stemwv .. "ֵית") or gen_fem_t(stemwv))
obj.dwv = stemdwv and (e and (stemdwv .. "ֵית") or gen_fem_t(stemdwv))
end
end)
insert_generated_inflection("giống đực số nhiều", masculine_plural, function(obj)
if not (obj.term or obj.wv or obj.dwv) then
obj.term = stem and (stem .. "ים")
obj.wv = stemwv and (stemwv .. "ִים")
obj.dwv = stemdwv and (stemdwv .. "ִים")
end
end)
insert_generated_inflection("giống cái số nhiều", feminine_plural, function(obj)
if not (obj.term or obj.wv or obj.dwv) then
obj.term = stem and (stem .. "ות")
obj.wv = stemwv and (stemwv .. "וֹת")
obj.dwv = stemdwv and (stemdwv .. "וֹת")
end
end)
end
end
pos_functions["Từ hạn định"] = function(args, data, wv)
if args["g"] == "m" or args["g"] == "m-p" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
table.insert(data.inflections, maybe_get_inflection(args, "feminine counterpart", "f", true))
elseif args["g"] == "f" or args["g"] == "f-p" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
table.insert(data.inflections, maybe_get_inflection(args, "masculine counterpart", "m", false))
end
end
local function validate_gender(gender, param)
if not (
gender == "" or gender == nil
or gender == "m" or gender == "f"
or gender == "m-d" or gender == "f-d"
or gender == "m-p" or gender == "f-p"
or gender == "-" -- for אַל "naught"
) then
if gender:find "m" and gender:find "f" then
error("To indicate two genders, use |g2=; for instance, for masculine or feminine, |g=m|g2=f")
else
error("Gender in |" .. param .. "=" .. gender .. " is invalid; choose from m, f, m-d, f-d, m-p, f-p")
end
end
end
pos_functions["Danh từ"] = function(args, data, wv)
validate_gender(args["g"], "g")
validate_gender(args["g2"], "g2")
if args["g2"] ~= nil and args["g2"] ~= "" and not (args["g"] ~= nil and args["g"] ~= "") then
error("|g= parameter required if |g2= is present")
end
if args["g"] == "m" or args["g"] == "f" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
if args["sg"] ~= nil then
require('Module:debug').track("he-noun/sg-for-head")
end
elseif args["g"] == "m-d" or args["g"] == "f-d" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
table.insert(data.categories, "Danh từ chỉ có số đôi tiếng Do Thái")
table.insert(data.inflections, maybe_get_inflection(args, "bất định số ít", "sg", false))
elseif args["g"] == "m-p" or args["g"] == "f-p" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
table.insert(data.categories, "Danh từ chỉ có số nhiều tiếng Do Thái")
table.insert(data.inflections, maybe_get_inflection(args, "bất định số ít", "sg", false))
elseif args["g"] == "" or args["g"] == nil then
table.insert(data.genders, "?")
table.insert(data.categories, "Yêu cầu giống mục từ tiếng Do Thái")
end
-- Dual forms rare enough that there's no need for without/missing categoristion
table.insert(data.inflections, maybe_get_inflection(args, "số đôi bất định", "dual", true))
-- Compound words such as בית קברות should be ignored when filling up categories like
-- Category:Hebrew masculine nouns with plurals ending in ־ות
is_compound_word = mw.ustring.find(wv, "[ ־]") ~= nil
if args["pl"] == "-" then
table.insert(data.inflections, {label = "không có biến thể hình thái số nhiều"})
table.insert(data.categories, "Danh từ không có biến thể hình thái số nhiều tiếng Do Thái")
elseif args["pl"] == "" or args["pl"] == nil then
table.insert(data.categories, "Danh từ thiếu biến thể hình thái số nhiều tiếng Do Thái")
else
local plural = maybe_get_inflection(args, "số nhiều bất định", "pl", true, {form = "p", lemma = wv})
table.insert(data.inflections, plural)
local plural_term = plural[1].term
if args["g"] == "m" and mw.ustring.sub(com.remove_nikud(plural_term), -2, -1) == "ות" and not is_compound_word then
table.insert(data.categories, "Danh từ giống đực với số nhiều kết thúc bằng ־ות tiếng Do Thái")
elseif args["g"] == "f" and mw.ustring.sub(com.remove_nikud(plural_term), -2, -1) == "ים" and not is_compound_word then
table.insert(data.categories, "Danh từ giống cái với số nhiều kết thúc bằng ־ים tiếng Do Thái")
end
if mw.ustring.sub(com.remove_nikud(plural_term), -3, -1) == "יים"
and mw.ustring.sub(mw.ustring.gsub(com.remove_nikud(wv), "[%[%]]", ""), -1, -1) ~= "י" then
table.insert(data.categories, "Danh từ với số nhiều kết thúc bằng ־יים tiếng Do Thái")
end
end
if args["cons"] == "-" then
table.insert(data.inflections, {label = "không có dạng cấu tạo"})
table.insert(data.categories, "Danh từ không có dạng cấu tạo tiếng Do Thái")
else
if args["cons"] == "" or args["cons"] == nil then
table.insert(data.categories, "Danh từ thiếu dạng cấu tạo số ít tiếng Do Thái")
else
table.insert(data.inflections, maybe_get_inflection(args, "cấu tạo số ít", "cons", true, {form = "s|cons", lemma = wv}, true))
end
table.insert(data.inflections, maybe_get_inflection(args, "cấu tạo số đôi", "dualcons", true , nil, true))
if (args["plcons"] == "" or args["plcons"] == nil) and args["pl"] ~= "-" then
table.insert(data.categories, "Danh từ thiếu dạng cấu tạo số nhiều tiếng Do Thái")
else
table.insert(data.inflections, maybe_get_inflection(args, "cấu tạo số nhiều", "plcons", true, {form = "p|cons", lemma = wv}, true))
end
end
table.insert(data.inflections, maybe_get_inflection(args, "masculine counterpart", "m", true))
table.insert(data.inflections, maybe_get_inflection(args, "feminine counterpart", "f", true))
if args["g"] == "m" and mw.ustring.sub((com.remove_nikud(args["wv"] or args["dwv"] or mw.loadData("Module:headword/data").pagename)), -1) == "ת" then
table.insert(data.categories, "Danh từ giống đực kết thúc bằng ־ת tiếng Do Thái")
elseif args["g"] == "m" and mw.ustring.sub((com.remove_nikud(args["wv"] or args["dwv"] or mw.loadData("Module:headword/data").pagename)), -1) == "ה" then
table.insert(data.categories, "Danh từ giống đực kết thúc bằng ־ה tiếng Do Thái")
elseif args["g"] == "m" then
table.insert(data.categories, "Danh từ giống đực tiếng Do Thái")
elseif args["g"] == "f" then
table.insert(data.categories, "Danh từ giống cái tiếng Do Thái")
end
end
pos_functions["Số từ"] = function(args, data)
table.insert(data.inflections, maybe_get_inflection(args, "cấu tạo", "cons", true, nil, true))
table.insert(data.inflections, maybe_get_inflection(args, "số đôi", "dual", true))
table.insert(data.inflections, maybe_get_inflection(args, "số nhiều", "pl", true))
local f = maybe_get_inflection(args, "giống cái", "f", true)
table.insert(data.inflections, f)
table.insert(data.inflections, maybe_get_inflection(args, "cấu trúc giống cái", "fcons", true, nil, true))
table.insert(data.genders, "m")
if not f then
table.insert(data.genders, "f")
end
end
pos_functions["Đại từ"] = function(args, data)
if args["g"] == "m" or args["g"] == "f" or args["g"] == "m-p" or args["g"] == "f-p" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
elseif args["n"] then
require('Module:debug').track("he-pron/param-n")
end
end
pos_functions["Danh từ riêng"] = function(args, data, wv)
if args["pl"] and args["pl"] ~= "-" and args["pl"] ~= "" then
local plural = maybe_get_inflection(args, "bất định số nhiều", "pl", true, {form = "p", lemma = wv})
table.insert(data.inflections, plural)
local plural_term = plural[1].term
if args["g"] == "m" and mw.ustring.sub(com.remove_nikud(plural_term), -2, -1) == "ות" then
table.insert(data.categories, "Danh từ giống đực với số nhiều kết thúc bằng ־ות tiếng Do Thái")
elseif args["g"] == "f" and mw.ustring.sub(com.remove_nikud(plural_term), -2, -1) == "ים" then
table.insert(data.categories, "Danh từ giống cái với số nhiều kết thúc bằng ־ים tiếng Do Thái")
end
if mw.ustring.sub(com.remove_nikud(plural_term), -3, -1) == "יים"
and mw.ustring.sub(mw.ustring.gsub(com.remove_nikud(wv), "[%[%]]", ""), -1, -1) ~= "י" then
table.insert(data.categories, "Danh từ với số nhiều kết thúc bằng ־יים tiếng Do Thái")
end
end
if args["g"] == "m" or args["g"] == "f" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
elseif args["g"] == "m-d" or args["g"] == "f-d" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
table.insert(data.categories, "Danh từ chỉ có số đôi tiếng Do Thái")
elseif args["g"] == "m-p" or args["g"] == "f-p" then
table.insert(data.genders, args["g"])
table.insert(data.genders, args["g2"])
table.insert(data.categories, "Danh từ chỉ có số nhiều tiếng Do Thái")
elseif args["g"] == "" or args["g"] == nil then
table.insert(data.categories, "Yêu cầu giống mục từ tiếng Do Thái")
elseif args["g"] == "-" then --surnames don't really have gender
table.insert(data.categories, "Danh từ riêng không có giống tiếng Do Thái")
else
table.insert(data.genders, "?")
end
end
local binyanim = {
["pa"] = "pa'al",
["pi"] = "pi'el",
["hif"] = "hif'il",
["hit"] = "hitpa'el",
["huf"] = "huf'al",
["pu"] = "pu'al",
["nif"] = "nif'al",
["hitpu'al"] = "hitpu'al", -- should this be included?
}
local weakroots = {
["פ"] = {
["א"] = true,
["ה"] = true,
["ח"] = true,
["י"] = true,
["ל"] = true,
["נ"] = true,
["ע"] = true,
},
["ע"] = {
["א"] = true,
["ה"] = true,
["ו"] = true,
["ח"] = true,
["י"] = true,
["ע"] = true,
["ר"] = true,
},
["ל"] = {
["א"] = true,
["ה"] = true,
["ח"] = true,
["נ"] = true,
["ע"] = true,
},
}
local function maybe_get_weakcat(args, pos, binyan)
if weakroots[pos][args[pos]] then
if binyan then
return "Động từ " .. pos .. "״" .. args[pos] .. " " .. binyan .. " tiếng Do Thái"
else
return "Động từ " .. pos .. "״" .. args[pos] .. " tiếng Do Thái"
end
else
return nil -- perhaps track error if args[pos] ~= ""
end
end
pos_functions["Động từ"] = function(args, data)
local binyan = binyanim[args[1]]
if binyan then
table.insert(data.inflections, { label="[[Phụ lục:Động từ tiếng Do Thái|cấu trúc" .. binyan .. "]]" })
table.insert(data.categories, "Động từ " .. binyanim[args[1]] .. " tiếng Do Thái")
elseif args[1] ~= "-" then
table.insert(data.categories, "Động từ thiếu binyan tiếng Do Thái")
end
table.insert(data.categories, maybe_get_weakcat(args, "פ", binyan))
table.insert(data.categories, maybe_get_weakcat(args, "ע", binyan))
table.insert(data.categories, maybe_get_weakcat(args, "ל", binyan))
table.insert(data.inflections, maybe_get_inflection(args, "nguyên mẫu", "inf", true))
table.insert(data.inflections, maybe_get_inflection(args, "hiện tại", "pres", true))
table.insert(data.inflections, maybe_get_inflection(args, "tương lai", "fut", true))
table.insert(data.inflections, maybe_get_inflection(args, "mệnh lệnh", "imp", true))
table.insert(data.inflections, maybe_get_inflection(args, "phân từ bị động", "passp", true))
table.insert(data.inflections, maybe_get_inflection(args, "passive counterpart", "pass", true))
table.insert(data.inflections, maybe_get_inflection(args, "active counterpart", "act", true))
end
return export
knkk89nfruhlgsc047g831tfnap85g2
Mô đun:he-common
828
281369
2567259
2290276
2026-09-29T08:32:47Z
Hiyuune
50834
2567259
Scribunto
text/plain
local export = {}
local concat = table.concat
local insert = table.insert
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local usub = mw.ustring.sub
local lang = require("Module:languages").getByCode("he")
local nikud_regex = "[" .. u(0x5B0) .. "-" .. u(0x5BC) .. u(0x5BF) .. u(0x5C1) .. u(0x5C2) .. u(0x5C7) .. "]"
-- A nil-safe, Hebrew-specific diacritic remover.
function export.remove_nikud(formwv)
return formwv and lang:stripDiacritics(formwv) or nil
end
local function fix_nikud_subber(x)
local ret = {}
-- Shin dots (U+05C1 & U+05C2).
for s in x:gmatch("\215[\129\130]") do
insert(ret, s)
end
-- Dagesh (U+05BC & U+05BF).
for d in x:gmatch("\214[\188\191]") do
insert(ret, d)
end
-- Vowels (U+05B0-U+05BB & U+05C7).
for v in x:gmatch("[\214\215][\176-\187\135]") do -- any false-positives won't be picked up by the original gsub
insert(ret, v)
end
return concat(ret)
end
function export.fix_nikud(x)
return ugsub(x, nikud_regex .. nikud_regex .. "+", fix_nikud_subber)
end
-- Moves nikud after geresh/gershayim to the preceding letter, e.g. ג׳ֻ -> גֻ׳.
function export.move_nikud_before_geresh(x)
return (ugsub(x, "([א-ת]" .. nikud_regex .. "*)([׳״])(" .. nikud_regex .. "+)", "%1%3%2"))
end
function export.end_with_makaf(str)
if str and #str > 0 and usub(str, -1) ~= "־" then
str = str .. "־"
end
return str
end
-- This should only be used by modules that auto-generate words, otherwise use gen_link
function export.process_wv_triad(form, formwv, formdwv)
if form then
return form, formwv, formdwv
elseif formwv then
return export.remove_nikud(formwv), formwv, formdwv
end
return export.remove_nikud(formdwv), formdwv, nil
end
function export.gen_link(form, formwv, formdwv)
form, formwv, formdwv = export.process_wv_triad(form, formwv, formdwv)
if not form then
error("Can't make a link out of nothing.")
elseif formdwv then
return "[[" .. form .. "|" .. (formwv or form) .. " / " .. formdwv .. "]]"
end
return "[[" .. form .. "|" .. (formwv or form) .. "]]"
end
-- Like gen_link for construct forms appends a makaf if one doesn't already exist
function export.gen_link_ending_with_makaf(form, formwv, formdwv)
form, formwv, formdwv = export.process_wv_triad(form, formwv, formdwv)
if not form then
error("Can't make a link out of nothing.")
elseif formdwv then
return "[[" .. form .. "|" .. (export.end_with_makaf(formwv) or form) .. " / " .. export.end_with_makaf(formdwv) .. "]]"
end
return "[[" .. form .. "|" .. export.end_with_makaf(formwv or form) .. "]]"
end
-- Given a link-data object to be passed to [[Module:links]].full_link(), process Hebrew
-- wv/dwv fields into the corresponding term/alt fields. The unvocalized form remains
-- the link target, while wv/dwv control the displayed form.
function export.apply_wv_to_link_data(data)
if data.alt and (data.wv or data.dwv) then
error("Specify either alt or wv/dwv, not both")
end
local term, wv, dwv = export.process_wv_triad(data.term, data.wv, data.dwv)
if not term then
error("Can't make a link out of nothing.")
end
data.term = term
if dwv then
data.alt = (wv or term) .. " / " .. dwv
elseif wv then
data.alt = wv
end
data.wv = nil
data.dwv = nil
return data
end
return export
op1ol5tr4p0vfw9lmkxr29u1mc2c7ox
Mô đun:sa-decl
828
293666
2567270
2368879
2026-09-29T09:32:28Z
Hiyuune
50834
2567270
Scribunto
text/plain
local export = {}
local m_para = require("Module:parameters")
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local lang = require("Module:languages").getByCode("sa")
local m_script_utils = require("Module:script utilities")
local sa_decl_data = require("Module:sa-decl/data")
local SLP_to_IAST = require("Module:sa-utilities/translit/SLP1-to-IAST")
local sa_utils_translit = require("Module:sa-utilities/translit")
local m_inflection_table = require("Module:inflection-table")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local sub = mw.ustring.sub
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local len = mw.ustring.len
local accent = '[/\\]'
local genders = {
m = 'giống đực', f = 'giống cái', n = 'giống trung', gneut = 'giống trung lập'
}
local cases = {
{ 'nom', 'danh cách' }, { 'acc', 'đối cách' },
{ 'ins', 'cách công cụ' }, { 'dat', 'dữ cách' },
{ 'abl', 'ly cách' }, { 'gen', 'sinh cách' },
{ 'loc', 'định vị cách' }, { 'voc', 'hô cách' }
}
local super_nums = {'¹', '²', '³', '⁴', '⁵', '⁶', '⁷', '⁸', '⁹', [0]='⁰'}
local function to_super(num)
local annotation = gsub(num, ".", super_nums)
return annotation
end
local function get_form_note_tags(form_notes, data)
local output = {}
if type(form_notes) ~= 'table' then form_notes = { form_notes } end
for _, form_note in ipairs(form_notes) do
if type(data.form_notes[form_note]) ~= "number" then
table.insert(data.form_notes_out, form_note)
data.form_notes[form_note] = #data.form_notes_out
end
table.insert(output, to_super(data.form_notes[form_note]))
end
return table.concat(output)
end
local function make_header(args, data, sc_cache)
local width = '40'
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(args.lemma)) or sc_cache.reverse_tr(gsub(args.lemma, accent, ""))
local title = 'Biến cách ' .. data.decl_type .. ' ' .. ' ' .. genders[args.g] .. ' của ' ..
m_links.full_link({ term = nil, alt = reverse_trd, tr = "-", lang = lang, sc = sc_cache.sc })
local header = { m_inflection_table.make_top{
title = title,
palette = 'blue',
tall = 'yes',
} }
table.insert(header, '!\n')
if args.n:find('s') then
table.insert(header, '! số ít\n')
end
if args.n:find('d') then
table.insert(header, '! số đôi\n')
end
if args.n:find('p') then
table.insert(header, '! số nhiều\n')
end
return table.concat(header)
end
local function make_cell(args, data, code, num, sc_cache)
local tag = code .. '_' .. num
local forms, links, trs = {}, {}, {}
if args[tag] then
forms = mw.text.split(sc_cache.tr(args[tag]), '%s*[,]%s*')
else
forms = data.forms[tag]
end
if not forms then
error("Internal error: No forms for slot '" .. tag .. "'")
end
for i, form in ipairs(forms) do
if form == "" then -- in case of form reduced to zero by 'novedic' parameter
-- do nothing
else
local form_note_tag = get_form_note_tags(forms['note' .. i] or {}, data)
-- a superscript number at the end of manually added forms should not be part of the (linked) form
if match(form, "[¹²³⁴⁵⁶⁷⁸⁹]$") then
extra_note_tag = gsub(form, "^.+(.)$", "%1")
form = gsub(form, ".$", "")
else
extra_note_tag = ""
end
if form == "-" then
table.insert(links, m_links.full_link({ term = nil, alt = '-', lang = lang, sc = sc_cache.sc }))
else
-- strip accent before reverse tr for non-Deva scripts
local reverse_trd = (sc_cache.scCode == "Deva" and sc_cache.reverse_tr(form)) or sc_cache.reverse_tr(gsub(form, accent, ""))
table.insert(links,
m_links.full_link({
term = reverse_trd,
alt = reverse_trd .. form_note_tag .. extra_note_tag,
tr = SLP_to_IAST.tr(form) .. form_note_tag .. extra_note_tag,
lang = lang,
sc = sc_cache.sc
}))
end
end
end
return table.concat {
'| ',
table.concat(links, '<br>'),
'\n'
}
end
local function format_notes(args, data)
local output = {}
if #data.form_notes_out > 0 or #data.general_notes > 0 or #args.note > 0 then
for i, form_note in ipairs(data.form_notes_out) do
table.insert(output, '* ' .. to_super(i) .. form_note)
end
for _, note in ipairs(args.note) do
table.insert(output, '* ' .. note)
end
for _, general_note in ipairs(data.general_notes) do
table.insert(output, '* ' .. general_note)
end
return table.concat(output, '\n') .. '\n'
else
return ''
end
end
local function make_table_noun(args, data, sc_cache)
local output = { make_header(args, data, sc_cache) }
for _, case in ipairs(cases) do
local code, name = case[1], case[2]
table.insert(output, '|-\n')
table.insert(output, '! ' .. name .. '\n')
if args.n:find('s') then
table.insert(output, make_cell(args, data, code, 's', sc_cache))
end
if args.n:find('d') then
table.insert(output, make_cell(args, data, code, 'd', sc_cache))
end
if args.n:find('p') then
table.insert(output, make_cell(args, data, code, 'p', sc_cache))
end
end
table.insert(output, m_inflection_table.make_bottom{
notes = format_notes(args, data)
})
if not args.nocat and #data.categories > 0 then
table.insert(output, m_utils.format_categories(data.categories, lang))
end
return table.concat(output)
end
local function get_sc_details(args)
local sc, scCode
if args.sc then
sc = require("Module:scripts").getByCode(args.sc)
scCode = args.sc
else
sc = lang:findBestScript(args.lemma)
scCode = sc:getCode()
if scCode == 'None' then
sc = lang:findBestScript(PAGENAME)
scCode = sc:getCode()
if scCode == 'None' then
return get_sc_details({sc = "Deva"})
end
end
end
local tr, reverse_tr = sa_utils_translit.retrieve_tr_modules(scCode)
return { tr = tr, reverse_tr = reverse_tr, sc = sc, scCode = scCode }
end
function export.show(frame)
local params = {
lemma = { default = PAGENAME },
decl = true,
n = { default = 'sdp', set = {'s', 'd', 'p', 'sd', 'sp', 'dp', 'sdp'} },
sc = true,
[1] = { alias_of = 'lemma' },
nom_s = true,
nom_d = true,
nom_p = true,
acc_s = true,
acc_d = true,
acc_p = true,
ins_s = true,
ins_d = true,
ins_p = true,
dat_s = true,
dat_d = true,
dat_p = true,
abl_s = true,
abl_d = true,
abl_p = true,
gen_s = true,
gen_d = true,
gen_p = true,
loc_s = true,
loc_d = true,
loc_p = true,
voc_s = true,
voc_d = true,
voc_p = true,
note = { list = true },
root = { type = 'boolean' },
vrki = { type = 'boolean' }, -- for 'vṛkī' declension
pronominal = { type = 'boolean' }, -- use pronominal declension, e.g. for 'sarva'
novedic = { default = false, type = "boolean" }, -- disable extra Vedic forms
nv = {alias_of = 'novedic'},
norigvedic = { default = false, type = "boolean" }, -- disable Rigvedic forms
r_stem_a = true,
at_nom_s = { type = 'boolean' },
ambig_final = true, -- for stems on -j, -ś or -h
diaspirate = { type = 'boolean' }, -- for diaspirate roots like 'duh'
participle = { type = 'boolean' },
contract = { type = 'boolean' },
han = { type = 'boolean' }, -- for root 'han'
voc_svar = { type = 'boolean' }, -- to indicate that the vocative should have initial svarita
adj = { type = 'boolean' }, -- internal argument for categorizing adjectives
masc_stem = true, -- to pass on masculine
fem_stem = true, -- to pass on feminine as neuter nom.du. for participles
fem2_stem = true,
retroflex_l = { type = 'boolean' },
nocat = true,
}
local data = {
forms = {},
categories = {},
decl_type = nil,
form_notes = {},
form_notes_out = {},
general_notes = {},
}
local g = frame.args[1]
if g == 'gneut' then -- no number spec for gender-neutral numerals
params.n = nil
end
local args = m_para.process(frame:getParent().args, params)
args.g = g
if args.g == 'gneut' then
args.n = 'p' -- plural number-only
end
if args.pronominal then
args.root = false -- the pronominal endings override the usual declension pattern
end
local sc_cache = get_sc_details(args)
args.lemma = sc_cache.tr(args.lemma)
args.has_accent = match(args.lemma, accent)
if args.has_accent and (match(args.lemma, "^[td][rv]y") or (match(args.lemma, "^ny") and not match(args.lemma, "^nya/$"))) then
args.voc_svar = true
end
for decl, decl_data in pairs(sa_decl_data) do
if decl_data.detect(args) then
sa_decl_data[decl](args, data)
break
end
end
if data.decl_type == nil then
error("Không rõ lớp biến cách. Vui lòng kiểm tra mục từ biến thể hình thái hoặc chỉ rõ lớp biến cách.")
end
return make_table_noun(args, data, sc_cache)
end
return export
dmxp5s62bryjr3nqco6x8xeuqo0hhtk
Bản mẫu:R:tkl:TD
10
309794
2567236
2174425
2026-09-29T06:09:20Z
Hiyuune
50834
2567236
wikitext
text/x-wiki
{{cite-book
|trans-title=Từ điển tiếng Tokelau
|publisher=Văn phòng Ngoại giao Tokelau
|location=Auckland
|year=1986
|editor=R. Simona
|entry={{#ifeq:{{{1|{{{entry|}}}}}}|+|{{PAGENAME}}|{{{1|{{{entry|}}}}}}}}
|page={{{page|}}}
|url=http://www.thebookshelf.auckland.ac.nz/docs/TokelauDictionary/tokelau<!--
--->{{#iferror:{{#expr:{{{page}}} - 0}}|002|<!--
--->{{#ifexpr:{{{page}}} < 51|003|<!--
--->{{#ifexpr:{{{page}}} < 133|004|<!--
--->{{#ifexpr:{{{page}}} < 198|005|<!--
--->{{#ifexpr:{{{page}}} < 255|006|<!--
--->{{#ifexpr:{{{page}}} < 287|007|<!--
--->{{#ifexpr:{{{page}}} < 335|008|<!--
--->{{#ifexpr:{{{page}}} < 416|009|<!--
--->{{#ifexpr:{{{page}}} < 435|010|<!--
--->{{#ifexpr:{{{page}}} < 504|011|<!--
--->001}}}}}}}}}}}}}}}}}}}}.pdf#page=<!--
--->{{#iferror:{{#expr:{{{page}}} - 0}}|1|<!--
--->{{#ifexpr:{{{page}}} < 51|{{#expr:{{{page}}} + 1}}|<!--
--->{{#ifexpr:{{{page}}} < 133|{{#expr:{{{page}}} - 50}}|<!--
--->{{#ifexpr:{{{page}}} < 198|{{#expr:{{{page}}} - 132}}|<!--
--->{{#ifexpr:{{{page}}} < 255|{{#expr:{{{page}}} - 197}}|<!--
--->{{#ifexpr:{{{page}}} < 287|{{#expr:{{{page}}} - 254}}|<!--
--->{{#ifexpr:{{{page}}} < 335|{{#expr:{{{page}}} - 286}}|<!--
--->{{#ifexpr:{{{page}}} < 416|{{#expr:{{{page}}} - 334}}|<!--
--->{{#ifexpr:{{{page}}} < 435|{{#expr:{{{page}}} - 415}}|<!--
--->{{#ifexpr:{{{page}}} < 504|{{#expr:{{{page}}} - 434}}|<!--
--->1}}}}}}}}}}}}}}}}}}}}
}}<noinclude>{{refcat}}</noinclude>
t58jwe90tyvyqeddpsw97qrurnayxt6
2567237
2567236
2026-09-29T06:09:43Z
Hiyuune
50834
2567237
wikitext
text/x-wiki
{{cite-book
|title=Tokelau Dictionary
|trans-title=Từ điển tiếng Tokelau
|publisher=Văn phòng Ngoại giao Tokelau
|location=Auckland
|year=1986
|editor=R. Simona
|entry={{#ifeq:{{{1|{{{entry|}}}}}}|+|{{PAGENAME}}|{{{1|{{{entry|}}}}}}}}
|page={{{page|}}}
|url=http://www.thebookshelf.auckland.ac.nz/docs/TokelauDictionary/tokelau<!--
--->{{#iferror:{{#expr:{{{page}}} - 0}}|002|<!--
--->{{#ifexpr:{{{page}}} < 51|003|<!--
--->{{#ifexpr:{{{page}}} < 133|004|<!--
--->{{#ifexpr:{{{page}}} < 198|005|<!--
--->{{#ifexpr:{{{page}}} < 255|006|<!--
--->{{#ifexpr:{{{page}}} < 287|007|<!--
--->{{#ifexpr:{{{page}}} < 335|008|<!--
--->{{#ifexpr:{{{page}}} < 416|009|<!--
--->{{#ifexpr:{{{page}}} < 435|010|<!--
--->{{#ifexpr:{{{page}}} < 504|011|<!--
--->001}}}}}}}}}}}}}}}}}}}}.pdf#page=<!--
--->{{#iferror:{{#expr:{{{page}}} - 0}}|1|<!--
--->{{#ifexpr:{{{page}}} < 51|{{#expr:{{{page}}} + 1}}|<!--
--->{{#ifexpr:{{{page}}} < 133|{{#expr:{{{page}}} - 50}}|<!--
--->{{#ifexpr:{{{page}}} < 198|{{#expr:{{{page}}} - 132}}|<!--
--->{{#ifexpr:{{{page}}} < 255|{{#expr:{{{page}}} - 197}}|<!--
--->{{#ifexpr:{{{page}}} < 287|{{#expr:{{{page}}} - 254}}|<!--
--->{{#ifexpr:{{{page}}} < 335|{{#expr:{{{page}}} - 286}}|<!--
--->{{#ifexpr:{{{page}}} < 416|{{#expr:{{{page}}} - 334}}|<!--
--->{{#ifexpr:{{{page}}} < 435|{{#expr:{{{page}}} - 415}}|<!--
--->{{#ifexpr:{{{page}}} < 504|{{#expr:{{{page}}} - 434}}|<!--
--->1}}}}}}}}}}}}}}}}}}}}
}}<noinclude>{{refcat}}</noinclude>
qtzatvlkif9mlcicabe4ekkzupd9mb0
vojna
0
315936
2567245
2184700
2026-09-29T06:30:04Z
Hiyuune
50834
2567245
wikitext
text/x-wiki
=={{langname|zlw-ocs}}==
==={{section|etym}}===
{{ety|zlw-ocs|:inh|sla-pro:*vojьna|text=+|tree=1}}
==={{section|pron}}===
* {{zlw-ocs-IPA}}
==={{section|n}}===
{{zlw-ocs-noun|f}}
# [[chiến tranh|Chiến tranh]].
===={{section|decl}}====
{{zlw-ocs-ndecl|f}}
===={{section|desc}}====
* {{desc|cs|vojna}}
==={{section|ref}}===
* {{R:zlw-ocs:Gebauer|+}}
{{C|zlw-ocs|Chiến tranh}}
=={{langname|sh}}==
==={{section|etym}} 1===
{{inh+|sh|sla-pro|*vojьna}}.
===={{section|pron}}====
* {{sh-IPA|vȏjna}}
* {{hyphenation|sh|voj|na}}
===={{section|n}}====
{{sh-noun|vȏjna|f}}
# [[chiến dịch|Chiến dịch]] [[quân sự]]
# {{lb|sh|literary}} [[chiến tranh|Chiến tranh]].
#: {{syn|sh|rat}}
====={{section|decl}}=====
{{sh-decl-noun
|vojna|vojne
|vojne|vojna / vojni
|vojni|vojnama
|vojnu|vojne
|vojno|vojne
|vojni|vojnama
|vojnom|vojnama
}}
===={{section|further}}====
* {{R:sh:HJP|f19vXxl9}}
==={{section|etym}} 2===
{{nonlemma}}
===={{section|adj}}====
{{sh-adj form}}
# {{inflection of|sh|vojni||nom//voc|ở|f|s|;|nom//acc//voc|ở|n|p}}
{{C|sh|Chiến tranh}}
=={{langname|sk}}==
{{wp|sk:}}
==={{section|etym}}===
{{inh+|sk|sla-pro|*vojьna}}. Tương đương với {{suffix|sk|voj|na}}.
==={{section|pron}}===
* {{sk-IPA}}
* {{audio|sk|LL-Q9058 (slk)-TomášPolonec-vojna.wav|a=Bratislava}}
==={{section|n}}===
{{sk-noun|f|adj=vojnový|dim=vojnička|aug=vojnisko}}
# [[chiến tranh|Chiến tranh]].
#: {{ant|sk|mier}}
===={{section|decl}}====
{{sk-ndecl|f}}
===={{section|drv}}====
* {{l|sk|vojnovo}}
* {{l|sk|vojenský}}
===={{section|rel}}====
* {{l|sk|voj|g=m}}
* {{l|sk|vojak|g=m}}
* {{l|sk|vojsko|g=n}}
==={{section|further}}===
* {{R:sk:SDK}}
{{C|sk|Chiến tranh}}
s5orju08bm665ut8p1vup5hp3hme2qk
wiskundig
0
330860
2567200
2214637
2026-09-28T16:12:58Z
Hiyuune
50834
/* Tiếng Hà Lan */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567200
wikitext
text/x-wiki
=={{langname|nl}}==
=={{ĐM|etymology}}===
Từ {{suffix|nl|wiskunde|ig}}.
==={{ĐM|pron}} ===
* {{IPA|nl|/ˌʋɪsˈkʏn.dəx/}}
* {{audio|nl|Nl-wiskundig.ogg}}
* {{hyphenation|nl|wis|kun|dig}}
* {{rhymes|nl|ʏndəx}}
==={{ĐM|adj}}===
{{nl-adj}}
# Thuộc về [[toán học]].
===={{ĐM|decl}}====
{{nl-decl-adj}}
===={{ĐM|derived}}====
* {{l|nl|wiskundige}}
4f4r2vb3li7pzw5dsfns7lj3ia4ly92
2567203
2567200
2026-09-28T16:23:12Z
Hiyuune
50834
/* Từ nguyên= */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567203
wikitext
text/x-wiki
=={{langname|nl}}==
==={{ĐM|etymology}}===
Từ {{suffix|nl|wiskunde|ig}}.
==={{ĐM|pron}} ===
* {{IPA|nl|/ˌʋɪsˈkʏn.dəx/}}
* {{audio|nl|Nl-wiskundig.ogg}}
* {{hyphenation|nl|wis|kun|dig}}
* {{rhymes|nl|ʏndəx}}
==={{ĐM|adj}}===
{{nl-adj}}
# Thuộc về [[toán học]].
===={{ĐM|decl}}====
{{nl-decl-adj}}
===={{ĐM|derived}}====
* {{l|nl|wiskundige}}
8txhxxg5673z273crb7jswe36wle9r3
数
0
360359
2567213
2272516
2026-09-28T16:41:49Z
Hiyuune
50834
/* Đa ngữ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567213
wikitext
text/x-wiki
{{also|數}}
{{character info}}
=={{langname|mul}}==
{{stroke order|strokes=13}}
{{ja-forms|数|数|[[數]]}}
==={{ĐM|han}}===
{{Han char|rn=66|rad=攴|as=09|sn=13|four=98440|canj=FVOK|ids=⿰娄攵}}
===={{ĐM|derived characters}}====
* {{charlist|sc=Hani|𫣫𪢒𱘊擞𰘸𥐈𬳛𲌔薮𥨧䉤𡦤𫻍}}
==={{ĐM|further}}===
{{Han ref|kx=0474.131|dkj=13319|dj=0827.260|hdz=21470.190|uh=6570}}
=={{langname|vi}}==
==={{ĐM|han}}===
{{vi-readings|rs=攴09
|hanviet=số-tdcntd;gdhn
|phienthiet=
|nom=sổ-tdcntd;gdhn, sộ-tdcntd;gdhn, sỗ-gdhn, xọ-gdhn
}}
# Biến thể của {{m|vi|數}}.
#* {{quote-book|vi|year=1820|author=vi:阮攸<tr:{{w|Nguyễn Du}}>|year_published=1902|compiler=vi:喬瑩懋<tr:Kiều Oánh Mậu>|title=vi:斷腸新聲<tr:Đoạn trường tân thanh>|url=https://nomfoundation.org/data/kieu/1902/page054.jpg|page=27b|passage=婵娟啻別英䧺<br>𫥨𢬣操櫃'''数'''籠如𨔈|tr=Thuyền quyên ví biết anh hùng,<br>Ra tay tháo cũi, '''sổ''' lồng như chơi.}}
==={{ĐM|ref}}===
{{reflist}}
{{cln|vi|Ký tự biến thể}}
=={{langname|zh}}==
==={{ĐM|dfn}}===
{{zh-see|數|sv}}
==={{ĐM|ref}}===
* {{R:twedu|A01739-001#34}}
stzg8e3a9yqtxdmqlqdmxyozcnuzup2
Mô đun:he-translit
828
365699
2567257
2290272
2026-09-29T08:17:44Z
Hiyuune
50834
2567257
Scribunto
text/plain
local export = {}
-- Contributors: Malku H₂n̥rés, Sartma, Erutuon, Metaknowledge, Theknightwho
local m_str_utils = require("Module:string utilities")
local match = m_str_utils.match
local s = m_str_utils.gsub
local U = m_str_utils.char
local bidirectional_control_characters =
U(0x061C) .. U(0x200E) .. U(0x200F) .. U(0x202A) .. "-" .. U(0x202E)
.. U(0x2066) .. "-" .. U(0x2069)
local word_end = "%f[%s%z" .. bidirectional_control_characters .. "%-]"
local word_start = "%f[^%s%z" .. bidirectional_control_characters .. "%-]"
-- Bidirectional control characters should be avoided as much as possible,
-- but they are easily picked up when copying and pasting, so the module needs
-- to account for them.
-- This list is from [[w:Bidirectional control character]].
local V = "[aAáÁăĂắẮāĀâÂấẤeEéÉĕĔēĒḗḖêÊếẾɛƐəƏiIíÍĭĬīĪîÎoOóÓŏŎōŌṓṒôÔốỐɔƆuUúÚŭŬūŪûÛ][̆̄̂]?́?"
local C = "[ʔḇḡḏhwzḥṭylsʕqrśšṯ'ḵmnfṣbdgptkjc″vḫẓġTZCDK]"
-- FIXME: handle zero-width joiner and zero-width non-joiner
local c = { -- direct translit
-- full char ie. C
["א"] = "ʔ",
["ב"] = "ḇ",
["ג"] = "ḡ",
["ד"] = "ḏ",
["ה"] = "h",
["ו"] = "w",
["ז"] = "z",
["ח"] = "ḥ",
["ט"] = "ṭ",
["י"] = "y",
["ל"] = "l",
["ס"] = "s",
["ע"] = "ʕ",
["ק"] = "q",
["ר"] = "r",
["ש"] = "ß",
["ת"] = "ṯ",
-- miscellaneous:
["׳"] = "'", -- geresh
["־"] = "-", -- hyphen
["׃"] = " .", -- dot
["ׂ"] = "ˊ", -- sin dot
["ׁ"] = "ˇ", -- shin dot
["ּ"] = "·", -- dagesh
["֫"] = "^", -- oleh
["ֽ"] = "+", -- meteg
-- niqqud ie. V
["ַ"] = "a", -- patah
["ָ"] = "ɔ", -- kamatz gadol (FIXME: why is this merged with kamatz katan in Biblical?)
["ׇ"] = "ɔ", -- kamatz katan
["ֶ"] = "ɛ", -- segol
["ֵ"] = "e", -- tzere
["ִ"] = "i", -- hiriq
["ֳ"] = "ɔ̆", -- hataf kamatz
["ֲ"] = "ă", -- hataf patah
["ֱ"] = "ɛ̆", -- hataf segol
["ְ"] = "ə", -- sheva
["ֹ"] = "o", -- holam (vav: holam male > ō)
["ֺ"] = "O", -- holam (vav: vav haluma > wo); see O > o below
["ֻ"] = "u", -- kubutz
}
local b = { -- BH
-- when different final form
{"[כך]", "ḵ"},
{"[מם]", "m"},
{"[נן]", "n"},
{"[פף]", "f"},
{"[צץ]", "ṣ"},
{"(" .. V .. ")(·?)(+?)(^?)([ˊˇ]?'?)", "%5%2%1%4%3"}, -- order: s(h)in dot, geresh, dagesh, vowel (niqqud), oleh, meteg
-- bgdkft: fricative + dagesh > stop
{"ḇ·", "b"},
{"ḡ·", "g"},
{"ḏ·", "d"},
{"ṯ·", "t"},
{"ḵ·", "k"},
{"f·", "p"},
-- s(h)in dot
{"ß(·?)ˇ", "š%1"},
{"ß(·?)ˊ", "ś%1"},
-- vowel lengthenings
{"i([+^]?)y", "ī%1"}, -- V > long / _{jw}{no V no dagesh}
{"ī([+^]?" .. V .. ")", "iy%1"},
{"ī·", "iy·"},
{"e([+^]?)y", "ē%1"},
{"ē([+^]?" .. V .. ")", "ey%1"},
{"ɛ([+^]?)y", "E%1"}, -- see E > ɛ̄ below
{"E([+^]?" .. V .. ")", "ɛy%1"},
{"(" .. C .. "·?)wo", "%1ō"},
{"O", "o"}, -- see vav haluma above
{"(" .. V .. "[+^]?)w·", "%1U"},
{"w·", "ū"},
{"U", "w·"},
{"(" .. C .. "·?)y·", "%1ī"},
-- h > circumflex / V_{no V no dagesh}
{"(" .. V .. "[+^]?)h", "%1H"},
{"H(" .. V .. ")", "h%1"},
{"H·", "h"},
{"e([+^]?)H", "ê%1"},
{"o([+^]?)H", "ô%1"},
{"ɛ([+^]?)H", "ɛ̂%1"},
{"ɔ([+^]?)H", "ɔ̂%1"},
{"a([+^]?)H", "â%1"},
{"(" .. V .. "[+^]?%s?)(.)·(%s?" .. V .. ")", "%1%2%2%3"}, -- dagesh gemination
{"[·ß]", ""}, -- deletion of unpointed s(h)ins and useless dageshim
-- schwa: Ə means "kept"
{"ə" .. word_end, ""},
{"ə([ḇḡḏḵfṯ])", "Ə%1"},
{"([+āēīōūoE])(" .. C .. ")ə", "%1%2Ə"}, -- charset includes zero-width non-joiner
{"E", "ɛ̄"}, -- see ɛ̄ > E above
{"(" .. C .. "ə?" .. C .. ")ə", "%1Ə"},
{"(" .. C .. ")Ə(" .. C .. ")([Əə])", "%1ə%2Ə"},
{word_start .. "([ūw]?a?" .. C .. ")ə", "%1Ə"},
{"ə", ""},
{"Ə", "ə"},
{"([ʕhḥ])a(" .. word_end .. ")", "^a%1%2"}, -- final /a/-guttural inversion
-- penultimate stress: segolates & -áyiC
{"(" .. C .. "[eɛo])(%+?".. C .. "ɛ" .. C .. ")" .. word_end, "%1^%2"},
{"(" .. C .. "a)(%+?".. C .. C .. "?a" .. C ..")" .. word_end, "%1^%2"},
{"ayi(" .. C .. ")" .. word_end, "a^yi%1"},
-- stress marking
{"a^", "á"},
{"e^", "é"},
{"i^", "í"},
{"o^", "ó"},
{"u^", "ú"},
{"ɛ^", "ɛ́"},
{"ɔ^", "ɔ́"},
{"ā^", "ā́"},
{"ē^", "ḗ"},
{"ī^", "ī́"},
{"ō^", "ṓ"},
{"ū^", "ū́"},
{"ɛ̄^", "ɛ̄́"},
{"ɔ̄^", "ɔ̄́"},
{"ê^", "ế"},
{"ô^", "ố"},
{"ɛ̂^", "ɛ̂́"},
{"ɔ̂^", "ɔ̂́"},
{"ɔyw(" .. word_end .. ")", "ɔw%1"}, -- irregular…
{"(" .. V .. "[+^]?)([bdgptk])(" .. V .. ")", "%1%2%2%3"}, -- dagesh bgdkft gemination
{"f", "p̄"}, -- because p̄ is 2 chars
{"%s%.", "."}, -- quotes: " ." > "." (aesthetics)
}
-- MH
local m = { -- direct change
["ḏ"] = "d",
["ḡ"] = "g",
["ś"] = "s",
["״"] = "″", -- gershayim
["q"] = "k",
["ī"] = "i",
["ū"] = "u",
["́"] = "^", -- stress marking conversion below
}
local l = {
-- indirect
{"p̄", "f"},
{"[̂̆̄]", ""},
{"ḥ'", "ḫ"},
{"ṯ'", "T"},
{"ṭ'", "ẓ"},
{"g'", "j"},
{"z'", "Z"},
{"ṣ'", "C"},
{"d'", "D"},
{"[rʕ]'", "ġ"},
{"(.)%1", "%1"},
{"[ḇw]", "v"},
{"[ḵḥ]", "K"},
{"[ṯṭ]", "t"},
{"'", ""},
{"[ʔʕ]", "'"},
-- above: loss of vowel length, loss of gemination, turning n-grams into 1 char, MH mergers.
-- schwa
-- prefixes
-- {word_start .. "([bvkKlšdm])ə", "%1e"},
-- {"(u[bvkKlšdm])ə", "%1e"},
-- initial C clusters
{word_start .. "([rnmly])ə", "%1e"},
{word_start .. "(" .. C .. ")ə([h'])", "%1e%2"},
-- internal
{"([ə+]" .. C .. ")ə", "%1e"},
{"(" .. C .. C .. ")ə", "%1e"},
{"[ə+]", ""}, -- deletion of remaining schwa and metegim
-- put here not above to avoid e/ə confusion
{"[āâă]", "a"},
{"[ēêɛ]", "e"},
{"[ōô]", "o"},
{"[ḗế]", "é"},
{"[ṓố]", "ó"},
{"(" .. word_start .. "[^áéíóú^]-[aeiouɔ])(" .. C .. "?" .. C .. "?)" .. word_end, "%1^%2"}, -- module-explicit default final stress...
-- same articulation > schwa insertion
{"([bp])([bp])", "%1e%2"},
{"([vf])([vf])", "%1e%2"},
{"([dt])([dt])", "%1e%2"},
{"([DTṣ])([DTṣ])", "%1e%2"},
{"([zs])([zs])", "%1e%2"},
{"([Zš])([Zš])", "%1e%2"},
{"([jC])([jC])", "%1e%2"},
{"([gk])([gk])", "%1e%2"},
{"(K)(K)", "%1e%2"},
{"(r)(r)", "%1e%2"},
{"''", "'e'"},
-- a/o, including kol
{"ɔ(" .. C .. C .. ")", "o%1"},
{"ɔ(" .. C .. ")" .. word_end, "o%1"},
{"(" .. word_start .. "[kK])ɔ(^l" .. word_end .. ")", "%1o%2"},
{"([bvkKlšd][ea][kK])ɔ(^l" .. word_end .. ")", "%1o%2"},
-- {"(m[ei][kK])ɔ(^l" .. word_end .. ")", "%1o%2"},
{"(" .. word_start .. "u[kK])ɔ(^l" .. word_end .. ")", "%1o%2"},
{"(ha[kK])ɔ(^l" .. word_end .. ")", "%1o%2"},
{"ɔ", "a"},
{"(" .. word_start .. C .. C .. "?" .. V .. ")^(" .. C .. "?" .. C .. "?" .. word_end .. ")", "%1%2"}, -- …reader-implicit acute accent in monosyllabic
-- stress marking
{"a^", "á"},
{"e^", "é"},
{"i^", "í"},
{"o^", "ó"},
{"u^", "ú"},
-- glottal stops: kept when {CV}'V,
{"(" .. word_start .. ")'", "%1"},
{"'(" .. C .. ")", "%1"},
{"'(" .. word_end .. ")", "%1"},
-- fake digraphs
{"([szck])h", "%1'h"},
-- one char > displaying
{"ṣ", "ts"},
{"š", "sh"},
{"T", "t'"},
{"Z", "zh"},
{"C", "ch"},
{"D", "d'"},
{"K", "kh"},
}
function export.BH(text)
text = s(s(text, '.', c), "[֣֖֣֑֣֣֧֛֖֥֧֛֥֖֑֣֖֥֔֗֗֙֔]", "") -- remove cantillation marks so that it works for quotes too
for a = 1, #b do
text = s(text, b[a][1], b[a][2])
end
return text
end
function export.BH_tr(text)
return (s(export.BH(text), "+", "")) -- metegim kept for MH
end
function export.MH_tr(text)
local acronym = false
text = s(export.BH(text), '.', m) -- .BH() to keep metegim, m is applied
if match(text, "″") and not match(text, V) then -- acronym = gershayim & no V
text = s(s(s(text, "p̄", "p"), "ḇ", "b"), "ḵ", "k")
acronym = true
end
for a = 1, #l do -- in any case, l is applied
text = s(text, l[a][1], l[a][2])
end
if acronym == true then
text = mw.ustring.upper(text)
end
return text
end
function export.tr(text, lang, sc)
if not sc then
sc = require("Module:languages").getByCode(lang, nil, true):findBestScript(text):getCode()
end
if sc ~= "Hebr" or not match(text, "[ְ-ֻ־ׇ״]") then
return nil
elseif lang == "he" then
return export.MH_tr(text)
elseif lang == "hbo" then -- though useless
return export.BH_tr(text)
end
end
function export.tr_all(frame)
return export.BH_tr(frame.args[1]) .. ", " .. export.MH_tr(frame.args[1])
end
-- Erutuon's code for code points below
--[[
local Array = require "Module:array"
local function show_code_point_names(text)
if not text then return "" end
local names = Array()
for cp in gcodepoint(text) do
-- Remove HEBREW LETTER, HEBREW POINT, etc.
local name = require "Module:Unicode data".lookup_name(cp)
:gsub(
"^HEBREW (%w+) ",
function(type)
if type == "ACCENT" then return "ACCENT " else return "" end
end)
:lower()
names:insert(name)
end
return names:concat ", "
end
local old_s = s
function s(...)
local old = ...
local new = old_s(...)
if old ~= new then
mw.log(show_code_point_names(old), show_code_point_names(new), ...)
end
return new
end
--]]
return export
0871ki1irbne5l2549epsggvhqtoknk
Mô đun:he-noun
828
365701
2567261
2290280
2026-09-29T08:46:02Z
Hiyuune
50834
2567261
Scribunto
text/plain
local m_links = require("Module:links")
local m_strutils = require("Module:string utilities")
local m_gn = require("Module:gender and number")
local com = require("Module:he-common")
local lang = require("Module:languages").getByCode("he")
local m_inflection_table = require("Module:inflection-table")
local export = {}
local function process_arg(arg)
arg = com.fix_nikud(arg)
local i = mw.ustring.find(arg, "[\\/]")
if i then
arg = {mw.text.trim(mw.ustring.sub(arg, 1, i - 1)), mw.text.trim(mw.ustring.sub(arg, i + 1))}
end
return arg
end
local function getv(x)
if type(x) == "table" then
return x[2]
else
return x
end
end
local function getnv(x)
if type(x) == "table" then
return x[1]
else
return mw.ustring.gsub(x, "[^%^$()%%.%[%]*+%-?]+", function(c1) return lang:stripDiacritics(c1) end)
end
end
local function getnvrx(x)
return mw.ustring.gsub(getnv(x), "%[%][%?%+%-]?", "")
end
local function append_parts_2(a, b)
if type(a) == "table" then
if type(b) == "table" then
return {a[1] .. b[1], a[2] .. b[2]}
else
return {a[1] .. lang:stripDiacritics(b), a[2] .. b}
end
else
if type(b) == "table" then
return {lang:stripDiacritics(a) .. b[1], a .. b[2]}
else
return a .. b
end
end
end
local function append_parts(a, ...)
for _, b in ipairs({...}) do
a = append_parts_2(a, b)
end
return a
end
local function equal(a, b)
if type(a) == "table" then
return type(b) == "table" and a[1] == b[1] and a[2] == b[2]
else
return a == b
end
end
local function gsub_form(form, regex, repl, const_repl)
if type(form) == "table" or type(regex) == "table" or (not const_repl and type(repl) == "table") then
local replv = repl
local replnv = repl
if not const_repl then
replv = getv(repl)
replnv = getnv(repl)
end
local retv = mw.ustring.gsub(getv(form), getv(regex), replv)
local retnv = mw.ustring.gsub(getnv(form), getnvrx(regex), replnv)
return {retnv, retv}
else
return mw.ustring.gsub(form, regex, repl)
end
end
local function match_form(form, regex)
if type(form) == "table" or type(regex) == "table" then
local retv = mw.ustring.match(getv(form), getv(regex))
local retnv = mw.ustring.match(getnv(form), getnvrx(regex))
if retv and retnv then
return {retnv, retv}
else
return nil
end
else
return mw.ustring.match(form, regex)
end
end
local final_to_unfinal = {
["ך"] = "כ",
["ם"] = "מ",
["ן"] = "נ",
["ף"] = "פ",
["ץ"] = "צ",
}
local function unfinalize(form)
if match_form(form, "[חע]ַ$") or match_form(form, "הּ[ַ]?$") then
return gsub_form(form, "([החע])[ּ]?[ַ]?$", "%1")
elseif match_form(form, "[םןףץ]$") or match_form(form, "ךְ$") then
return gsub_form(form, "([ךםןףץ])[ְ]?$", final_to_unfinal, true)
else
return form
end
end
local function make_link(x, is_construct)
local dolink = true
if SUPPRESS_LINKS then
dolink = nil
end
local maqaf = is_construct and "־" or ""
if type(x) == "table" then
local pg = lang:stripDiacritics(x[1])
-- FIXME: allow_self_link is the third argument to full_link, it's not a field in the first argument;
-- maintained in case we switch to having allow_self_link be a field in the first argument
return m_links.full_link({lang = lang, allow_self_link = false, term = dolink and pg, alt = (pg ~= lang:stripDiacritics(x[2]) and pg .. maqaf .. " / " or "") .. x[2] .. maqaf, tr = "-"})
else
if x == "-" then
return "—" -- m-dash
else
-- FIXME: see above for allow_self_link
return m_links.full_link({lang = lang, term = dolink and x, alt = x .. maqaf, tr = "-", allow_self_link = false})
end
end
end
local numbers = {
["s"] = "Số ít",
["d"] = "Số đôi",
["p"] = "Số nhiều",
["ms"] = "Giống đực số ít",
["md"] = "Giống đực số đôi",
["mp"] = "Giống đực số nhiều",
["fs"] = "Giống cái số ít",
["fd"] = "Giống cái số đôi",
["fp"] = "Giống cái số nhiều",
}
local singulars = {
["s"] = true,
["ms"] = true,
["fs"] = true,
}
local function split_defv(form)
local ret = mw.ustring.gsub(form, "^הַ([וזטילמנסצקש][ׁׂ]?)ּ", "%1")
if ret ~= form then return ret end
ret = mw.ustring.gsub(form, "^הַ([בגדיכפת])", "%1")
if ret ~= form then return ret end
ret = mw.ustring.gsub(form, "^הָ(ר)", "%1")
if ret ~= form then return ret end
ret = mw.ustring.gsub(form, "^ה[ֶַָ]([אהחע])", "%1")
if ret ~= form then return ret end
return nil
end
local function split_def(form)
if type(form) == "table" then
local wv = split_defv(form[2])
local nv = mw.ustring.gsub(form[1], "^ה", "")
if wv and (nv ~= form[1]) then
return {nv, wv}
else
return nil
end
else
return split_defv(form)
end
end
local function attach_def(form)
if match_form(form, "^[בגדהחכפת]") then
return append_parts("הַ", form)
elseif match_form(form, "^[אער]") then
return append_parts("הָ", form)
elseif match_form(form, "^ו") then
return gsub_form(form, "^ו", {"הוו", "הַוּ"})
elseif match_form(form, "^[זטילמנסצק]") or match_form(form, "^ש[ׁׂ]") then
return gsub_form(form, "^([זטילמנסצקש][ׁׂ]?)", "הַ%1ּ")
else
error("Unrecognized initial consonant in indefinite form.")
end
end
local function remove_maqaf(x)
if type(x) == "table" then
return {mw.ustring.gsub(x[1], "־$", ""), mw.ustring.gsub(x[2], "־$", "")}
else
return mw.ustring.gsub(x, "־$", "")
end
end
local function process_args(args)
for key, val in pairs(args) do
val = mw.text.trim(val)
if val == "" then val = nil end
args[key] = val
end
local forms = {}
if not args[1] then return forms end
local i = 1
local num = "s"
while num do
local section = {["number"] = num}
local touched = false
local likely_def = nil
local initial_hes = nil
while args[i] and not numbers[args[i]] do
local form = process_arg(args[i])
local wv = getv(form)
if likely_def then
local cur_initial_hes = mw.ustring.len(mw.ustring.match(getnv(form), "^ה*"))
if cur_initial_hes < initial_hes then
section["d"] = likely_def
elseif cur_initial_hes > initial_hes and split_defv(wv) then
section["i"] = likely_def
else
error("Definite form must either be first or second.")
end
likely_def = nil
end
if (not section["d"]) and split_defv(wv) then
if touched then
section["d"] = form
else
likely_def = form
initial_hes = mw.ustring.len(mw.ustring.match(getnv(form), "^ה*"))
end
elseif not touched then
section["i"] = form
elseif (not section["2ms"]) and mw.ustring.match(wv, "ךָ$") then
section["2ms"] = form
elseif (not section["2mp"]) and mw.ustring.match(wv, "כֶם$") then
section["2mp"] = form
elseif (not section["3ms"]) and (mw.ustring.match(wv, "וֹ$") or mw.ustring.match(wv, "ו$") or mw.ustring.match(wv, "הוּ$")) then
section["3ms"] = form
elseif (not section["c"]) and (mw.ustring.match(wv, "־$") or mw.ustring.match(getnv(form), "־$")) then
section["c"] = remove_maqaf(form)
else
error("Unrecognized or duplicate form: " .. wv)
end
touched = true
i = i + 1
end
if likely_def then
if section["d"] then error("Unrecognized or duplicate form: " .. getv(section["d"])) end
section["d"] = likely_def
end
if touched then
table.insert(forms, section)
end
num = args[i]
i = i + 1
end
return forms
end
local endings_c = {
["3p_heavy"] = false,
["1s"] = "ִי",
["2ms"] = "ְךָ",
["2fs"] = "ֵךְ",
["3ms"] = "וֹ",
["3fs"] = "ָהּ",
["1p"] = "ֵנוּ",
["2mp"] = "ְכֶם",
["2fp"] = "ְכֶן",
["3mp"] = "ָם",
["3fp"] = "ָן",
}
-- most have alternative forms that are not yet supported
local endings_e = {
["3p_heavy"] = true,
["1s"] = "ִי",
["2ms"] = "ֶךָ",
["2fs"] = "ֵךְ",
["3ms"] = "ֵהוּ",
["3fs"] = "ֶהָ",
["1p"] = "ֵנוּ",
["2mp"] = "ֵכֶם",
["2fp"] = "ֵכֶן",
["3mp"] = "ֵהֶם",
["3fp"] = "ֵהֶן",
}
local endings_i = {
["3p_heavy"] = true,
["1s"] = "",
["2ms"] = "ךָ",
["2fs"] = "ךְ",
["3ms"] = "ו", -- and "הוּ", for when I allow multiple forms
["3fs"] = "הָ",
["1p"] = "נוּ",
["2mp"] = "כֶם",
["2fp"] = "כֶן",
["3mp"] = "הֶם",
["3fp"] = "הֶן",
}
-- endings for ים ending
local endings_pm = {
["3p_heavy"] = true,
["1s"] = {"יי", "ַי"},
["2ms"] = "ֶיךָ",
["2fs"] = {"ייך", "ַיִךְ"},
["3ms"] = "ָיו",
["3fs"] = "ֶיהָ",
["1p"] = "ֵינוּ",
["2mp"] = "ֵיכֶם",
["2fp"] = "ֵיכֶן",
["3mp"] = "ֵיהֶם",
["3fp"] = "ֵיהֶן",
}
-- endings for ות ending
local endings_pf = {
["3p_heavy"] = true,
["1s"] = {"יי", "ַי"},
["2ms"] = "ֶיךָ",
["2fs"] = {"ייך", "ַיִךְ"},
["3ms"] = "ָיו",
["3fs"] = "ֶיהָ",
["1p"] = "ֵינוּ",
["2mp"] = "ֵיכֶם",
["2fp"] = "ֵיכֶן",
["3mp"] = "ָם",--add extra יהם ending
["3fp"] = "ָן",--add extra יהן ending
}
local light_endings = {
"1s",
"2ms",
"2fs",
"3ms",
"3fs",
"1p",
}
local heavy_endings = {
"2mp",
"2fp",
}
local maybe_endings = {
"3mp",
"3fp",
}
local function attach_ending(stem, ending)
if match_form(ending, "^ְ") and match_form(stem, "[אהחע]$") then
ending = gsub_form(ending, "^ְ", "ֲ")
elseif match_form(ending, "^ָ") and match_form(stem, "ַח$") then
stem = gsub_form(stem, "ַח$", "ֶח")
elseif type(ending) == "table" and mw.ustring.match(getnv(stem), "י$") and mw.ustring.len(mw.ustring.match(getnv(ending), "^י*")) > mw.ustring.len(mw.ustring.match(getnv(getv(ending)), "^י*")) then
ending = gsub_form(ending, {"^י", "^"}, "")
end
return append_parts(stem, ending)
end
local function infer_forms(forms)
for _, section in pairs(forms) do
local light_stem = nil
local heavy_stem = nil
local endings = nil
if section["d"] then
section["i"] = section["i"] or split_def(section["d"])
elseif section["i"] then
section["d"] = section["d"] or attach_def(section["i"])
else
error("Must have either definite or indefinite form.")
end
if singulars[section["number"]] then
local is_fem = match_form(section["i"], "ָ['׳]?ה$")
local is_e = match_form(section["i"], "ֶה$")
if not section["c"] then
if is_fem then
section["c"] = gsub_form(section["i"], "ָ(['׳]?)ה$", "ַ%1ת")
elseif is_e then
section["c"] = gsub_form(section["i"], "ֶה$", "ֵה")
elseif match_form(section["i"], "ָ[ב-ת][ׁׂ]?$") then
section["c"] = gsub_form(section["i"], "ָ([ב-ת][ׁׂ]?)$", "ַ%1")
else
section["c"] = section["i"]
end
end
if section["3ms"] then
if match_form(section["3ms"], "וֹ$") then
light_stem = gsub_form(section["3ms"], "וֹ$", "")
endings = endings_c
elseif match_form(section["3ms"], "ֵהוּ$") then
light_stem = gsub_form(section["3ms"], "ֵהוּ$", "")
endings = endings_c
elseif match_form(section["3ms"], "ִיהוּ$") then
light_stem = gsub_form(section["3ms"], "הוּ$", "")
endings = endings_i
elseif match_form(section["3ms"], "ִיו$") then
light_stem = gsub_form(section["3ms"], "ו$", "")
endings = endings_i
else
error("Unrecognized 3ms suffix pattern.")
end
elseif match_form(section["c"], "ֵה$") then
if is_e then
light_stem = gsub_form(section["i"], "ֶה$", "")
else
light_stem = gsub_form(section["c"], "ֵה$", "")
end
endings = endings_e
elseif match_form(unfinalize(section["c"]), "ַ[א-ת][ׁׂ]?$") then
light_stem = gsub_form(unfinalize(section["c"]), "ַ([בגדהוזחטכלמנסעפצקרשת][ׁׂ]?)$", "ָ%1")
endings = endings_c
else
light_stem = unfinalize(section["c"])
if match_form(section["c"], "ִי$") then
endings = endings_i
else
endings = endings_c
end
end
if section["2mp"] then
if endings == endings_c then
if not match_form(section["2mp"], "[^אהחע]ְכֶם$") and not match_form(section["2mp"], "[אהחע]ֲכֶם$") then
error("Unrecognized 2mp suffix pattern.")
end
heavy_stem = gsub_form(section["2mp"], "[ְֲ]כֶם$", "")
else
if not match_form(section["2mp"], "כֶם$") then
error("Unrecognized 2mp suffix pattern.")
end
heavy_stem = gsub_form(section["2mp"], "כֶם$", "")
end
elseif section["2ms"] and endings == endings_c and match_form(section["2ms"], "ְךָ$") then
heavy_stem = gsub_form(section["2ms"], "ְךָ$", "")
elseif match_form(light_stem, "ּ$") or match_form(light_stem, "ְ[א-ת][ּׁׂ]?$") then
heavy_stem = light_stem
elseif match_form(section["c"], "ֵה$") then
if endings == endings_e then
heavy_stem = gsub_form(section["c"], "ה$", "")
else
heavy_stem = light_stem
end
else
heavy_stem = unfinalize(section["c"])
end
else
endings = endings_pm
if not section["c"] then
if match_form(section["i"], "וֹת$") then
endings = endings_pf
section["c"] = section["i"]
elseif match_form(section["i"], "ִים$") then
section["c"] = gsub_form(section["i"], "ִים$", "ֵי")
elseif match_form(section["i"], {"יי?ם$", "ַיִם$"}) then
section["c"] = gsub_form(section["i"], {"יי?ם$", "ַיִם$"}, "ֵי")
else
error("Unrecognized plural pattern.")
end
end
if match_form(section["c"], "ֵי$") then
heavy_stem = gsub_form(section["c"], "ֵי$", "")
if match_form(section["i"], "ִים$") then
light_stem = gsub_form(section["i"], "ִים$", "")
elseif match_form(section["i"], {"יי?ם$", "ַיִם$"}) then
light_stem = gsub_form(section["i"], {"יי?ם$", "ַיִם$"}, "")
else
light_stem = heavy_stem
end
elseif match_form(section["c"], "וֹת$") then
endings = endings_pf
heavy_stem = section["c"]
light_stem = heavy_stem
else
error("Unrecognized plural construct pattern.")
end
end
local maybe_stem = endings["3p_heavy"] and heavy_stem or light_stem
for _, p in pairs(light_endings) do
section[p] = section[p] or attach_ending(light_stem, endings[p])
end
for _, p in pairs(heavy_endings) do
section[p] = section[p] or attach_ending(heavy_stem, endings[p])
end
for _, p in pairs(maybe_endings) do
section[p] = section[p] or attach_ending(maybe_stem, endings[p])
end
end
end
local example_s = {
["number"] = "s",
["i"] = "בַּיִת",
["d"] = "הַבַּיִת",
["c"] = "בֵּית",
["1s"] = "בֵּיתִי",
["2ms"] = "בֵּיתְךָ",
["2fs"] = "בֵּיתֵךְ",
["3ms"] = "בֵּיתוֹ",
["3fs"] = "בֵּיתָהּ",
["1p"] = "בֵּיתֵנוּ",
["2mp"] = "בֵּיתְכֶם",
["2fp"] = "בֵּיתְכֶן",
["3mp"] = "בֵּיתָם",
["3fp"] = "בֵּיתָן",
}
local example_p = {
["number"] = "p",
["i"] = "בָּתִּים",
["d"] = "הַבָּתִּים",
["c"] = "בָּתֵּי",
["1s"] = {"בתיי", "בָּתַּי"},
["2ms"] = "בָּתֶּיךָ",
["2fs"] = {"בתייך", "בָּתַּיִךְ"},
["3ms"] = "בָּתָּיו",
["3fs"] = "בָּתֶּיהָ",
["1p"] = "בָּתֵּינוּ",
["2mp"] = "בָּתֵּיכֶם",
["2fp"] = "בָּתֵּיכֶן",
["3mp"] = "בָּתֵּיהֶם",
["3fp"] = "בָּתֵּיהֶן",
}
local example = {example_s, example_p}
local table_top = [===[
! class="outer" |
! class="outer" colspan="2" | Dạng nguyên
! class="outer" colspan="5" | Thêm đại từ sở hữu
|-
! rowspan="2" | ''Số:''
! rowspan="2" | ''Trạng thái:'' !! rowspan="2" | Dạng
! rowspan="2" | ''Ngôi:'' !! colspan="2" | Số ít !! colspan="2" | Số nhiều
|-
! class="secondary" | {m}
! class="secondary" | {f}
! class="secondary" | {m}
! class="secondary" | {f}
]===]
local table_section = [===[|-
! rowspan="3" | {number} !! Bất định
| {i}
! ngôi 1
| colspan="2" | {1s} || colspan="2" | {1p}
|-
! Xác định
| {d}
! ngôi 2
| {2ms} || {2fs} || {2mp} || {2fp}
|-
! Cấu trúc
| {c}
! ngôi 3
| {3ms} || {3fs} || {3mp} || {3fp}
]===]
local forms_names = {
"i",
"d",
"c",
"1s",
"2ms",
"2fs",
"3ms",
"3fs",
"1p",
"2mp",
"2fp",
"3mp",
"3fp",
}
local function make_table(forms)
local title = forms and forms[1] and forms[1]["i"] and ("Biến cách của " .. make_link(forms[1]["i"])) or "Biến cách"
local output = {}
table.insert(output, m_inflection_table.make_top{
title = title,
palette = 'blue',
tall = 'yes',
})
table.insert(output, m_strutils.format(table_top, {
m = m_gn.format_list({"m"}),
f = m_gn.format_list({"f"}),
}))
for _, section in ipairs(forms) do
section["number"] = numbers[section["number"]]
for _, form_name in pairs(forms_names) do
section[form_name] = make_link(section[form_name] or "-", section[form_name] and form_name == "c")
end
table.insert(output, m_strutils.format(table_section, section))
end
table.insert(output, m_inflection_table.make_bottom{})
return table.concat(output)
end
function export.show(frame)
local args = frame:getParent().args
PAGENAME = mw.loadData("Module:headword/data").pagename
NAMESPACE = mw.title.getCurrentTitle().nsText
if args["nolink"] and args["nolink"] ~= "" then
SUPPRESS_LINKS = true
end
local forms = nil
if frame.args[1] == "example" then
forms = example
else
forms = process_args(args)
infer_forms(forms)
end
return make_table(forms)
end
return export
16s0u998t1gv25w6rieoxcrc3z3yq3s
Bản mẫu:om-conj
10
367517
2567234
2294772
2026-09-29T04:01:27Z
Hiyuune
50834
2567234
wikitext
text/x-wiki
{{inflection-table-top|title=Bảng chia động từ của {{m|om||{{pagename}}}}|palette=blue|tall=yes}}
! class="outer" | dạng nguyên
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|ch}}uu}}
| class="blank-end-row" colspan="999" |
|-
| class="separator" colspan="999" |
|-
! class="outer" | đại từ
! class="outer" | hiện tại
! class="outer" | tương lai
! class="outer" | quá khứ
! class="outer" | mệnh lệnh
! class="outer" | quá khứ đơn
|-
|- |
! '''tôi'''
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|ch}}aan jira}} || {{l-self|om|nan{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|dh}}a}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|dh}}eera}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |haa {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|dh}}u}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|dh}}}}e}}
|- |
|-
!'''chúng tôi'''
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|ch}}aarra}} || {{l-self|om|ni {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{a|}}}|n}}{{#if: {{{r|}}}|r}}{{#if: {{{d|}}}|n}}{{#if:{{{ch|}}}|nn}}a}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1|{{{1<includeonly>|{{pagename}}</includeonly>}}}}}}{{#if: {{{l|}}}|l}}{{#if: {{{nn|}}}|n}}{{#if: {{{r|}}}|r}}{{#if: {{{a|}}}|n}}{{#if: {{{ch|}}}|n}}{{#if: {{{n|}}}|n}}eerra}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |haa {{{2|{{{1<includeonly>|{{pagename}}</includeonly>}}}}}}{{#if: {{{a|}}}|n}}{{#if: {{{r|}}}|r}}{{#if: {{{nn|}}}|n}}{{#if: {{{n|}}}|n}}u}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{a|}}}|n}}}}{{#if: {{{ch|}}}|nn}}e}}
|- |
! '''bạn (số ít)'''
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if:{{{d|}}}|d}}{{#if: {{{ch|}}}|ch}}aarta}} || {{l-self|om|ni {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if:{{{a|}}}|t}}{{#if: {{{ch|}}}|tt}}a}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{3|{{{2|{{{1<includeonly>|{{pagename}}</includeonly>}}}}}}}}}{{#if: {{{a|}}}|t}}{{#if: {{{x|}}}|x}}{{#if: {{{ch|}}}|tt}}eetta}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{a|}}}|i}}{{#if: {{{ch|}}}|dhu}}}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{a|}}}|t}}{{#if: {{{ch|}}}|tt}}{{#if: {{{i|}}}|}}}}e}}
|- |
! '''bạn (số nhiều)'''
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|ch}}aartu}} || {{l-self|om|ni {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{a|}}}|t}}{{#if: {{{d|}}}|d}}{{#if: {{{ch|}}}|tt}}u}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{3|{{{2|{{{1<includeonly>|{{pagename}}</includeonly>}}}}}}}}}{{#if: {{{a|}}}|t}}{{#if: {{{ch|}}}|tt}}{{#if: {{{t|}}}|t}}{{#if: {{{x|}}}|x}}aniittu}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|dh}}aa}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{a|}}}|t}}{{#if: {{{ch|}}}|tt}}an}}}}
|- |
!'''cô ấy'''
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|ch}}aarti}} || {{l-self|om|ni {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{a|}}}|t}}{{#if: {{{d|}}}|d}}{{#if: {{{ch|}}}|tt}}i}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{3|{{{2|{{{1<includeonly>|{{pagename}}</includeonly>}}}}}}}}}{{#if: {{{a|}}}|t}}{{#if: {{{t|}}}|t}}{{#if: {{{d|}}}|d}}eetti}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |haa {{{3|{{{2|{{{1<includeonly>|{{pagename}}</includeonly>}}}}}}}}}{{#if: {{{a|}}}|t}}{{#if: {{{ch|}}}|tt}}{{#if: {{{t|}}}|t}}u}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{r|}}}|}}{{#if: {{{ch|}}}|t}}te}}}}
|- |
|-
! '''anh ấy/nó'''
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|ch}}aara}} || {{l-self|om|ni {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|t}}a}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|t}}eera}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |haa {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|t}}u}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{r|}}}|}}{{#if: {{{ch|}}}|t}}e}}}}
|- |
! '''họ'''
| {{l-self|om|{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|ch}}aaru}} || {{l-self|om|ni {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|t}}u}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|t}}aniiru}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |haa {{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{ch|}}}|t}}an}}}} || {{l-self|om|{{#if: {{{PL|}}}| - |{{{1<includeonly>|{{pagename}}</includeonly>}}}{{#if: {{{r|}}}|}}{{#if: {{{ch|}}}|t}}an}}}}
{{inflection-table-bottom}}<noinclude>
{{documentation}}</noinclude>
afe4zkre3t7xia8jvdj3058eue6h7id
Bản mẫu:sa-decl-adj-mfn
10
376681
2567272
2448712
2026-09-29T09:34:53Z
Hiyuune
50834
2567272
wikitext
text/x-wiki
{{#invoke:checkparams|warn}}<!-- Validate template parameters
--><includeonly><!--
-->{{inflection-table-block|<!--
-->{{sa-decl-noun-m|adj=1<!--
-->|nocat={{{nocat|}}}<!--
-->|sc={{{sc|}}}<!--
-->|{{{1|}}}<!--
-->|participle={{{participle|}}}<!--
-->|pronominal={{{pronominal|}}}<!--
-->|ambig_final={{{ambig_final|}}}<!--
-->|r_stem_a={{{r_stem_a|ā}}}<!--
-->|at_nom_s={{{at_nom_s|}}}<!--
-->|diaspirate={{{diaspirate|}}}<!--
-->|novedic={{{novedic|{{{nv|}}}}}}<!--
-->|note={{{m_note|}}}<!--
-->|n={{{n|}}}<!--
-->|root={{{root|}}}<!--
-->|han={{{han|}}}<!--
-->|vrki={{{vrki|}}}<!--
-->|contract={{{contract|}}}<!--
-->|voc_svar={{{voc_svar|}}}<!--
-->|retroflex_l={{{retroflex_l|}}}<!--
-->|nom_s={{{mfn_nom_s|{{{mf_nom_s|{{{mn_nom_s|{{{m_nom_s|}}}}}}}}}}}}<!--
-->|voc_s={{{mfn_voc_s|{{{mf_voc_s|{{{mn_voc_s|{{{m_voc_s|}}}}}}}}}}}}<!--
-->|acc_s={{{mfn_acc_s|{{{mf_acc_s|{{{mn_acc_s|{{{m_acc_s|}}}}}}}}}}}}<!--
-->|ins_s={{{mfn_ins_s|{{{mf_ins_s|{{{mn_ins_s|{{{m_ins_s|}}}}}}}}}}}}<!--
-->|dat_s={{{mfn_dat_s|{{{mf_dat_s|{{{mn_dat_s|{{{m_dat_s|}}}}}}}}}}}}<!--
-->|abl_s={{{mfn_abl_s|{{{mf_abl_s|{{{mn_abl_s|{{{m_abl_s|}}}}}}}}}}}}<!--
-->|gen_s={{{mfn_gen_s|{{{mf_gen_s|{{{mn_gen_s|{{{m_gen_s|}}}}}}}}}}}}<!--
-->|loc_s={{{mfn_loc_s|{{{mf_loc_s|{{{mn_loc_s|{{{m_loc_s|}}}}}}}}}}}}<!--
-->|nom_d={{{mfn_nom_d|{{{mf_nom_d|{{{mn_nom_d|{{{m_nom_d|}}}}}}}}}}}}<!--
-->|voc_d={{{mfn_voc_d|{{{mf_voc_d|{{{mn_voc_d|{{{m_voc_d|}}}}}}}}}}}}<!--
-->|acc_d={{{mfn_acc_d|{{{mf_acc_d|{{{mn_acc_d|{{{m_acc_d|}}}}}}}}}}}}<!--
-->|ins_d={{{mfn_ins_d|{{{mf_ins_d|{{{mn_ins_d|{{{m_ins_d|}}}}}}}}}}}}<!--
-->|dat_d={{{mfn_dat_d|{{{mf_dat_d|{{{mn_dat_d|{{{m_dat_d|}}}}}}}}}}}}<!--
-->|abl_d={{{mfn_abl_d|{{{mf_abl_d|{{{mn_abl_d|{{{m_abl_d|}}}}}}}}}}}}<!--
-->|gen_d={{{mfn_gen_d|{{{mf_gen_d|{{{mn_gen_d|{{{m_gen_d|}}}}}}}}}}}}<!--
-->|loc_d={{{mfn_loc_d|{{{mf_loc_d|{{{mn_loc_d|{{{m_loc_d|}}}}}}}}}}}}<!--
-->|nom_p={{{mfn_nom_p|{{{mf_nom_p|{{{mn_nom_p|{{{m_nom_p|}}}}}}}}}}}}<!--
-->|voc_p={{{mfn_voc_p|{{{mf_voc_p|{{{mn_voc_p|{{{m_voc_p|}}}}}}}}}}}}<!--
-->|acc_p={{{mfn_acc_p|{{{mf_acc_p|{{{mn_acc_p|{{{m_acc_p|}}}}}}}}}}}}<!--
-->|ins_p={{{mfn_ins_p|{{{mf_ins_p|{{{mn_ins_p|{{{m_ins_p|}}}}}}}}}}}}<!--
-->|dat_p={{{mfn_dat_p|{{{mf_dat_p|{{{mn_dat_p|{{{m_dat_p|}}}}}}}}}}}}<!--
-->|abl_p={{{mfn_abl_p|{{{mf_abl_p|{{{mn_abl_p|{{{m_abl_p|}}}}}}}}}}}}<!--
-->|gen_p={{{mfn_gen_p|{{{mf_gen_p|{{{mn_gen_p|{{{m_gen_p|}}}}}}}}}}}}<!--
-->|loc_p={{{mfn_loc_p|{{{mf_loc_p|{{{mn_loc_p|{{{m_loc_p|}}}}}}}}}}}}<!--
-->}}<!--
-->{{sa-decl-noun-f|nocat=1|adj=1<!--
-->|sc={{{sc|}}}<!--
-->|{{{2|}}}<!--
-->|pronominal={{{pronominal|}}}<!--
-->|ambig_final={{{ambig_final|}}}<!--
-->|r_stem_a={{{r_stem_a|ā}}}<!--
-->|diaspirate={{{diaspirate|}}}<!--
-->|novedic={{{novedic|{{{nv|}}}}}}<!--
-->|note={{{f_note|}}}<!--
-->|n={{{n|}}}<!--
-->|root={{{root|}}}<!--
-->|han={{{han|}}}<!--
-->|vrki={{{vrki|}}}<!--
-->|contract={{{contract|}}}<!--
-->|voc_svar={{{voc_svar|}}}<!--
-->|masc_stem={{{1|}}}<!--
-->|nom_s={{{mfn_nom_s|{{{mf_nom_s|{{{fn_nom_s|{{{f_nom_s|}}}}}}}}}}}}<!--
-->|voc_s={{{mfn_voc_s|{{{mf_voc_s|{{{fn_voc_s|{{{f_voc_s|}}}}}}}}}}}}<!--
-->|acc_s={{{mfn_acc_s|{{{mf_acc_s|{{{fn_acc_s|{{{f_acc_s|}}}}}}}}}}}}<!--
-->|ins_s={{{mfn_ins_s|{{{mf_ins_s|{{{fn_ins_s|{{{f_ins_s|}}}}}}}}}}}}<!--
-->|dat_s={{{mfn_dat_s|{{{mf_dat_s|{{{fn_dat_s|{{{f_dat_s|}}}}}}}}}}}}<!--
-->|abl_s={{{mfn_abl_s|{{{mf_abl_s|{{{fn_abl_s|{{{f_abl_s|}}}}}}}}}}}}<!--
-->|gen_s={{{mfn_gen_s|{{{mf_gen_s|{{{fn_gen_s|{{{f_gen_s|}}}}}}}}}}}}<!--
-->|loc_s={{{mfn_loc_s|{{{mf_loc_s|{{{fn_loc_s|{{{f_loc_s|}}}}}}}}}}}}<!--
-->|nom_d={{{mfn_nom_d|{{{mf_nom_d|{{{fn_nom_d|{{{f_nom_d|}}}}}}}}}}}}<!--
-->|voc_d={{{mfn_voc_d|{{{mf_voc_d|{{{fn_voc_d|{{{f_voc_d|}}}}}}}}}}}}<!--
-->|acc_d={{{mfn_acc_d|{{{mf_acc_d|{{{fn_acc_d|{{{f_acc_d|}}}}}}}}}}}}<!--
-->|ins_d={{{mfn_ins_d|{{{mf_ins_d|{{{fn_ins_d|{{{f_ins_d|}}}}}}}}}}}}<!--
-->|dat_d={{{mfn_dat_d|{{{mf_dat_d|{{{fn_dat_d|{{{f_dat_d|}}}}}}}}}}}}<!--
-->|abl_d={{{mfn_abl_d|{{{mf_abl_d|{{{fn_abl_d|{{{f_abl_d|}}}}}}}}}}}}<!--
-->|gen_d={{{mfn_gen_d|{{{mf_gen_d|{{{fn_gen_d|{{{f_gen_d|}}}}}}}}}}}}<!--
-->|loc_d={{{mfn_loc_d|{{{mf_loc_d|{{{fn_loc_d|{{{f_loc_d|}}}}}}}}}}}}<!--
-->|nom_p={{{mfn_nom_p|{{{mf_nom_p|{{{fn_nom_p|{{{f_nom_p|}}}}}}}}}}}}<!--
-->|voc_p={{{mfn_voc_p|{{{mf_voc_p|{{{fn_voc_p|{{{f_voc_p|}}}}}}}}}}}}<!--
-->|acc_p={{{mfn_acc_p|{{{mf_acc_p|{{{fn_acc_p|{{{f_acc_p|}}}}}}}}}}}}<!--
-->|ins_p={{{mfn_ins_p|{{{mf_ins_p|{{{fn_ins_p|{{{f_ins_p|}}}}}}}}}}}}<!--
-->|dat_p={{{mfn_dat_p|{{{mf_dat_p|{{{fn_dat_p|{{{f_dat_p|}}}}}}}}}}}}<!--
-->|abl_p={{{mfn_abl_p|{{{mf_abl_p|{{{fn_abl_p|{{{f_abl_p|}}}}}}}}}}}}<!--
-->|gen_p={{{mfn_gen_p|{{{mf_gen_p|{{{fn_gen_p|{{{f_gen_p|}}}}}}}}}}}}<!--
-->|loc_p={{{mfn_loc_p|{{{mf_loc_p|{{{fn_loc_p|{{{f_loc_p|}}}}}}}}}}}}<!--
-->}}<!--
-->{{#if:{{{f2|}}}<!--
-->|{{sa-decl-noun-f|nocat=1|adj=1<!--
-->|sc={{{sc|}}}<!--
-->|{{{f2}}}<!--
-->|novedic={{{novedic|{{{nv|{{{f2_novedic|}}}}}}}}}<!--
-->|note={{{f2_note|}}}<!--
-->|n={{{n|}}}<!--
-->|root={{{root|}}}<!--
-->|vrki={{{vrki|}}}<!--
-->|voc_svar={{{voc_svar|}}}<!--
-->|masc_stem={{{1|}}}<!--
-->|nom_s={{{f2_nom_s|}}}<!--
-->|voc_s={{{f2_voc_s|}}}<!--
-->|acc_s={{{f2_acc_s|}}}<!--
-->|ins_s={{{f2_ins_s|}}}<!--
-->|dat_s={{{f2_dat_s|}}}<!--
-->|abl_s={{{f2_abl_s|}}}<!--
-->|gen_s={{{f2_gen_s|}}}<!--
-->|loc_s={{{f2_loc_s|}}}<!--
-->|nom_d={{{f2_nom_d|}}}<!--
-->|voc_d={{{f2_voc_d|}}}<!--
-->|acc_d={{{f2_acc_d|}}}<!--
-->|ins_d={{{f2_ins_d|}}}<!--
-->|dat_d={{{f2_dat_d|}}}<!--
-->|abl_d={{{f2_abl_d|}}}<!--
-->|gen_d={{{f2_gen_d|}}}<!--
-->|loc_d={{{f2_loc_d|}}}<!--
-->|nom_p={{{f2_nom_p|}}}<!--
-->|voc_p={{{f2_voc_p|}}}<!--
-->|acc_p={{{f2_acc_p|}}}<!--
-->|ins_p={{{f2_ins_p|}}}<!--
-->|dat_p={{{f2_dat_p|}}}<!--
-->|abl_p={{{f2_abl_p|}}}<!--
-->|gen_p={{{f2_gen_p|}}}<!--
-->|loc_p={{{f2_loc_p|}}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{f3|}}}<!--
-->|{{sa-decl-noun-f|nocat=1|adj=1<!--
-->|sc={{{sc|}}}<!--
-->|{{{f3}}}<!--
-->|novedic={{{novedic|{{{nv|{{{f3_novedic|}}}}}}}}}<!--
-->|note={{{f3_note|}}}<!--
-->|n={{{n|}}}<!--
-->|root={{{root|}}}<!--
-->|vrki={{{vrki|}}}<!--
-->|voc_svar={{{voc_svar|}}}<!--
-->|masc_stem={{{1|}}}<!--
-->|nom_s={{{f3_nom_s|}}}<!--
-->|voc_s={{{f3_voc_s|}}}<!--
-->|acc_s={{{f3_acc_s|}}}<!--
-->|ins_s={{{f3_ins_s|}}}<!--
-->|dat_s={{{f3_dat_s|}}}<!--
-->|abl_s={{{f3_abl_s|}}}<!--
-->|gen_s={{{f3_gen_s|}}}<!--
-->|loc_s={{{f3_loc_s|}}}<!--
-->|nom_d={{{f3_nom_d|}}}<!--
-->|voc_d={{{f3_voc_d|}}}<!--
-->|acc_d={{{f3_acc_d|}}}<!--
-->|ins_d={{{f3_ins_d|}}}<!--
-->|dat_d={{{f3_dat_d|}}}<!--
-->|abl_d={{{f3_abl_d|}}}<!--
-->|gen_d={{{f3_gen_d|}}}<!--
-->|loc_d={{{f3_loc_d|}}}<!--
-->|nom_p={{{f3_nom_p|}}}<!--
-->|voc_p={{{f3_voc_p|}}}<!--
-->|acc_p={{{f3_acc_p|}}}<!--
-->|ins_p={{{f3_ins_p|}}}<!--
-->|dat_p={{{f3_dat_p|}}}<!--
-->|abl_p={{{f3_abl_p|}}}<!--
-->|gen_p={{{f3_gen_p|}}}<!--
-->|loc_p={{{f3_loc_p|}}}<!--
-->}}<!--
-->}}<!--
-->{{sa-decl-noun-n|nocat=1|adj=1<!--
-->|sc={{{sc|}}}<!--
-->|{{{3|}}}<!--
-->|participle={{{participle|}}}<!--
-->|pronominal={{{pronominal|}}}<!--
-->|ambig_final={{{ambig_final|}}}<!--
-->|at_nom_s={{{at_nom_s|}}}<!--
-->|diaspirate={{{diaspirate|}}}<!--
-->|novedic={{{novedic|{{{nv|}}}}}}<!--
-->|note={{{n_note|}}}<!--
-->|n={{{n|}}}<!--
-->|root={{{root|}}}<!--
-->|han={{{han|}}}<!--
-->|voc_svar={{{voc_svar|}}}<!--
-->|retroflex_l={{{retroflex_l|}}}<!--
-->|fem_stem={{{2|}}}<!--
-->|fem2_stem={{{f2|}}}<!--
-->|nom_s={{{mfn_nom_s|{{{mn_nom_s|{{{fn_nom_s|{{{n_nom_s|}}}}}}}}}}}}<!--
-->|voc_s={{{mfn_voc_s|{{{mn_voc_s|{{{fn_voc_s|{{{n_voc_s|}}}}}}}}}}}}<!--
-->|acc_s={{{mfn_acc_s|{{{mn_acc_s|{{{fn_acc_s|{{{n_acc_s|}}}}}}}}}}}}<!--
-->|ins_s={{{mfn_ins_s|{{{mn_ins_s|{{{fn_ins_s|{{{n_ins_s|}}}}}}}}}}}}<!--
-->|dat_s={{{mfn_dat_s|{{{mn_dat_s|{{{fn_dat_s|{{{n_dat_s|}}}}}}}}}}}}<!--
-->|abl_s={{{mfn_abl_s|{{{mn_abl_s|{{{fn_abl_s|{{{n_abl_s|}}}}}}}}}}}}<!--
-->|gen_s={{{mfn_gen_s|{{{mn_gen_s|{{{fn_gen_s|{{{n_gen_s|}}}}}}}}}}}}<!--
-->|loc_s={{{mfn_loc_s|{{{mn_loc_s|{{{fn_loc_s|{{{n_loc_s|}}}}}}}}}}}}<!--
-->|nom_d={{{mfn_nom_d|{{{mn_nom_d|{{{fn_nom_d|{{{n_nom_d|}}}}}}}}}}}}<!--
-->|voc_d={{{mfn_voc_d|{{{mn_voc_d|{{{fn_voc_d|{{{n_voc_d|}}}}}}}}}}}}<!--
-->|acc_d={{{mfn_acc_d|{{{mn_acc_d|{{{fn_acc_d|{{{n_acc_d|}}}}}}}}}}}}<!--
-->|ins_d={{{mfn_ins_d|{{{mn_ins_d|{{{fn_ins_d|{{{n_ins_d|}}}}}}}}}}}}<!--
-->|dat_d={{{mfn_dat_d|{{{mn_dat_d|{{{fn_dat_d|{{{n_dat_d|}}}}}}}}}}}}<!--
-->|abl_d={{{mfn_abl_d|{{{mn_abl_d|{{{fn_abl_d|{{{n_abl_d|}}}}}}}}}}}}<!--
-->|gen_d={{{mfn_gen_d|{{{mn_gen_d|{{{fn_gen_d|{{{n_gen_d|}}}}}}}}}}}}<!--
-->|loc_d={{{mfn_loc_d|{{{mn_loc_d|{{{fn_loc_d|{{{n_loc_d|}}}}}}}}}}}}<!--
-->|nom_p={{{mfn_nom_p|{{{mn_nom_p|{{{fn_nom_p|{{{n_nom_p|}}}}}}}}}}}}<!--
-->|voc_p={{{mfn_voc_p|{{{mn_voc_p|{{{fn_voc_p|{{{n_voc_p|}}}}}}}}}}}}<!--
-->|acc_p={{{mfn_acc_p|{{{mn_acc_p|{{{fn_acc_p|{{{n_acc_p|}}}}}}}}}}}}<!--
-->|ins_p={{{mfn_ins_p|{{{mn_ins_p|{{{fn_ins_p|{{{n_ins_p|}}}}}}}}}}}}<!--
-->|dat_p={{{mfn_dat_p|{{{mn_dat_p|{{{fn_dat_p|{{{n_dat_p|}}}}}}}}}}}}<!--
-->|abl_p={{{mfn_abl_p|{{{mn_abl_p|{{{fn_abl_p|{{{n_abl_p|}}}}}}}}}}}}<!--
-->|gen_p={{{mfn_gen_p|{{{mn_gen_p|{{{fn_gen_p|{{{n_gen_p|}}}}}}}}}}}}<!--
-->|loc_p={{{mfn_loc_p|{{{mn_loc_p|{{{fn_loc_p|{{{n_loc_p|}}}}}}}}}}}}<!--
-->}}<!--
-->}}</includeonly><noinclude>{{documentation}}</noinclude>
gm2d5u7cxmva2os1vshhc645bckfch6
Mô đun:he-verb
828
388602
2567260
2562106
2026-09-29T08:37:47Z
Hiyuune
50834
2567260
Scribunto
text/plain
--[=[
TODO:
- Implement support for hollow roots in nif`al.
- Implement support for geminate roots in pa`al and nif`al.
- Implement smarter ktiv male spellings.
- Implement support for mixed binyanim (such as for ניגש and יכול).
- Implement support for alternative forms.
Reference:
Input parameters:
1: binyan abbreviation
p: first root letter
a: second root letter
l: third root letter
Root letters may be prefixed with ':' to include them literally, in which case they will not be
parsed as hollow or weak and no dageshes will be added to or removed from them. Any of the
final form codes or intermediate data below can also be given explicitly in the input.
Binyan abbreviations:
pa: pa`al
pi: pi`el
po: po`el/polel
pu: pu`al
poal: po`al/polal
hif: hif`il
huf: huf`al
nif: nif`al
hit: hitpa`el
hitpo: hitpo`el/hitpolel
hitpu: hitpu`al *rare modern coinage
Tense abbreviations:
inf: to-infinitive
imp: imperative
fut: future (a.k.a. imperfect or prefix conjugation)
pres: present (a.k.a. active participle)
past: past (a.k.a. perfect or suffix conjugation)
noun: action noun
pp: passive participle
Gender abbreviations:
s: singular *first person only
p: plural *first person only
ms: masculine singular
fs: feminine singular
mp: masculine plural
fp: feminine plural
Person abbreviations:
1: first person
2: second person
3: third person
Exhaustive list of final form codes:
inf
noun *optional
pp *optional
imp_ms
imp_fs
imp_mp
imp_fp *obsolete
fut_1s
fut_2ms *always equal to fut_3fs
fut_2fs
fut_3ms
fut_3fs *always equal to fut_2ms
fut_1p
fut_2mp
fut_2fp *obsolete and always equal to fut_3fp
fut_3mp
fut_3fp *obsolete and always equal to fut_2fp
past_1s
past_2ms
past_2fs
past_3ms
past_3fs
past_1p
past_2mp
past_2fp
past_3mp
past_3fp *obsolete before Biblical Hebrew, therefore equal to past_3mp
pres_ms
pres_fs
pres_mp
pres_fp
Intermediate data:
root_p
root_a
root_l
gem *whether to treat as geminate
imp_pre_stem
imp_prs_stem
imp_mid_stem
imp_fin_stem
imp_suf_stem
imp_ffp_stem
fut_gem
fut_char *characteristic vowel [a,i,u], pa`al only (default: u)
fut_pre_stem
fut_prs_stem
fut_1sp_stem
fut_mid_stem
fut_fin_stem
fut_suf_stem
fut_ffp_stem
pres_gem
pres_short *if not empty, use the pa`el-present, pa`al only
pres_stem
past_gem
past_char *characteristic vowel [a,i,u], pa`al only (default: a)
past_pre_stem
past_2p_pre_stem
past_stem
past_3_stem
past_3ms_stem
past_3fs_stem
past_2p_stem
]=]
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local m_strutils = require("Module:string utilities")
local export = {}
local get_stems_for = {}
local lang = require("Module:languages").getByCode("he")
local m_inflection_table = require("Module:inflection-table")
local convert_root_char = {
["א"] = "א",
["ב"] = "ב",
["בּ"] = "בּ", -- always hard
["בֿ"] = "בֿ", -- always soft
["ג"] = "ג",
["גּ"] = "גּ", -- always hard
["גֿ"] = "גֿ", -- always soft
["ד"] = "ד",
["דּ"] = "דּ", -- always hard
["דֿ"] = "דֿ", -- always soft
["ה"] = "ה",
["ו"] = "ו",
["ז"] = "ז",
["ח"] = "ח",
["ט"] = "ט",
["י"] = "י",
["כ"] = "כ",
["כּ"] = "כּ", -- always hard
["כֿ"] = "כֿ", -- always soft
["ל"] = "ל",
["מ"] = "מ",
["נ"] = "נ",
["ס"] = "ס",
["ע"] = "ע",
["פ"] = "פ",
["פּ"] = "פּ", -- always hard
["פֿ"] = "פֿ", -- always soft
["צ"] = "צ",
["ק"] = "ק",
["ר"] = "ר",
["ש"] = "שׁ", -- assume shin
["שׁ"] = "שׁ", -- shin
["שׂ"] = "שׂ", -- sin
["ת"] = "ת",
["תּ"] = "תּ", -- always hard
["תֿ"] = "תֿ", -- always soft
}
local convert_final_root_char = {
["ה"] = "י", -- make defective
["הּ"] = "ה", -- remove mappiq
["ו"] = "י", -- make defective
["ך"] = "כ", -- normalize final
["ךּ"] = "כּ", -- always hard, normalize final
["ךֿ"] = "כֿ", -- always soft, normalize final
["ם"] = "מ", -- normalize final
["ן"] = "נ", -- normalize final
["ף"] = "פ", -- normalize final
["ףּ"] = "פּ", -- always hard, normalize final
["ףֿ"] = "פֿ", -- always soft, normalize final
["ץ"] = "צ", -- normalize final
}
local forms_itp = {
["שׁ"] = "שְׁתּ",
["שׂ"] = "שְׂתּ",
["ס"] = "סְתּ",
["ז"] = "זְדּ",
["צ"] = "צְט",
["ת"] = {"ית", "תּ"},
["ד"] = {"יד", "דּ"},
["ט"] = {"יט", "טּ"},
}
local forms_etp = {
["ת"] = "תּ",
["ד"] = "דּ",
["ט"] = "טּ",
}
local forms = {
["בֿ"] = "ב",
["גֿ"] = "ג",
["דֿ"] = "ד",
["כֿ"] = "כ",
["פֿ"] = "פ",
["תֿ"] = "ת",
}
local forms_initial = {
["ב"] = "בּ",
["ג"] = "גּ",
["ד"] = "דּ",
["כ"] = "כּ",
["פ"] = "פּ",
["ת"] = "תּ",
}
local non_doubling_letters = {
["א"] = 1,
["ה"] = 2,
["ח"] = 3,
["ע"] = 2,
["ר"] = 1,
}
local forms_final_furtive = {
["ה"] = "הַּ",
["ח"] = "חַ",
["ע"] = "עַ",
}
local forms_final = {
["ה"] = "הּ",
["כ"] = "ךְ",
["כּ"] = "ךְּ",
["כֿ"] = "ךְ",
["מ"] = "ם",
["נ"] = "ן",
["פ"] = "ף",
["פֿ"] = "ף",
["צ"] = "ץ",
}
local short_gem_vowel = {
["a"] = "ַ",
["i"] = {"י", "ִ"},
["u"] = {"ו", "ֻ"},
["e"] = "ֶ",
["o"] = {"ו", "ָ"},
}
local lengthened_gem_vowel = {
["a"] = "ָ",
["i"] = {"י", "ֵ"},
["u"] = {"ו", "ֹ"},
["e"] = {"י", "ֵ"},
["o"] = {"ו", "ֹ"},
}
local mixed_gem_vowel = {
["a"] = "ַ",
["i"] = {"י", "ִ"},
["u"] = {"ו", "ֹ"},
["e"] = "ֶ",
["o"] = {"ו", "ֹ"},
}
local stressed_gem_vowel = {
["a"] = "ַ",
["i"] = "ֵ",
["u"] = {"ו", "ֹ"},
["e"] = "ֵ",
["o"] = {"ו", "ֹ"},
}
local doubling_type = {
[1] = lengthened_gem_vowel,
[2] = mixed_gem_vowel,
[3] = short_gem_vowel,
}
local gutturals = {
["א"] = true,
["ה"] = true,
["ח"] = true,
["ע"] = true,
}
local char_vowel = {
["a"] = "ַ",
["i"] = "ֵ",
["u"] = {"ו", "ֹ"},
["A"] = "ָ",
["I"] = "ִי",
["U"] = "וּ",
["E"] = "ֵ",
["O"] = "וֹ",
}
local char_vowel_open = {
["a"] = "ָ",
["i"] = "ֵ",
["u"] = {"ו", "ֹ"},
["A"] = "ָ",
["I"] = "ִי",
["U"] = "וּ",
["E"] = "ֵ",
["O"] = "וֹ",
}
local char_vowel_short = {
["a"] = "ַ",
["i"] = "ֵ",
["u"] = {"ו", "ֹ"},
["A"] = "ַ",
["I"] = "ֵ",
["U"] = {"ו", "ֹ"},
["E"] = "ֵ",
["O"] = {"ו", "ֹ"},
}
local char_vowel_open_short = {
["a"] = "ָ",
["i"] = "ֵ",
["u"] = {"ו", "ֹ"},
["A"] = "ָ",
["I"] = "ֵ",
["U"] = {"ו", "ֹ"},
["E"] = "ֵ",
["O"] = {"ו", "ֹ"},
}
local char_vowel_closed = {
["a"] = "ַ",
["i"] = "ַ",
["u"] = {"ו", "ֹ"},
["A"] = "ַ",
["I"] = "ַ",
["U"] = {"ו", "ֹ"},
["E"] = "ַ",
["O"] = {"ו", "ֹ"},
}
local char_vowel_unstressed = {
["a"] = "ַ",
["i"] = "ַ",
["u"] = {"ו", "ָ"},
["A"] = "ַ",
["I"] = "ַ",
["U"] = {"ו", "ָ"},
["E"] = "ַ",
["O"] = {"ו", "ָ"},
}
local char_vowel_open_fp = {
["a"] = "ֶ",
["i"] = "ֶ",
["u"] = {"ו", "ֹ"},
["A"] = "ֶ",
["I"] = "ֶ",
["U"] = {"ו", "ֹ"},
["E"] = "ֶ",
["O"] = {"ו", "ֹ"},
}
local char_vowel_reduce = {
["a"] = nil,
["i"] = nil,
["u"] = nil,
["A"] = "ָ",
["I"] = "ִי",
["U"] = "וּ",
["E"] = "ֵ",
["O"] = "וֹ",
}
local chataf_vowel = {
["a"] = "ֲ",
["i"] = "ֱ",
["u"] = {"ו", "ֳ"},
}
local monophthongize = {
["י"] = "ֵי",
["ו"] = "וֹ",
}
local function gen_link(x)
if type(x) == "table" then
local pg = lang:stripDiacritics(x[1])
if pg == lang:stripDiacritics(x[2]) then
return m_links.full_link({lang = lang, term = pg, alt = x[2]})
else
return m_links.full_link({lang = lang, term = pg, alt = pg .. " / " .. x[2]})
end
else
if x == "-" then
return "—" -- m-dash
else
if x == "N/A" then
return "N/A"
else
return m_links.full_link({lang = lang, term = x})
end
end
end
end
local function process_args(args)
for key, value in pairs(args) do
local i = mw.ustring.find(value, "[\\/]")
if i then
args[key] = {mw.ustring.sub(value, 1, i - 1), mw.ustring.sub(value, i + 1)}
end
end
end
local function append_parts_2(a, b)
if type(a) == "table" then
if type(b) == "table" then
return {a[1] .. b[1], a[2] .. b[2]}
else
return {a[1] .. lang:stripDiacritics(b), a[2] .. b}
end
else
if type(b) == "table" then
return {lang:stripDiacritics(a) .. b[1], a .. b[2]}
else
return a .. b
end
end
end
local function append_parts(a, ...)
for _, b in ipairs({...}) do
a = append_parts_2(a, b)
end
return a
end
local function equal(a, b)
if type(a) == "table" then
return type(b) == "table" and a[1] == b[1] and a[2] == b[2]
else
return a == b
end
end
local function attach_t(x, novowel, assim_t)
local is_table = (type(x) == "table")
local wv = is_table and x[2] or x
if mw.ustring.sub(wv, -2) == "תְ" then
if is_table then
return {x[1] .. "ת", mw.ustring.sub(wv, 1, -2) .. (novowel and "ְּ" or "ּ")}
else
return append_parts(mw.ustring.sub(wv, 1, -2), {"ת", (novowel and "ְּ" or "ּ")})
end
elseif assim_t and mw.ustring.sub(wv, -2) == "נְ" and (not is_table or mw.ustring.sub(x[1], -1) == "נ") then
if is_table then
return {mw.ustring.sub(x[1], 1, -2) .. "ת", mw.ustring.sub(wv, 1, -3) .. (novowel and "תְּ" or "תּ")}
else
return mw.ustring.sub(wv, 1, -3) .. (novowel and "תְּ" or "תּ")
end
else
local dagesh = (mw.ustring.sub(wv, -1) == "ְ")
return append_parts(x, dagesh and (novowel and "תְּ" or "תּ") or "ת")
end
end
local function attach_n(x)
local is_table = (type(x) == "table")
local wv = is_table and x[2] or x
if mw.ustring.sub(wv, -2) == "נְ" then
if is_table then
return {x[1], mw.ustring.sub(wv, 1, -2) .. "ּ"}
else
return mw.ustring.sub(wv, 1, -2) .. "ּ"
end
else
return append_parts(x, "נ")
end
end
local function get_form_initial(letter)
if type(letter) == "table" then
return letter
elseif mw.ustring.sub(letter, 1, 1) == ":" then
return mw.ustring.sub(letter, 2)
else
return forms_initial[letter] or forms[letter] or letter
end
end
local function get_form_itp(letter)
return forms_itp[letter] or append_parts("תְ", get_form_initial(letter))
end
local function get_form_etp(letter)
return forms_etp[letter] or forms_itp[letter] or append_parts("תְ", get_form_initial(letter))
end
local function get_form_medial(letter)
if type(letter) == "table" then
return letter
elseif mw.ustring.sub(letter, 1, 1) == ":" then
return mw.ustring.sub(letter, 2)
else
return forms[letter] or letter
end
end
local dagesh_or_rafe = {["ּ"] = true, ["ֿ"] = true}
local function add_dagesh(letter)
if type(letter) == "table" then
return letter
elseif mw.ustring.sub(letter, 1, 1) == ":" then
return get_form_medial(letter)
elseif non_doubling_letters[letter] or dagesh_or_rafe[mw.ustring.sub(letter, -1)] then
return get_form_medial(letter)
else -- TODO: Handle geresh
return get_form_medial(letter) .. "ּ"
end
end
local function get_form_double(letter, vowel, force_lengthening, stressed)
local lengthen = non_doubling_letters[letter]
if force_lengthening then lengthen = lengthen and 1 end
if stressed then
vowel = vowel and (lengthen and vowel == "a" and "ָ" or stressed_gem_vowel[vowel]) or ""
else
vowel = vowel and (lengthen and doubling_type[lengthen][vowel] or short_gem_vowel[vowel]) or ""
end
return append_parts(vowel, add_dagesh(letter))
end
local function get_form_final(letter, char)
if type(letter) == "table" then
return letter
elseif mw.ustring.sub(letter, 1, 1) == ":" then
return mw.ustring.sub(letter, 2)
else
return (char ~= "a" and char ~= "A" and forms_final_furtive[letter]) or forms_final[letter] or forms[letter] or letter
end
end
local function get_elet_ending(letter)
if letter == "א" then
return "ֵאת"
else
local vowel = gutturals[letter] and "ַ" or "ֶ"
return append_parts(vowel, get_form_medial(letter), vowel, "ת")
end
end
local function ends_in_guttural(letter)
if type(letter) == "table" then
letter = letter[2]
end
return gutturals[mw.ustring.sub(letter, -1)]
end
local function shva_na(letter, vowel)
return ends_in_guttural(letter) and chataf_vowel[vowel or "a"] or "ְ"
end
local function reduce(char, chataf)
return char_vowel_reduce[char] or chataf and "ֲ" or "ְ"
end
local letters = "[א-ת]"
local not_letters = "[^א-ת]"
local modifiers = "[ּֿׁׂׄ׳]?"
local separators = "[-־ %.,!|]?"
local root_regex = "(" .. letters .. modifiers .. ")" .. separators
local function parse_root_part(part, last)
if mw.ustring.sub(part, 1, 1) == ":" then
return part
end
local letters = {}
local len = 0
local subber = function(letter)
table.insert(letters, letter)
len = len + 1
return ""
end
local scraps = mw.ustring.gsub(part, root_regex, subber)
if scraps ~= "" then
return ":" .. part
end
if len < 1 then
return nil
elseif len == 1 then
return part
else
local ret = ""
for i, letter in ipairs(letters) do
local letterx = last and i == len and convert_final_root_char[letter] or convert_root_char[letter]
if not letterx then
error("Không nhận diện được gốc từ chữ cái '" .. letter .. "'.")
end
ret = append_parts(ret, get_form_medial(letterx), i == len and "" or "ְ")
end
if type(ret) == "table" then
return ret
else
return ":" .. ret
end
end
end
local function parse_root(args)
if args[2] == "" then args[2] = nil end
if args[3] == "" then args[3] = nil end
if args[4] == "" then args[4] = nil end
if args[3] then
args["p"] = args["p"] or parse_root_part(args[2])
args["a"] = args["a"] or parse_root_part(args[3])
args["l"] = args["l"] or parse_root_part(args[4], true)
elseif args[2] then
local radicals = {}
local len = 0
local subber = function(radical)
table.insert(radicals, radical)
len = len + 1
return ""
end
local scraps = mw.ustring.gsub(args[2], root_regex, subber)
if scraps ~= "" then
error("Không rõ ký tự trong gốc từ.")
end
if len < 3 then
error("Gốc từ bắt buộc phải có 3 chữ cái trở lên.")
elseif len == 3 then
args["p"] = args["p"] or radicals[1]
args["a"] = args["a"] or radicals[2]
args["l"] = args["l"] or radicals[3]
elseif len == 4 then
args["p"] = args["p"] or radicals[1]
args["a"] = args["a"] or radicals[2]
args["a2"] = args["a2"] or radicals[3]
args["l"] = args["l"] or radicals[4]
elseif len > 4 then
error("Gốc từ phải được phân cách rõ ràng nếu gốc từ có hơn 4 chữ cái.")
end
end
end
local function convert_root(args)
for _, x in ipairs({"p", "a", "a2", "l"}) do
if args[x] then
local root_x = "root_" .. x
if not args[root_x] then
if mw.ustring.sub(args[x], 1, 1) == ":" then
args[root_x] = args[x]
else
args[root_x] = x == "l" and convert_final_root_char[args[x]] or convert_root_char[args[x]]
if not args[root_x] then
error("Không nhận diện được gốc từ chữ cái '" .. args[x] .. "'.")
end
end
end
end
end
if args["root_a2"] then
local a = append_parts(get_form_medial(args["root_a"]), "ְ", get_form_initial(args["root_a2"]))
if type(a) ~= "table" then
a = ":" .. a
end
args["root_a"] = a
args["root_a2"] = nil
end
end
local function conjugate(args)
args["imp_pre_stem"] = args["imp_pre_stem"] or args["fut_pre_stem"]
args["imp_mid_stem"] = args["imp_mid_stem"] or args["fut_mid_stem"]
args["imp_fin_stem"] = args["imp_fin_stem"] or args["fut_fin_stem"]
args["imp_suf_stem"] = args["imp_suf_stem"] or args["fut_suf_stem"]
args["imp_prs_stem"] = args["imp_prs_stem"] or args["fut_prs_stem"]
args["imp_ffp_stem"] = args["imp_ffp_stem"] or args["fut_ffp_stem"]
local fp_long = args["fp_long"] and args["fp_long"] ~= "-"
if fp_long then
args["fut_long_stem"] = append_parts(args["fut_long_stem"] or args["fut_suf_stem"], "ֶי")
args["imp_long_stem"] = append_parts(args["imp_long_stem"] or args["imp_suf_stem"], "ֶי")
end
if args["imp"] ~= "-" then
if not args["imp_ms"] then
args["imp_ms"] = append_parts(args["imp_pre_stem"], args["imp_mid_stem"], args["imp_fin_stem"])
end
if not args["imp_fs"] then
args["imp_fs"] = append_parts(args["imp_prs_stem"] or args["imp_pre_stem"], args["imp_mid_stem"], args["imp_suf_stem"], "ִי")
end
if not args["imp_mp"] then
args["imp_mp"] = append_parts(args["imp_prs_stem"] or args["imp_pre_stem"], args["imp_mid_stem"], args["imp_suf_stem"], "וּ")
end
if not args["imp_fp"] then
args["imp_fp"] = append_parts(fp_long and (args["imp_long_pre_stem"] or args["imp_prs_stem"]) or args["imp_pre_stem"], args["imp_mid_stem"], attach_n(fp_long and args["imp_long_stem"] or args["imp_ffp_stem"]), "ָה")
end
end
if args["fut"] ~= "-" then
if not args["fut_1s"] then
args["fut_1s"] = append_parts("א", args["fut_1sp_stem"] or args["fut_pre_stem"], args["fut_mid_stem"], args["fut_fin_stem"])
end
if not args["fut_2ms"] then
args["fut_2ms"] = append_parts("תּ", args["fut_pre_stem"], args["fut_mid_stem"], args["fut_fin_stem"])
end
if not args["fut_2fs"] then
args["fut_2fs"] = append_parts("תּ", args["fut_prs_stem"] or args["fut_pre_stem"], args["fut_mid_stem"], args["fut_suf_stem"], "ִי")
end
if not args["fut_3ms"] then
args["fut_3ms"] = append_parts("י", args["fut_pre_stem"], args["fut_mid_stem"], args["fut_fin_stem"])
end
if not args["fut_3fs"] then
args["fut_3fs"] = args["fut_2ms"]
end
if not args["fut_1p"] then
args["fut_1p"] = append_parts("נ", args["fut_pre_stem"], args["fut_mid_stem"], args["fut_fin_stem"])
end
if not args["fut_2mp"] then
args["fut_2mp"] = append_parts("תּ", args["fut_prs_stem"] or args["fut_pre_stem"], args["fut_mid_stem"], args["fut_suf_stem"], "וּ")
end
if not args["fut_2fp"] then
args["fut_2fp"] = append_parts("תּ", fp_long and (args["fut_long_pre_stem"] or args["fut_prs_stem"]) or args["fut_pre_stem"], args["fut_mid_stem"], attach_n(fp_long and args["fut_long_stem"] or args["fut_ffp_stem"]), "ָה")
end
if not args["fut_3mp"] then
args["fut_3mp"] = append_parts("י", args["fut_prs_stem"] or args["fut_pre_stem"], args["fut_mid_stem"], args["fut_suf_stem"], "וּ")
end
if not args["fut_3fp"] then
args["fut_3fp"] = append_parts("תּ", fp_long and (args["fut_long_pre_stem"] or args["fut_prs_stem"]) or args["fut_pre_stem"], args["fut_mid_stem"], attach_n(fp_long and args["fut_long_stem"] or args["fut_ffp_stem"]), "ָה")
end
end
if args["pres"] ~= "-" then
args["pres_pre_stem"] = args["pres_pre_stem"] or ""
args["pres_prs_stem"] = args["pres_prs_stem"] or args["pres_pre_stem"]
if not args["pres_ms"] then
args["pres_ms"] = append_parts(args["pres_pre_stem"], args["pres_ms_stem"])
end
if not args["pres_fs"] then
args["pres_fs_stem"] = args["pres_fs_stem"] or append_parts(args["pres_suf_stem"], "ָה")
args["pres_fs"] = append_parts(args["pres_prs_stem"], args["pres_fs_stem"])
end
if not args["pres_mp"] then
args["pres_mp"] = append_parts(args["pres_prs_stem"], args["pres_suf_stem"], "ִים")
end
if not args["pres_fp"] then
args["pres_fp"] = append_parts(args["pres_prs_stem"], args["pres_suf_stem"], "וֹת")
end
end
if args["past"] ~= "-" then
args["past_pre_stem"] = args["past_pre_stem"] or ""
args["past_2p_pre_stem"] = args["past_2p_pre_stem"] or args["past_pre_stem"]
local past_long = args["past_long"] and args["past_long"] ~= "-"
if past_long then
args["past_stem"] = append_parts(args["past_long_stem"] or args["past_3_stem"] or args["past_stem"], "וֹ")
args["past_2p_stem"] = args["past_stem"]
args["past_long_pre_stem"] = args["past_long_pre_stem"] or args["root_l"] == "י" and args["past_pre_stem"] or args["past_2p_pre_stem"]
else
args["past_2p_stem"] = args["past_2p_stem"] or args["past_stem"]
end
local assim_t = args["assim_t"] and args["assim_t"] ~= "-"
if not args["past_1s"] then
args["past_1s"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_pre_stem"], attach_t(args["past_stem"], false, assim_t), "ִי")
end
if not args["past_2ms"] then
args["past_2ms"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_pre_stem"], attach_t(args["past_stem"], false, assim_t), "ָ")
end
if not args["past_2fs"] then
args["past_2fs"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_pre_stem"], attach_t(args["past_stem"], true, assim_t))
end
if not args["past_3ms"] then
args["past_3ms"] = append_parts(args["past_pre_stem"], args["past_3ms_stem"])
end
if not args["past_3fs"] then
args["past_3fs"] = append_parts(args["past_3fs_pre_stem"] or args["past_3_pre_stem"] or args["past_pre_stem"], args["past_3fs_stem"] or args["past_3_stem"], "ָה")
end
if not args["past_1p"] then
args["past_1p"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_pre_stem"], attach_n(args["past_stem"]), "וּ")
end
if not args["past_2mp"] then
args["past_2mp"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_2p_pre_stem"], attach_t(args["past_2p_stem"], false, assim_t), "ֶם")
end
if not args["past_2fp"] then
args["past_2fp"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_2p_pre_stem"], attach_t(args["past_2p_stem"], false, assim_t), "ֶן")
end
if not args["past_2mp2"] then
args["past_2mp2"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_pre_stem"], attach_t(args["past_stem"], false, assim_t), "ֶם")
end
if not args["past_2fp2"] then
args["past_2fp2"] = append_parts(past_long and args["past_long_pre_stem"] or args["past_pre_stem"], attach_t(args["past_stem"], false, assim_t), "ֶן")
end
if not args["past_3mp"] then
args["past_3mp"] = append_parts(args["past_3_pre_stem"] or args["past_pre_stem"], args["past_3_stem"], "וּ")
end
if not args["past_3fp"] then
args["past_3fp"] = args["past_3mp"]
end
end
args["inf"] = args["inf"] or "-"
args["heading"] = "Bảng chia động từ của " .. gen_link(args["past_3ms"]) .. " (xem thêm [[Phụ lục:Động từ tiếng Do Thái]])"
end
local function get_imp_stem_endings(args, root_l, char, chataf, keep_long_vowel, guttural_force_patach)
if root_l == "א" then
args["imp_fin_stem"] = args["imp_fin_stem"] or append_parts(keep_long_vowel and char_vowel_open[char] or char_vowel_open_short[char], "א")
args["imp_suf_stem"] = args["imp_suf_stem"] or append_parts(reduce(char, chataf), "א")
args["imp_ffp_stem"] = args["imp_ffp_stem"] or append_parts(char_vowel_open_fp[char], "א")
args["imp_long_stem"] = args["imp_long_stem"] or append_parts(char == "a" and char_vowel_open[char] or reduce(char, chataf), "א")
elseif root_l == "י" then
args["imp_fin_stem"] = args["imp_fin_stem"] or "ֵה"
args["imp_suf_stem"] = args["imp_suf_stem"] or ""
args["imp_ffp_stem"] = args["imp_ffp_stem"] or "ֶי"
else
args["imp_fin_stem"] = args["imp_fin_stem"] or append_parts(keep_long_vowel and char_vowel[char] or guttural_force_patach and gutturals[root_l] and "ַ" or char_vowel_short[char], get_form_final(root_l, guttural_force_patach and (not keep_long_vowel) and gutturals[root_l] and "a" or char))
args["imp_suf_stem"] = args["imp_suf_stem"] or append_parts(reduce(char, chataf), get_form_medial(root_l))
args["imp_ffp_stem"] = args["imp_ffp_stem"] or append_parts(gutturals[root_l] and "ַ" or char_vowel_short[char], get_form_medial(root_l), "ְ")
args["imp_long_stem"] = args["imp_long_stem"] or append_parts(char == "a" and char_vowel_open[char] or reduce(char, chataf), get_form_medial(root_l))
end
end
local function get_fut_stem_endings(args, root_l, char, chataf)
if root_l == "א" then
args["fut_fin_stem"] = args["fut_fin_stem"] or append_parts(char_vowel_open[char], "א")
args["fut_suf_stem"] = args["fut_suf_stem"] or append_parts(reduce(char, chataf), "א")
args["fut_ffp_stem"] = args["fut_ffp_stem"] or append_parts(char_vowel_open_fp[char], "א")
args["fut_long_stem"] = args["fut_long_stem"] or append_parts(char == "a" and char_vowel_open[char] or reduce(char, chataf), "א")
elseif root_l == "י" then
args["fut_fin_stem"] = args["fut_fin_stem"] or "ֶה"
args["fut_suf_stem"] = args["fut_suf_stem"] or ""
args["fut_ffp_stem"] = args["fut_ffp_stem"] or "ֶי"
else
args["fut_fin_stem"] = args["fut_fin_stem"] or append_parts(char_vowel[char], get_form_final(root_l, char))
args["fut_suf_stem"] = args["fut_suf_stem"] or append_parts(reduce(char, chataf), get_form_medial(root_l))
args["fut_ffp_stem"] = args["fut_ffp_stem"] or append_parts(gutturals[root_l] and "ַ" or char_vowel_short[char], get_form_medial(root_l), "ְ")
args["fut_long_stem"] = args["fut_long_stem"] or append_parts(char == "a" and char_vowel_open[char] or reduce(char, chataf), get_form_medial(root_l))
end
end
local function get_pres_stem_endings(args, root_l, char, chataf, use_elet, use_et)
if root_l == "י" then
args["pres_ms_stem"] = args["pres_ms_stem"] or "ֶה"
args["pres_suf_stem"] = args["pres_suf_stem"] or ""
if use_et then
args["pres_fs_stem"] = args["pres_fs_stem"] or "ֵית"
end
else
args["pres_ms_stem"] = args["pres_ms_stem"] or append_parts(char_vowel_open[char], get_form_final(root_l, char))
args["pres_suf_stem"] = args["pres_suf_stem"] or append_parts(char == "a" and char_vowel_open[char] or reduce(char, chataf), get_form_medial(root_l))
if use_elet then
args["pres_fs_stem"] = args["pres_fs_stem"] or get_elet_ending(root_l)
end
end
end
local function get_past_stem_endings(args, root_l, char, chataf, kca, use_e)
if root_l == "א" then
args["past_stem"] = args["past_stem"] or append_parts(kca and char_vowel_open[char] or "ֵ", "א")
args["past_3ms_stem"] = args["past_3ms_stem"] or append_parts(char_vowel_open[char], "א")
args["past_3_stem"] = args["past_3_stem"] or append_parts(reduce(char, chataf), "א")
args["past_long_stem"] = args["past_long_stem"] or append_parts(char == "a" and char_vowel_open[char] or reduce(char, chataf), "א")
elseif root_l == "י" then
args["past_stem"] = args["past_stem"] or use_e and "ֵי" or "ִי"
args["past_3ms_stem"] = args["past_3ms_stem"] or "ָה"
args["past_3fs_stem"] = args["past_3fs_stem"] or append_parts(reduce("a", chataf), "ת")
args["past_3_stem"] = args["past_3_stem"] or ""
else
args["past_stem"] = args["past_stem"] or append_parts(char_vowel_closed[char], get_form_medial(root_l), "ְ")
args["past_2p_stem"] = args["past_2p_stem"] or append_parts(char_vowel_unstressed[char], get_form_medial(root_l), "ְ")
args["past_3ms_stem"] = args["past_3ms_stem"] or append_parts(char_vowel[char], get_form_final(root_l, char))
args["past_3_stem"] = args["past_3_stem"] or append_parts(reduce(char, chataf), get_form_medial(root_l))
args["past_long_stem"] = args["past_long_stem"] or append_parts(char == "a" and char_vowel_open[char] or reduce(char, chataf), get_form_medial(root_l))
end
end
local function get_imp_stem_endings_gem(args, root_l, char)
if root_l == "א" then
args["imp_fin_stem"] = args["imp_fin_stem"] or append_parts(char == "a" and "ָ" or stressed_gem_vowel[char], "א")
args["imp_suf_stem"] = args["imp_suf_stem"] or append_parts(char == "a" and "ָ" or stressed_gem_vowel[char], "א")
args["imp_ffp_stem"] = args["imp_ffp_stem"] or append_parts(char ~= "u" and char ~= "o" and "ֶ" or stressed_gem_vowel[char], "א")
else
args["imp_fin_stem"] = args["imp_fin_stem"] or append_parts(stressed_gem_vowel[char], get_form_final(root_l, char))
args["imp_suf_stem"] = args["imp_suf_stem"] or get_form_double(root_l, char, true, true)
args["imp_ffp_stem"] = args["imp_ffp_stem"] or append_parts(gutturals[root_l] and "ַ" or stressed_gem_vowel[char], get_form_medial(root_l), "ְ")
args["imp_long_stem"] = args["imp_long_stem"] or get_form_double(root_l, char, true)
end
end
local function get_fut_stem_endings_gem(args, root_l, char)
if root_l == "א" then
args["fut_fin_stem"] = args["fut_fin_stem"] or append_parts(char == "a" and "ָ" or stressed_gem_vowel[char], "א")
args["fut_suf_stem"] = args["fut_suf_stem"] or get_form_double("א", char)
args["fut_ffp_stem"] = args["fut_ffp_stem"] or append_parts(char ~= "u" and char ~= "o" and "ֶ" or stressed_gem_vowel[char], "א")
else
args["fut_fin_stem"] = args["fut_fin_stem"] or append_parts(stressed_gem_vowel[char], get_form_final(root_l, char))
args["fut_suf_stem"] = args["fut_suf_stem"] or get_form_double(root_l, char, true, true)
args["fut_ffp_stem"] = args["fut_ffp_stem"] or append_parts(gutturals[root_l] and "ַ" or stressed_gem_vowel[char], get_form_medial(root_l), "ְ")
args["fut_long_stem"] = args["fut_long_stem"] or get_form_double(root_l, char, true)
end
end
local function get_pres_stem_endings_gem(args, root_l, char, short_a)
if root_l == "א" then
args["pres_ms_stem"] = args["pres_ms_stem"] or append_parts(char == "a" and "ָ" or stressed_gem_vowel[char], "א")
args["pres_suf_stem"] = args["pres_suf_stem"] or get_form_double("א", char)
else
args["pres_ms_stem"] = args["pres_ms_stem"] or append_parts(char == "a" and (not short_a) and "ָ" or stressed_gem_vowel[char], get_form_final(root_l, char))
args["pres_suf_stem"] = args["pres_suf_stem"] or get_form_double(root_l, char, true)
end
end
local function get_past_stem_endings_gem(args, root_l, char)
if root_l == "א" then
args["past_stem"] = args["past_stem"] or append_parts(char == "a" and "ָ" or stressed_gem_vowel[char], "א")
args["past_3ms_stem"] = args["past_3ms_stem"] or append_parts(char == "a" and "ָ" or stressed_gem_vowel[char], "א")
args["past_3_stem"] = args["past_3_stem"] or get_form_double("א", char)
else
args["past_stem"] = args["past_stem"] or append_parts((char == "u" or char == "o") and {"ו", "ֹ"} or "ַ", get_form_medial(root_l), "ְ")
args["past_2p_stem"] = args["past_2p_stem"] or append_parts((char == "u" or char == "o") and {"ו", "ָ"} or "ַ", get_form_medial(root_l), "ְ")
args["past_3ms_stem"] = args["past_3ms_stem"] or append_parts(stressed_gem_vowel[char], get_form_final(root_l, char))
args["past_3_stem"] = args["past_3_stem"] or get_form_double(root_l, char, true, true)
args["past_long_stem"] = args["past_long_stem"] or get_form_double(root_l, char, true)
end
end
get_stems_for["pa"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["root_a"]
local root_l = args["root_l"]
if args["hollow"] ~= "-" then
local past_char = args["past_char"] or "A"
local fut_char = args["fut_char"] or (root_a == "י" and "I") or "U"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or past_char
local prefix_vowel = (fut_char == "O" and past_char == "O" and args["prefix_e"] ~= "-") and "ֵ" or "ָ"
args["inf"] = args["inf"] or append_parts("ל", prefix_vowel, get_form_medial(root_p), char_vowel[inf_char], get_form_final(root_l, inf_char))
args["noun"] = args["noun"] or append_parts(get_form_initial(root_p), "ִי", get_form_medial(root_l), "ָה")
args["imp_pre_stem"] = args["imp_pre_stem"] or get_form_initial(root_p)
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts(prefix_vowel, get_form_medial(root_p))
args["fut_long_pre_stem"] = args["fut_long_pre_stem"] or append_parts("ְ", get_form_medial(root_p))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, gutturals[root_p], true)
get_fut_stem_endings(args, root_l, fut_char, gutturals[root_p])
args["pres_pre_stem"] = args["pres_pre_stem"] or get_form_initial(root_p)
get_pres_stem_endings(args, root_l, pres_char, gutturals[root_p], false, false)
args["past_pre_stem"] = args["past_pre_stem"] or get_form_initial(root_p)
get_past_stem_endings(args, root_l, past_char, gutturals[root_p], true, false)
elseif false then
-- reserved for special cases
else
local past_char = args["past_char"] or "a"
local fut_char = args["fut_char"]
local imp_char = args["imp_char"]
local inf_char = args["inf_char"]
local pres_char = args["pres_char"]
local if_ = nil
local ef_ = nil
local suf_if_ = nil
if args["assim"] ~= "-" then
fut_char = fut_char or ((args["elide"] ~= "-" or gutturals[root_l]) and "a") or "u"
if_ = get_form_double(root_a, "i", true)
ef_ = get_form_double(root_a, "e", true)
elseif args["elide"] ~= "-" then
if root_p == "א" then
fut_char = fut_char or "a"
if_ = append_parts("ֹא", get_form_medial(root_a))
ef_ = append_parts({"ו", "ֹ"}, get_form_medial(root_a))
else
fut_char = fut_char or (gutturals[root_l] and root_l ~= "א" and "a") or "i"
if_ = append_parts("ֵ", get_form_medial(root_a))
end
elseif monophthongize[root_p] then
fut_char = fut_char or "a"
if_ = append_parts("ִי", get_form_medial(root_a))
elseif gutturals[root_p] then
fut_char = fut_char or ((gutturals[root_l] or gutturals[root_a]) and "a") or "u"
local v1 = (root_p == "א" or (root_l == "י" and root_p ~= "ע") or (root_l ~= "י" and fut_char == "a")) and "ֶ" or "ַ"
if args["nochataf"] then
if root_a == "י" then v1 = "ִ" end
if_ = append_parts(v1, get_form_medial(root_p), "ְ", get_form_initial(root_a))
ef_ = append_parts("ֶ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
else
local v2 = v1 == "ֶ" and "ֱ" or "ֲ"
if_ = append_parts(v1, get_form_medial(root_p), v2, get_form_medial(root_a))
ef_ = append_parts("ֶ", get_form_medial(root_p), "ֱ", get_form_medial(root_a))
suf_if_ = append_parts(v1, get_form_medial(root_p), v1, get_form_medial(root_a))
end
else
fut_char = fut_char or ((gutturals[root_l] or gutturals[root_a]) and "a") or "u"
if_ = append_parts("ִ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
ef_ = append_parts("ֶ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
end
local inf_if_ = nil
local p_ = nil
if args["elide"] ~= "-" and root_p ~= "א" then
inf_char = inf_char or "i"
imp_char = imp_char or fut_char
args["inf"] = args["inf"] or append_parts("לָ", get_form_medial(root_a), get_elet_ending(root_l))
p_ = get_form_initial(root_a)
elseif gutturals[root_p] then
inf_char = inf_char or "u"
imp_char = imp_char or (root_p == "א" and args["elide"] ~= "-" and (((gutturals[root_l] or gutturals[root_a]) and "a") or "u")) or fut_char
local v1 = (root_p == "א" or (root_l ~= "י" and inf_char == "a")) and "ֶ" or "ַ"
if args["nochataf"] then
if root_a == "י" then v1 = "ִ" end
inf_if_ = append_parts(v1, get_form_medial(root_p), "ְ", get_form_initial(root_a))
else
local v2 = v1 == "ֶ" and "ֱ" or "ֲ"
inf_if_ = append_parts(v1, get_form_medial(root_p), v2, get_form_medial(root_a))
end
p_ = append_parts(get_form_initial(root_p), root_p == "א" and "ֱ" or "ֲ", get_form_medial(root_a))
if root_l ~= "י" and root_p == "א" and gutturals[root_a] then
args["imp_prs_stem"] = args["imp_prs_stem"] or append_parts(get_form_initial(root_p), "ֶ", get_form_medial(root_a))
args["imp_suf_stem"] = args["imp_suf_stem"] or append_parts("ֱ", get_form_medial(root_l))
end
else
inf_char = inf_char or "u"
imp_char = imp_char or fut_char
inf_if_ = if_
p_ = append_parts(get_form_initial(root_p), shva_na(root_p), get_form_medial(root_a))
end
args["inf"] = args["inf"] or append_parts("ל", inf_if_, root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
args["noun"] = args["noun"] or append_parts(get_form_initial(root_p), shva_na(root_p), get_form_medial(root_a), "ִי", root_l == "י" and "ּ" or get_form_medial(root_l), "ָה")
args["pp"] = args["pp"] or append_parts(get_form_initial(root_p), "ָ", get_form_medial(root_a), "וּ", get_form_final(root_l, "U"))
args["imp_pre_stem"] = args["imp_pre_stem"] or p_
if root_l ~= "י" and (args["elide"] == "-" or root_p == "א") then
if gutturals[root_a] then
args["imp_prs_stem"] = args["imp_prs_stem"] or append_parts(get_form_initial(root_p), "ַ", get_form_medial(root_a))
if imp_char ~= "u" and imp_char ~= "i" then
args["imp_long_pre_stem"] = args["imp_long_pre_stem"] or args["imp_pre_stem"]
end
args["imp_suf_stem"] = args["imp_suf_stem"] or append_parts("ֲ", get_form_medial(root_l))
else
args["imp_prs_stem"] = args["imp_prs_stem"] or append_parts(get_form_initial(root_p), "ִ", get_form_medial(root_a))
end
end
args["fut_pre_stem"] = args["fut_pre_stem"] or if_
args["fut_1sp_stem"] = args["fut_1sp_stem"] or ef_
if root_l ~= "י" then
args["fut_prs_stem"] = args["fut_prs_stem"] or suf_if_
end
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a))
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
if args["pres_short"] and args["pres_short"] ~= "" then
-- pa`el
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts(get_form_initial(root_p), "ָ", get_form_medial(root_a))
if root_l ~= "י" then
args["pres_prs_stem"] = args["pres_prs_stem"] or append_parts(get_form_initial(root_p), shva_na(root_p), get_form_medial(root_a))
end
get_pres_stem_endings(args, root_l, pres_char or "E", ends_in_guttural(root_a), false, false)
else
-- po`el
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts(get_form_initial(root_p), "וֹ", get_form_medial(root_a))
get_pres_stem_endings(args, root_l, pres_char or "i", ends_in_guttural(root_a), true, false)
end
args["past_pre_stem"] = args["past_pre_stem"] or append_parts(get_form_initial(root_p), "ָ", get_form_medial(root_a))
args["past_2p_pre_stem"] = args["past_2p_pre_stem"] or append_parts(get_form_initial(root_p), shva_na(root_p), get_form_medial(root_a))
if past_char == "i" or past_char == "u" then
args["past_long_pre_stem"] = args["past_long_pre_stem"] or append_parts(get_form_initial(root_p), gutturals[root_a] and "ַ" or "ִ", get_form_medial(root_a))
end
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), true, false)
end
end
get_stems_for["pi"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["root_a"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "i"
local fut_char = args["fut_char"] or "i"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or "i"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
args["inf"] = args["inf"] or append_parts("לְ", get_form_medial(root_p), get_form_double(root_a, "a"), root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
args["noun"] = args["noun"] or append_parts(get_form_initial(root_p), get_form_double(root_a, "i"), "וּ", get_form_final(root_l, "U"))
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts(get_form_initial(root_p), get_form_double(root_a, "a"))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ְ", get_form_medial(root_p), get_form_double(root_a, "a"))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts("ֲ", get_form_medial(root_p), get_form_double(root_a, "a"))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a))
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מְ", get_form_medial(root_p), get_form_double(root_a, "a"))
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts(get_form_initial(root_p), get_form_double(root_a, "i"))
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, false)
end
end
get_stems_for["po"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["hollow"] == "-" and args["root_a"] or args["root_l"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "i"
local fut_char = args["fut_char"] or "i"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or "i"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
args["inf"] = args["inf"] or append_parts("לְ", get_form_medial(root_p), "וֹ", get_form_medial(root_a), root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
-- args["noun"] = args["noun"] or append_parts(get_form_initial(root_p), "וֹ", get_form_medial(root_a), shva_na(root_a), get_form_medial(root_l), "וּת")
args["noun"] = args["noun"] or append_parts(get_form_initial(root_p), "ִי", get_form_medial(root_a), "וּ", get_form_final(root_l, "U"))
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts(get_form_initial(root_p), "וֹ", get_form_medial(root_a))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ְ", get_form_medial(root_p), "וֹ", get_form_medial(root_a))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts("ֲ", get_form_medial(root_p), "וֹ", get_form_medial(root_a))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a))
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מְ", get_form_medial(root_p), "וֹ", get_form_medial(root_a))
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts(get_form_initial(root_p), "וֹ", get_form_medial(root_a))
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, false)
end
end
get_stems_for["pu"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["root_a"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "a"
local fut_char = args["fut_char"] or "a"
local pres_char = args["pres_char"] or "a"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
args["imp"] = args["imp"] or "-"
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ְ", get_form_medial(root_p), get_form_double(root_a, "u"))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts("ֲ", get_form_medial(root_p), get_form_double(root_a, "u"))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מְ", get_form_medial(root_p), get_form_double(root_a, "u"))
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts(get_form_initial(root_p), get_form_double(root_a, "u"))
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
get_stems_for["poal"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["hollow"] == "-" and args["root_a"] or args["root_l"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "a"
local fut_char = args["fut_char"] or "a"
local pres_char = args["pres_char"] or "a"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
args["imp"] = args["imp"] or "-"
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ְ", get_form_medial(root_p), "וֹ", get_form_medial(root_a))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts("ֲ", get_form_medial(root_p), "וֹ", get_form_medial(root_a))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מְ", get_form_medial(root_p), "וֹ", get_form_medial(root_a))
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts(get_form_initial(root_p), "וֹ", get_form_medial(root_a))
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
get_stems_for["hif"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["root_a"]
local root_l = args["root_l"]
local past_char = args["past_char"] or args["geminate"] ~= "-" and "i" or "I"
local fut_char = args["fut_char"] or args["geminate"] ~= "-" and "i" or "I"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or args["geminate"] ~= "-" and "i" or "I"
if args["hollow"] ~= "-" then
args["inf"] = args["inf"] or append_parts("לְהָ", get_form_medial(root_p), char_vowel[inf_char], get_form_final(root_l, inf_char))
args["noun"] = args["noun"] or append_parts(gutturals[root_p] and "הֶ" or "הֲ", get_form_medial(root_p), "ָ", get_form_medial(root_l), "ָה")
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts("הָ", get_form_medial(root_p))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ָ", get_form_medial(root_p))
args["imp_long_pre_stem"] = args["imp_long_pre_stem"] or append_parts(gutturals[root_p] and "הַ" or "הֲ", get_form_medial(root_p))
args["fut_long_pre_stem"] = args["fut_long_pre_stem"] or append_parts("ְ", get_form_medial(root_p))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, gutturals[root_p], false, true)
get_fut_stem_endings(args, root_l, fut_char, gutturals[root_p])
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מֵ", get_form_medial(root_p))
args["pres_prs_stem"] = args["pres_prs_stem"] or append_parts("מְ", get_form_medial(root_p))
get_pres_stem_endings(args, root_l, pres_char, gutturals[root_p], false, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("הֵ", get_form_medial(root_p))
args["past_2p_pre_stem"] = args["past_2p_pre_stem"] or append_parts(gutturals[root_p] and "הַ" or "הֲ", get_form_medial(root_p))
get_past_stem_endings(args, root_l, past_char, gutturals[root_p], false, true)
elseif args["geminate"] ~= "-" then
args["inf"] = args["inf"] or append_parts("לְהָ", get_form_medial(root_p), char_vowel[inf_char], get_form_final(root_l, inf_char))
--- args["noun"] = args["noun"] or append_parts(gutturals[root_p] and (non_doubling_letters[root_l] and "הֶ" or "הַ") or "הֲ", get_form_medial(root_p), get_form_double(root_l, "a", true), "ָה")
args["noun"] = args["noun"] or append_parts(gutturals[root_p] and "הֶ" or "הֲ", get_form_medial(root_p), "ָ", get_form_medial(root_l), "ָה")
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts("הָ", get_form_medial(root_p))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ָ", get_form_medial(root_p))
args["imp_long_pre_stem"] = args["imp_long_pre_stem"] or append_parts(gutturals[root_p] and "הַ" or "הֲ", get_form_medial(root_p))
args["fut_long_pre_stem"] = args["fut_long_pre_stem"] or append_parts("ְ", get_form_medial(root_p))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings_gem(args, root_l, imp_char)
get_fut_stem_endings_gem(args, root_l, fut_char)
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מֵ", get_form_medial(root_p))
args["pres_prs_stem"] = args["pres_prs_stem"] or append_parts("מְ", get_form_medial(root_p))
get_pres_stem_endings_gem(args, root_l, pres_char)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("הֵ", get_form_medial(root_p))
args["past_2p_pre_stem"] = args["past_2p_pre_stem"] or append_parts(gutturals[root_p] and "הַ" or "הֲ", get_form_medial(root_p))
get_past_stem_endings_gem(args, root_l, past_char)
elseif false then
-- reserved for special cases
else
local af_ = nil
local if_ = nil
if args["assim"] ~= "-" then
af_ = append_parts(gutturals[root_a] and "ָ" or "ַ", add_dagesh(root_a))
if_ = append_parts(gutturals[root_a] and "ֵ" or "ִ", add_dagesh(root_a))
elseif monophthongize[root_p] then
af_ = append_parts(monophthongize[root_p], get_form_medial(root_a))
if_ = af_
elseif gutturals[root_p] then
if args["nochataf"] then
af_ = append_parts("ַ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
if_ = append_parts("ֶ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
else
af_ = append_parts("ַ", get_form_medial(root_p), "ֲ", get_form_medial(root_a))
if_ = append_parts("ֶ", get_form_medial(root_p), "ֱ", get_form_medial(root_a))
end
else
af_ = append_parts("ַ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
if_ = append_parts(root_a == "א" and root_l == "י" and "ֶ" or "ִ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
end
args["inf"] = args["inf"] or append_parts("לְה", af_, root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
args["noun"] = args["noun"] or append_parts("ה", af_, "ָ", get_form_medial(root_l), "ָה")
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts("ה", af_)
args["fut_pre_stem"] = args["fut_pre_stem"] or af_
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a), false, args["assim"] ~= "-")
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מ", af_)
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), false, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("ה", if_)
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
get_stems_for["huf"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["root_a"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "a"
local fut_char = args["fut_char"] or "a"
local pres_char = args["pres_char"] or "a"
if args["hollow"] ~= "-" then
args["imp"] = args["imp"] or "-"
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("וּ", get_form_medial(root_p))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_fut_stem_endings(args, root_l, fut_char, gutturals[root_p])
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מוּ", get_form_medial(root_p))
get_pres_stem_endings(args, root_l, pres_char, gutturals[root_p], true, true)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("הוּ", get_form_medial(root_p))
get_past_stem_endings(args, root_l, past_char, gutturals[root_p], false, true)
elseif args["geminate"] ~= "-" then
args["imp"] = args["imp"] or "-"
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("וּ", get_form_medial(root_p))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_fut_stem_endings_gem(args, root_l, fut_char)
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מוּ", get_form_medial(root_p))
get_pres_stem_endings_gem(args, root_l, pres_char)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("הוּ", get_form_medial(root_p))
get_past_stem_endings_gem(args, root_l, past_char)
elseif false then
-- reserved for special cases
else
local uf_ = nil
if args["assim"] ~= "-" then
uf_ = append_parts({"ו", "ֻ"}, add_dagesh(root_a))
elseif monophthongize[root_p] then
uf_ = append_parts("וּ", get_form_medial(root_a))
elseif gutturals[root_p] then
if args["nochataf"] then
uf_ = append_parts({"ו", "ֻ"}, get_form_medial(root_p), "ְ", get_form_initial(root_a))
else
uf_ = append_parts({"ו", "ָ"}, get_form_medial(root_p), "ֳ", get_form_medial(root_a))
end
else
uf_ = append_parts({"ו", "ֻ"}, get_form_medial(root_p), "ְ", get_form_initial(root_a))
end
args["imp"] = args["imp"] or "-"
args["fut_pre_stem"] = args["fut_pre_stem"] or uf_
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מ", uf_)
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, true)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("ה", uf_)
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
get_stems_for["nif"] = function(args, categories)
local root_p = args["root_p"]
local root_a = args["root_a"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "a"
local fut_char = args["fut_char"] or gutturals[root_l] and root_l ~= "א" and "a" or "i"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or "a"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
local if_ = nil
local suf_if_ = nil
if args["assim"] ~= "-" then
if_ = get_form_double(root_a, "i")
elseif monophthongize[root_p] then
if_ = append_parts(monophthongize[root_p], get_form_medial(root_a))
elseif gutturals[root_p] then
local v1 = root_p == "ע" and root_l == "י" and "ַ" or "ֶ"
if args["nochataf"] then
if_ = append_parts(v1, get_form_medial(root_p), "ְ", get_form_initial(root_a))
else
local v2 = v1 == "ַ" and "ֲ" or "ֱ"
if_ = append_parts(v1, get_form_medial(root_p), v2, get_form_medial(root_a))
suf_if_ = append_parts(v1, get_form_medial(root_p), v1, get_form_medial(root_a))
end
else
if_ = append_parts("ִ", get_form_medial(root_p), "ְ", get_form_initial(root_a))
end
args["inf"] = args["inf"] or append_parts("לְה", get_form_double(root_p, "i", true), "ָ", get_form_medial(root_a), root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
if root_l == "י" then
args["noun"] = args["noun"] or append_parts("ה", get_form_double(root_p, "i", true), "ָ", get_form_medial(root_a), "וּת")
else
args["noun"] = args["noun"] or append_parts("ה", get_form_double(root_p, "i", true), "ָ", get_form_medial(root_a), shva_na(root_a), get_form_medial(root_l), "וּת")
end
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts("ה", get_form_double(root_p, "i", true), "ָ", get_form_medial(root_a))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts(get_form_double(root_p, "i", true), "ָ", get_form_medial(root_a))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts(get_form_double(root_p, "e", true), "ָ", get_form_medial(root_a))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a))
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("נ", if_)
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, true)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("נ", if_)
if suf_if_ then
local pres_stem_name = root_l == "י" and "past_3fs_pre_stem" or "past_3_pre_stem"
args[pres_stem_name] = args[pres_stem_name] or append_parts("נ", suf_if_)
end
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
get_stems_for["hit"] = function(args, categories)
local itp = get_form_itp(args["root_p"])
local etp = get_form_etp(args["root_p"])
local root_a = args["root_a"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "i"
local fut_char = args["fut_char"] or "i"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or "i"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
args["inf"] = args["inf"] or append_parts("לְהִ", itp, get_form_double(root_a, "a"), root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
if root_l == "י" then
args["noun"] = args["noun"] or append_parts("הִ", itp, get_form_double(root_a, "a"), "וּת")
else
args["noun"] = args["noun"] or append_parts("הִ", itp, get_form_double(root_a, "a"), shva_na(root_a), get_form_medial(root_l), "וּת")
end
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts("הִ", itp, get_form_double(root_a, "a"))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ִ", itp, get_form_double(root_a, "a"))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts("ֶ", etp, get_form_double(root_a, "a"))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a))
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מִ", itp, get_form_double(root_a, "a"))
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("הִ", itp, get_form_double(root_a, "a"))
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
get_stems_for["hitpo"] = function(args, categories)
local itp = get_form_itp(args["root_p"])
local etp = get_form_etp(args["root_p"])
local root_a = args["hollow"] == "-" and args["root_a"] or args["root_l"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "i"
local fut_char = args["fut_char"] or "i"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or "i"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
args["inf"] = args["inf"] or append_parts("לְהִ", itp, "וֹ", get_form_medial(root_a), root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
if root_l == "י" then
args["noun"] = args["noun"] or append_parts("הִ", itp, "וֹ", get_form_medial(root_a), "וּת")
else
args["noun"] = args["noun"] or append_parts("הִ", itp, "וֹ", get_form_medial(root_a), shva_na(root_a), get_form_medial(root_l), "וּת")
end
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts("הִ", itp, "וֹ", get_form_medial(root_a))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ִ", itp, "וֹ", get_form_medial(root_a))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts("ֶ", etp, "וֹ", get_form_medial(root_a))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a))
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מִ", itp, "וֹ", get_form_medial(root_a))
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("הִ", itp, "וֹ", get_form_medial(root_a))
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
get_stems_for["hitpu"] = function(args, categories)
--error("Binyan hitpu`al is not yet implemented.")
local itp = get_form_itp(args["root_p"])
local etp = get_form_etp(args["root_p"])
local root_a = args["root_a"]
local root_l = args["root_l"]
local past_char = args["past_char"] or "a"
local fut_char = args["fut_char"] or "a"
local imp_char = args["imp_char"] or fut_char
local inf_char = args["inf_char"] or fut_char
local pres_char = args["pres_char"] or "a"
if false then
-- reserved for special cases
elseif false then
-- reserved for special cases
else
args["inf"] = args["inf"] or append_parts("לְהִ", itp, get_form_double(root_a, "u"), root_l == "י" and "וֹת" or append_parts(char_vowel[inf_char], get_form_final(root_l, inf_char)))
if root_l == "י" then
args["noun"] = args["noun"] or "N/A"
else
args["noun"] = args["noun"] or "N/A"
end
args["imp_pre_stem"] = args["imp_pre_stem"] or append_parts("הִ", itp, get_form_double(root_a, "u"))
args["fut_pre_stem"] = args["fut_pre_stem"] or append_parts("ִ", itp, get_form_double(root_a, "u"))
args["fut_1sp_stem"] = args["fut_1sp_stem"] or append_parts("ֶ", etp, get_form_double(root_a, "u"))
args["fut_mid_stem"] = args["fut_mid_stem"] or ""
get_imp_stem_endings(args, root_l, imp_char, ends_in_guttural(root_a))
get_fut_stem_endings(args, root_l, fut_char, ends_in_guttural(root_a))
args["pres_pre_stem"] = args["pres_pre_stem"] or append_parts("מִ", itp, get_form_double(root_a, "u"))
get_pres_stem_endings(args, root_l, pres_char, ends_in_guttural(root_a), true, false)
args["past_pre_stem"] = args["past_pre_stem"] or append_parts("הִ", itp, get_form_double(root_a, "u"))
get_past_stem_endings(args, root_l, past_char, ends_in_guttural(root_a), false, true)
end
end
local form_names = {
["inf"] = true,
["noun"] = true,
["pp"] = true,
["imp_ms"] = true,
["imp_fs"] = true,
["imp_mp"] = true,
["imp_fp"] = true,
["neg_al"] = "אַל",
["fut_1s"] = true,
["fut_2ms"] = true,
["fut_2fs"] = true,
["fut_3ms"] = true,
["fut_3fs"] = true,
["fut_1p"] = true,
["fut_2mp"] = true,
["fut_2fp"] = true,
["fut_3mp"] = true,
["fut_3fp"] = true,
["past_1s"] = true,
["past_2ms"] = true,
["past_2fs"] = true,
["past_3ms"] = true,
["past_3fs"] = true,
["past_1p"] = true,
["past_2mp"] = true,
["past_2fp"] = true,
["past_3mp"] = true,
["past_3fp"] = true,
["pres_ms"] = true,
["pres_fs"] = true,
["pres_mp"] = true,
["pres_fp"] = true,
}
local optional_forms = {
["inf"] = true,
["noun"] = true,
["pp"] = true,
}
-- Không chắc chắn thuật ngữ non-finite forms và finite forms. Vui lòng kiểm chứng/chỉnh sửa lại phần này nếu cần.
local table_template = [===[
! scope='row' colspan="2" rowspan="{non_finite_count}" class="outer" | dạng không chia thì/không giới hạn
{non_finite}
|-
| class="separator" colspan="999" |
|-
! colspan="2" rowspan="2" class="outer" | dạng giới hạn
! scope='col' colspan="2" | số ít
! scope='col' colspan="2" | số nhiều
|-
! scope='col' class="secondary" | {m}
! scope='col' class="secondary" | {f}
! scope='col' class="secondary" | {m}
! scope='col' class="secondary" | {f}
|-
! scope='row' rowspan="3" | quá khứ
! scope='row' class="secondary" | ngôi thứ nhất
| colspan="2" | {past_1s} || colspan="2" | {past_1p}
|-
! scope='row' class="secondary" | ngôi thứ hai
| {past_2ms} || {past_2fs} || {past_2mp}{2p_tag} || {past_2fp}{2p_tag}
|-
! scope='row' class="secondary" | ngôi thứ ba
| {past_3ms} || {past_3fs} || colspan="2" | {past_3mp}
|-
! scope='row' colspan="2" | hiện tại
| {pres_ms} || {pres_fs} || {pres_mp} || {pres_fp}
|-
! scope='row' rowspan="3" | tương lai
! scope='row' class="secondary" | ngôi thứ nhất
| colspan="2" | {fut_1s} || colspan="2" | {fut_1p}
|-
! scope='row' class="secondary" | ngôi thứ hai
| {fut_2ms} || {fut_2fs} || {fut_2mp} || {fut_2fp}{fp_tag}
|-
! scope='row' class="secondary" | ngôi thứ ba
| {fut_3ms} || {fut_3fs} || {fut_3mp} || {fut_3fp}{fp_tag}
|-
! scope='row' rowspan="2" | mệnh lệnh
! scope='row' class="secondary" | khẳng định
| {imp_ms} || {imp_fs} || {imp_mp} || {imp_fp}{fp_tag}
|-
! scope='row' class="secondary" | phủ định
| scope='row' colspan="4" | {neg_al} + thì tương lai ở ngôi thứ hai
]===]
local non_finite = {
["inf"] = "! colspan=2 scope='row' | nguyên mẫu\n| colspan=2 | {inf}\n|-\n",
["noun"] = "! colspan=2 scope='row' | danh từ hành động\n| colspan=2 | {noun}\n|-\n",
["pp"] = "! colspan=2 scope='row' | phân từ bị động\n| colspan=2 | {pp}\n|-\n",
}
local function make_table(args)
for key, _ in pairs(form_names) do
args[key] = args[key] and gen_link(args[key]) or (not optional_forms[key]) and "—"
end
args["non_finite"] = m_strutils.format(non_finite["inf"], args)
local nfcount = 1
if args["noun"] then
args["non_finite"] = args["non_finite"] .. m_strutils.format(non_finite["noun"], args)
nfcount = nfcount + 1
end
if args["pp"] then
args["non_finite"] = args["non_finite"] .. m_strutils.format(non_finite["pp"], args)
nfcount = nfcount + 1
end
args["non_finite_count"] = tostring(nfcount)
local gn = require("Module:gender and number")
args["m"] = gn.format_genders({"m"})
args["f"] = gn.format_genders({"f"})
return m_strutils.format(table_template, args)
end
local function track(binyan, args)
local sub = nil
local hollow = args["hollow"] ~= "-"
local assim = args["assim"] ~= "-"
local elide = args["elide"] ~= "-" and binyan == "pa" -- elide is only relevant to pa`al I think
local geminate = args["geminate"] ~= "-"
if binyan == "pa" or binyan == "nif" or binyan == "hif" or binyan == "huf" then
if hollow then
if assim or elide or geminate then
sub = "?"
else
sub = "hollow"
end
elseif elide then
if geminate then
sub = "?"
elseif assim then
sub = "assim+elide"
else
sub = "elide"
end
elseif geminate then
if assim then
sub = "geminate+assim"
else
sub = "geminate"
end
elseif assim then
sub = "assim"
end
end
local m_debug = require('Module:debug')
m_debug.track("he-conj/" .. binyan .. (sub and ("/" .. sub) or ""))
if sub == "?" then
m_debug.track("he-conj/incompatible-combination")
end
if args["past_long"] and args["past_long"] ~= "-" then
m_debug.track("he-conj/past_long")
end
if args["past_long"] and args["fp_long"] ~= "-" then
m_debug.track("he-conj/fp_long")
end
end
local function track_page(lemma)
local namespace = mw.title.getCurrentTitle().nsText
if namespace == "" then
local pagename = mw.loadData("Module:headword/data").pagename
local is_table = (type(lemma) == "table")
local male = lang:stripDiacritics(is_table and lemma[1] or lemma)
if pagename ~= male then
local haser = lang:stripDiacritics(is_table and lemma[2] or lemma)
local m_debug = require('Module:debug')
if pagename ~= haser then
m_debug.track("he-conj/not_at_lemma")
else
m_debug.track("he-conj/at_haser_spelling")
end
end
end
end
-- Generates the actual template
local function generate(args, categories, frame)
args["neg_al"] = "אַל"
local pre_notes = ""
if args["past_2mp2"] and not equal(args["past_2mp"], args["past_2mp2"]) then
args["2p_tag"] = "<sup>1</sup>"
args["fp_tag"] = "<sup>2</sup>"
pre_notes = pre_notes .. "<sup>1</sup> Dễ thấy ở " .. gen_link(args["past_2mp2"]) .. " và " .. gen_link(args["past_2fp2"]) .. " đối với tiếng Do Thái hiện đại ở dạng không trang trọng.<br><sup>2</sup> Hiếm ở tiếng Do Thái hiện đại.\n"
else
args["2p_tag"] = ""
args["fp_tag"] = "<sup>1</sup>"
pre_notes = pre_notes .. "<sup>1</sup> Hiếm ở tiếng Do Thái hiện đại.\n"
end
args["notes"] = pre_notes .. (args["notes"] or "")
if args["bot"] or "" ~= "" then
return make_bot_list(forms, sep ~= "")
else
track_page(args["past_3ms"])
return m_inflection_table.make_top{
title = args["heading"],
palette = 'blue',
tall = 'yes',
class = 'wide',
} .. make_table(args) .. m_inflection_table.make_bottom{
notes = pre_notes or nil
} .. m_utilities.format_categories(categories, lang)
end
end
-- The main entry point. This function can be invoked from a template.
function export.show(frame)
local args = frame:getParent().args
local binyan = args[1] or frame.args[1] or error("Binyan không được chỉ rõ. Vui lòng thêm tham số đầu tiên để gọi mô đun hoặc bản mẫu.")
-- PAGENAME = mw.loadData("Module:headword/data").pagename
-- NAMESPACE = mw.title.getCurrentTitle().nsText
local categories = {}
parse_root(args)
convert_root(args)
local root_p = args["root_p"]
local root_a = args["root_a"]
local root_l = args["root_l"]
if not (root_p and root_a and root_l) then
error("Missing root letters.")
end
args["hollow"] = args["hollow"] or ((root_a == "י" or root_a == "ו") and root_l ~= "י" and "+") or "-"
args["geminate"] = args["geminate"] or ((root_a == root_l) and root_l ~= "י" and "+") or "-"
args["assim"] = args["assim"] or (args["hollow"] == "-" and args["geminate"] == "-" and root_p == "נ" and not gutturals[root_a] and "+") or "-"
args["elide"] = args["elide"] or (args["geminate"] and (args["assim"] ~= "-" == "-" or root_p == "י" or root_p == "ו") and root_l ~= "י" and "+") or "-"
track(binyan, args)
if binyan == "-" then
-- do nothing, stems are given explicitly
elseif get_stems_for[binyan] then
get_stems_for[binyan](args, categories)
else
error("Unknown binyan code '" .. binyan .. "'")
end
conjugate(args) -- finishes conjugation based on stems from get_stems_for[binyan]
return generate(args, categories, frame)
end
-- Raw entry point for {{he-verb-conjugation}}. This function can be invoked from a template.
function export.show_raw(frame)
-- copy arguments into new table, omitting empty ones
local args = {}
for key, value in pairs(frame.args) do
if value ~= "" then
args[key] = value
end
end
return generate(args, {}, frame)
end
return export
6m77mcx5kzc3e9p04knankppqhsxq3m
𑀪𑀺𑀢𑁆𑀢𑀺
0
402936
2567242
2367575
2026-09-29T06:19:54Z
Hiyuune
50834
/* Danh từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567242
wikitext
text/x-wiki
=={{langname|pi}}==
==={{section|alt}}===
{{pi-alt|Latn=bhitti}}
==={{section|n}}===
{{pi-noun|f}}
# {{pi-sc}}
===={{section|decl}}====
{{pi-decl-noun|g=f}}
=={{langname|sa}}==
==={{section|alternative script}}===
{{sa-alt|Deva=भित्ति}}
==={{section|n}}===
{{sa-noun|f}}
# {{sa-sc}}
=={{langname|pra}}==
==={{section|etym}}===
{{sa-root|भिद्|PIE=bʰeyd|c=1|l=pra}}
{{inh+|pra|sa|भित्ति|𑀪𑀺𑀢𑁆𑀢𑀺}}. Cùng gốc với {{cog|pi|bhitti}}.
==={{section|n}}===
{{pra-noun|g=f|m|j}}
# [[bức tường|Bức tường]].
===={{section|decl}}====
{{pra-mah-decl-noun|f}}
===={{section|desc}}====
{{col-top|2|desc}}
* {{desc|ahr|भित|भीत}}
* {{desc|awa|-}} bhīti, bhitiyā
*: {{desc|awa|भीति|tr=-|sclang=1}}, {{l|awa|भितिया|tr=-}}
*: {{desc|awa|𑂦𑂲𑂞𑂱|tr=-|sclang=1}}, {{l|awa|𑂦𑂱𑂞𑂱𑂨𑂰|tr=-}}
* {{desc|bra|भित्ति|भीत|भीति|भीती}}
* {{desc|bfy|भीती}}
* {{desc|inc-mbn|ভীত}}
** {{desc|bn|ভিত}}
* {{desc|hne|भीती}}
* {{desc|dv|ބިތް}}
* {{desc|inc-ogu|भीति}}
** {{desc|gju|پِھتی|tr=bhitī}}
** {{desc|inc-mgu|भीति}}
*** {{desc|gu|ભીંત}}
** {{desc|mup|भींत}}
** {{desc|mwr|-}}
**: {{desc|mwr|भीत|sclang=1}}, {{l|mwr|भींत}}, {{l|mwr|भीतड़ौ}}
**: {{desc|mwr|𑅫𑅑𑅣|sclang=1}}, {{l|mwr|𑅫𑅑𑅧𑅣}}, {{l|mwr|𑅫𑅑𑅣𑅲𑅒}}
* Hindustan: bhīt
*: {{desc|ur|بِھیتْ|tr=-|sclang=1}}
*: {{desc|hi|भीत|tr=-|sclang=1}}
*: {{desc|hi|𑂦𑂲𑂞|tr=-|sclang=1}}
* {{desc|kok|-}}
*: {{desc|kok|भिंत|sclang=1}}
*: {{desc|kok|ಭಿಂತ್|tr=-|sclang=1}}
* {{desc|mai|-}} bhiti, bhitti, bhīt, bhīti
*: {{desc|mai|भिति|tr=-|sclang=1}}, {{l|mai|भित्ति|tr=-}}, {{l|mai|भीत|tr=-}}, {{l|mai|भीति|tr=-}}
*: {{desc|mai|𑒦𑒱𑒞𑒱|tr=-|sclang=1}}, {{l|mai|𑒦𑒱𑒞𑓂𑒞𑒱|tr=-}}, {{l|mai|𑒦𑒲𑒞|tr=-}}, {{l|mai|𑒦𑒲𑒞𑒱|tr=-}}
* {{desc|omr|-}}
*: {{desc|omr|भिंती|sclang=1}}, {{l|omr|भीत}}
*: {{desc|omr|𑘥𑘲𑘽𑘝𑘲|sclang=1}}, {{l|omr|𑘥𑘲𑘝}}
** {{desc|mr|-}}
**: {{desc|mr|भिंत|sclang=1}}, {{l|mr|भींत}}
**: {{desc|mr|𑘥𑘲𑘽𑘝|sclang=1}}, {{l|mr|𑘥𑘲𑘽𑘝}}
** {{desc|vah|-}} bhīt
**: {{desc|vah|भीत|tr=-|sclang=1}}
**: {{desc|vah|𑘥𑘲𑘝|tr=-|sclang=1}}
* {{desc|inc-opa|ਭਿਤਿ|tr=bhitti}}
** {{desc|pa|ਭਿੱਤ|t=bức tường}}, {{l|pa|ਭਿੱਤੀ}}
** {{desc|pa|بِھتْ|tr=-|sclang=1}}
* {{desc|sd|-}} bhiti
*: {{desc|sd|ڀِتِ|tr=-|sclang=1}}
*: {{desc|sd|भिति|tr=-|sclang=1}}
*: {{desc|sd|𑋖𑋡𑋍𑋡|tr=-|sclang=1}}
* {{desc|si|බිත}}
{{col-bottom}}
==={{section|ref}}===
* {{R:pra:Sheth||652}}
* {{R:inc:WPL|523}}
* {{R:CDIAL|page=542}}
{{topics|pra|Công trình xây dựng}}
c7wvwnrlru1sx5sbhsjdassp3mkwv7h
Mô đun:he-root verbs
828
408799
2567263
2463778
2026-09-29T08:49:11Z
Hiyuune
50834
2567263
Scribunto
text/plain
local export = {}
local concat = table.concat
local insert = table.insert
local m_he_common = require("Module:he-common")
local m_he_verb = require("Module:he-verb")
local m_links = require("Module:links")
local m_param_utils = require("Module:parameter utilities")
local lang = require("Module:languages").getByCode("he")
local binyan_order = {"pa", "nif", "pi", "pu", "hif", "huf", "hit"}
local valid_binyan_codes = concat(binyan_order, ", ")
local binyans = {
pa = {label = "Pa'al", anchor = "pa'al"},
nif = {label = "Nif'al", anchor = "nif'al"},
pi = {label = "Pi'el", anchor = "pi'el"},
pu = {label = "Pu'al", anchor = "pu'al"},
hif = {label = "Hif'il", anchor = "hif'il"},
huf = {label = "Huf'al", anchor = "huf'al"},
hit = {label = "Hitpa'el", anchor = "hitpa'el"},
}
local subslot_order = {"ap", "pp", "an", "inf"}
local subslots = {
an = {label = "danh từ hành động", form = "noun"},
ap = {label = "phân từ chủ động", form = "pres_ms"},
pp = {label = "phân từ bị động", form = "pp"},
inf = {label = "nguyên mẫu", form = "inf"},
}
local param_mods = m_param_utils.construct_param_mods {
{group = "link", include = {"alt", "t", "tr", "pos", "ng", "lit"}},
{group = "l"},
{group = "q"},
{group = "ref"},
{param = {"wv", "dwv"}},
}
local function link_data_copy(data)
local ret = {}
for k, v in pairs(data) do
ret[k] = v
end
return ret
end
local function remove_nikud(term)
return m_he_common.remove_nikud(term)
end
local function is_available_form(form)
return form and form ~= "-" and form ~= "N/A"
end
local function without_term(data)
local ret = link_data_copy(data)
ret.term = nil
return ret
end
local function parse_term_with_modifiers(value, param)
local data = m_param_utils.parse_term_with_inline_modifiers_and_separate_params {
params = {[param] = {required = true}},
param_mods = param_mods,
raw_args = {[param] = value},
termarg = param,
lang = lang,
track_module = "he-root verbs",
}
if not data.term or data.term == "" then
error("Missing term in parameter '" .. param .. "'")
end
return data
end
local function parse_value(value, param)
local data = parse_term_with_modifiers(value, param)
if data.term == "+" then
return {kind = "generate", modifiers = without_term(data)}
end
return {kind = "manual", data = data}
end
local function split_param_name(param)
local base, number = param:match("^([^0-9]+)([0-9]*)$")
if not base then
return nil
end
if number == "" then
number = 1
else
number = tonumber(number)
if number == 1 then
error("Use '" .. base .. "' rather than '" .. base .. "1'")
end
end
return base, number
end
local function default_root()
local ok, data = pcall(mw.loadData, "Module:headword/data")
if ok and data and data.pagename and data.pagename ~= "" then
return data.pagename
end
local ok_title, title = pcall(function() return mw.title.getCurrentTitle() end)
if ok_title and title then
return title.text or title.subpageText or title.fullText
end
return nil
end
local function root_has_bare_shin(root)
return root:gsub("שׁ", ""):gsub("שׂ", ""):find("ש", 1, true) ~= nil
end
local function validate_generated_root(root)
if not root or root == "" then
error("Root has not been specified and could not be inferred from the page title")
end
if root_has_bare_shin(root) then
error("Root '" .. root .. "' contains bare ש; specify shin/sin explicitly with שׁ or שׂ, e.g. using |root=...")
end
end
local function validate_numbered_slot(slot, number, param)
if slot.entries[1] == nil then
error("Numbered alternative parameter '" .. param .. "' has no unnumbered base parameter")
end
if slot.entries[number].kind == "generate" then
error("Generated marker '+' cannot be used in numbered alternative parameter '" .. param .. "'")
end
end
local function validate_dense_numbering(slot)
local n = 1
while slot.entries[n] do
n = n + 1
end
for number, _ in pairs(slot.entries) do
if number > n then
error("Numbered alternatives for parameter '" .. slot.base_param .. "' must not skip numbers")
end
end
end
local function parse_args(raw_args)
local root = nil
local parsed = {}
for _, code in ipairs(binyan_order) do
parsed[code] = {main = {base_param = code, entries = {}}, subslots = {}, conj_args = {}}
for _, subcode in ipairs(subslot_order) do
local base = code .. "-" .. subcode
parsed[code].subslots[subcode] = {base_param = base, entries = {}}
end
end
for param, value in pairs(raw_args) do
if value ~= "" then
if param == "root" then
root = value
elseif type(param) == "number" then
error("Unknown positional parameter '" .. tostring(param) .. "'")
else
local base, number = split_param_name(param)
if not base then
error("Unknown parameter '" .. tostring(param) .. "'")
end
local code, subcode = base:match("^([a-z]+)%-([a-z]+)$")
local slot
if binyans[base] then
code = base
slot = parsed[code].main
elseif code and binyans[code] and subslots[subcode] then
slot = parsed[code].subslots[subcode]
end
if slot then
if slot.entries[number] ~= nil then
error("Parameter '" .. param .. "' was specified more than once")
end
slot.entries[number] = parse_value(value, param)
else
local gen_code, gen_param = param:match("^([a-z]+)%-(.+)$")
if not gen_code or not binyans[gen_code] then
error("Unknown binyan code in parameter '" .. param .. "' (available codes: " .. valid_binyan_codes ..")")
end
if gen_param == "binyan" or gen_param:match("^%d+$") then
error("Parameter '" .. param .. "' cannot override the generated binyan or root")
end
parsed[gen_code].conj_args[gen_param] = value
end
end
end
end
for _, code in ipairs(binyan_order) do
for _, slot in ipairs({parsed[code].main, parsed[code].subslots.an, parsed[code].subslots.ap, parsed[code].subslots.pp, parsed[code].subslots.inf}) do
for number, _ in pairs(slot.entries) do
if number ~= 1 then
validate_numbered_slot(slot, number, slot.base_param .. tostring(number))
end
end
validate_dense_numbering(slot)
end
end
return {root = root, binyans = parsed}
end
local function get_generated_forms(cache, root, code, conj_args)
validate_generated_root(root)
if cache[code] == nil then
local args = {[1] = code, [2] = root}
for k, v in pairs(conj_args or {}) do
args[k] = v
end
cache[code] = m_he_verb.generate_forms(args)
end
return cache[code]
end
local function add_modifiers(data, modifiers)
for k, v in pairs(modifiers or {}) do
if k ~= "lang" then
data[k] = v
end
end
return data
end
local function normalize_link_data(data)
data.show_decorations = true
if data.wv or data.dwv then
return m_he_common.apply_wv_to_link_data(data)
end
if data.term and remove_nikud(data.term) ~= data.term then
if data.alt then
data.term = remove_nikud(data.term)
return data
end
data.wv = data.term
data.term = remove_nikud(data.term)
return m_he_common.apply_wv_to_link_data(data)
end
return data
end
local function link_from_data(data)
return m_links.full_link(normalize_link_data(data))
end
local function link_generated(form, modifiers)
local term, wv, dwv = m_he_verb.generated_form_to_wv_triad(form)
local explicit_alt = modifiers and modifiers.alt
local data = {
lang = lang,
term = term,
wv = not explicit_alt and wv or nil,
dwv = not explicit_alt and dwv or nil,
}
add_modifiers(data, modifiers)
return link_from_data(data)
end
local function generate_term(cache, root, code, form_code, modifiers, conj_args)
local forms = get_generated_forms(cache, root, code, conj_args)
local form = forms[form_code]
if not is_available_form(form) then
error("Could not generate form '" .. form_code .. "' for binyan '" .. code .. "'")
end
return link_generated(form, modifiers)
end
local function manual_terms(slot, start)
local terms = {}
local n = start or 1
while slot.entries[n] do
local entry = slot.entries[n]
if entry.kind ~= "manual" then
error("Internal error: non-manual numbered term")
end
insert(terms, link_from_data(link_data_copy(entry.data)))
n = n + 1
end
return terms
end
local function render_labeled_terms(label, terms)
if #terms == 0 then
return nil
end
return "** " .. label .. ": " .. concat(terms, ", ")
end
local function resolve_slot_terms(slot, root, code, form_code, cache, conj_args)
local entry = slot.entries[1]
local terms = {}
if entry then
if entry.kind == "generate" then
insert(terms, generate_term(cache, root, code, form_code, entry.modifiers, conj_args))
for _, term in ipairs(manual_terms(slot, 2)) do
insert(terms, term)
end
elseif entry.kind == "manual" then
terms = manual_terms(slot)
end
end
return terms
end
local function resolve_subslot_terms(slot, subcode, root, code, cache, conj_args)
return resolve_slot_terms(slot, root, code, subslots[subcode].form, cache, conj_args)
end
local function resolve_binyan(code, data, root, cache)
local main_terms = {}
local resolved_subslots = {}
local main = data.main.entries[1]
if main then
main_terms = resolve_slot_terms(data.main, root, code, "past_3ms", cache, data.conj_args)
end
for _, subcode in ipairs(subslot_order) do
local terms = resolve_subslot_terms(data.subslots[subcode], subcode, root, code, cache, data.conj_args)
if #terms > 0 then
insert(resolved_subslots, {label = subslots[subcode].label, terms = terms})
end
end
if #main_terms == 0 and #resolved_subslots == 0 then
return nil
end
return {code = code, main_terms = main_terms, subslots = resolved_subslots}
end
local function render_binyan(resolved)
local b = binyans[resolved.code]
local line = "* [[Phụ lục:Động từ tiếng Do Thái#" .. b.anchor .. "|" .. b.label .. "]]"
if #resolved.main_terms > 0 then
line = line .. ": " .. concat(resolved.main_terms, ", ")
else
line = line .. ":"
end
local sublines = {}
for _, subslot in ipairs(resolved.subslots) do
insert(sublines, render_labeled_terms(subslot.label, subslot.terms))
end
if #sublines > 0 then
line = line .. "\n" .. concat(sublines, "\n")
end
return line
end
function export.show(frame)
local args = frame:getParent().args
local parsed = parse_args(args)
local root = parsed.root or default_root()
local cache = {}
local bullets = {}
for _, code in ipairs(binyan_order) do
local resolved = resolve_binyan(code, parsed.binyans[code], root, cache)
if resolved then
insert(bullets, render_binyan(resolved))
end
end
return concat(bullets, "\n")
end
return export
1j5da49zyqqj1vibk50gite5t6h7enx
ghi đè
0
418462
2567164
2026-09-28T12:23:56Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[ghi|Ghi]] [[thông tin]] [[mới]] vào [[tập tin]] có cùng [[tên]] với một tập tin đã có và [[xoá]] [[hết]] thông tin [[cũ]] của tập tin này.
2567164
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{lb|vi|máy tính}} [[ghi|Ghi]] [[thông tin]] [[mới]] vào [[tập tin]] có cùng [[tên]] với một tập tin đã có và [[xoá]] [[hết]] thông tin [[cũ]] của tập tin này.
===={{ĐM|trans}}====
{{trans-top}}
* {{langname|en}}: {{t|en|overwrite}}
{{trans-bottom}}
{{mẫu}}
oj59cpixtbnhravp9xahr4wg1i4bkl3
danh sách trắng
0
418463
2567166
2026-09-28T12:32:46Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# Một [[danh sách]] các [[địa chỉ]] [[đáng]] [[tin]] được [[chấp nhận]] [[tự động]].
2567166
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{lb|vi|máy tính}} Một [[danh sách]] các [[thông tin]] [[địa chỉ]] [[đáng]] [[tin]] được [[chấp nhận]] [[tự động]].
===={{ĐM|trans}}====
{{trans-top}}
* {{langname|en}}: {{t|en|whitelist}}
{{trans-bottom}}
{{mẫu}}
giwoiq1u45fnrqe9oen4izznnfaosw8
ബ
0
418464
2567170
2026-09-28T13:50:42Z
Lcsnes
40261
Trang mới: “{{minitoc}} {{-Mlym-}} {{character info}} [[Tập tin:ml ബ order.gif|nhỏ|phải]] ==={{ĐM|letter}}=== {{head|mul|Chữ cái|tr=ba}} #Chữ Malayalam ''ba''. =={{langname|all}}== ==={{ĐM|pron}}=== *{{IPA4|all|[b]}} ==={{ĐM|letter}}=== {{head|all|Chữ cái}} #{{n-g|Chữ Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Allar.}} =={{langname|aaf}}== {| class="floatright wikitable" style="text-align:center;" |- ! Malayalam | {{pn}} |- ! Ả Rập…”
2567170
wikitext
text/x-wiki
{{minitoc}}
{{-Mlym-}}
{{character info}}
[[Tập tin:ml ബ order.gif|nhỏ|phải]]
==={{ĐM|letter}}===
{{head|mul|Chữ cái|tr=ba}}
#Chữ Malayalam ''ba''.
=={{langname|all}}==
==={{ĐM|pron}}===
*{{IPA4|all|[b]}}
==={{ĐM|letter}}===
{{head|all|Chữ cái}}
#{{n-g|Chữ Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Allar.}}
=={{langname|aaf}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Malayalam
| {{pn}}
|-
! Ả Rập
| [[ب#Tiếng_Aranadan|ب]]
|-
|}
==={{ĐM|pron}}===
*{{IPA4|aaf|/b/}}
==={{ĐM|letter}}===
{{head|aaf|Chữ cái}}
#Chữ cái thứ 38 trong bộ chữ Malayalam tiếng Aranadan.
#:{{ux|aaf|[[ബെള്ളെം#Tiếng_Aranadan|'''ബെ'''ള്ളെം]]|[[nước]]|inline=1}}
==={{ĐM|see}}===
*{{list helper 2|title=Chữ Malayalam tiếng Aranadan|list={{l-self|aaf|അ|tr=-}}, {{l-self|aaf|ആ|tr=-}}, {{l-self|aaf|ഇ|tr=-}}, {{l-self|aaf|ഈ|tr=-}}, {{l-self|aaf|ഉ|tr=-}}, {{l-self|aaf|ഊ|tr=-}}, {{l-self|aaf|ഋ|tr=-}}, {{l-self|aaf|എ|tr=-}}, {{l-self|aaf|ഏ|tr=-}}, {{l-self|aaf|ഐ|tr=-}}, {{l-self|aaf|ഒ|tr=-}}, {{l-self|aaf|ഓ|tr=-}}, {{l-self|aaf|ഔ|tr=-}}, {{l-self|aaf|അം|tr=-}}, {{l-self|aaf|അഃ|tr=-}}, {{l-self|aaf|ക|tr=-}}, {{l-self|aaf|ഖ|tr=-}}, {{l-self|aaf|ഗ|tr=-}}, {{l-self|aaf|ഘ|tr=-}}, {{l-self|aaf|ങ|tr=-}}, {{l-self|aaf|ച|tr=-}}, {{l-self|aaf|ഛ|tr=-}}, {{l-self|aaf|ജ|tr=-}}, {{l-self|aaf|ഝ|tr=-}}, {{l-self|aaf|ഞ|tr=-}}, {{l-self|aaf|ട|tr=-}}, {{l-self|aaf|ഠ|tr=-}}, {{l-self|aaf|ഡ|tr=-}}, {{l-self|aaf|ഢ|tr=-}}, {{l-self|aaf|ണ|tr=-}}, {{l-self|aaf|ത|tr=-}}, {{l-self|aaf|ഥ|tr=-}}, {{l-self|aaf|ദ|tr=-}}, {{l-self|aaf|ധ|tr=-}}, {{l-self|aaf|ന|tr=-}}, {{l-self|aaf|പ|tr=-}}, {{l-self|aaf|ഫ|tr=-}}, {{l-self|aaf|ബ|tr=-}}, {{l-self|aaf|ഭ|tr=-}}, {{l-self|aaf|മ|tr=-}}, {{l-self|aaf|യ|tr=-}}, {{l-self|aaf|ര|tr=-}}, {{l-self|aaf|ല|tr=-}}, {{l-self|aaf|വ|tr=-}}, {{l-self|aaf|ശ|tr=-}}, {{l-self|aaf|ഷ|tr=-}}, {{l-self|aaf|സ|tr=-}}, {{l-self|aaf|ഹ|tr=-}}, {{l-self|aaf|ള|tr=-}}, {{l-self|aaf|ഴ|tr=-}}, {{l-self|aaf|റ|tr=-}}, {{l-self|aaf|ൺ|tr=-}}, {{l-self|aaf|ൻ|tr=-}}, {{l-self|aaf|ർ|tr=-}}, {{l-self|aaf|ൽ|tr=-}}, {{l-self|aaf|ൾ|tr=-}}}}
=={{langname|bfq}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Tamil
| [[ப#Tiếng_Badaga|ப]]
|-
! Kannada
| [[ಬ#Tiếng_Badaga|ಬ]]
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|bfq|[ba]}}
==={{ĐM|letter}}===
{{head|bfq|Chữ cái}}
#{{n-g|Phụ âm thứ 26 trong tiếng Badaga, viết bằng chữ Malayalam.}}
#:{{ux|bfq|'''ബ'''ഡഗ|{{w|tiếng Badaga}}|inline=1}}
==={{ĐM|see}}===
*{{letters|lang=bfq|sc=Mlym|qual=Chữ Malayalam tiếng Badaga|അ|ആ|ഇ|ഈ|ഉ|ഊ|എ|ഏ|ഒ|ഓ|ക|ഗ|ങ|ച|ജ|ഞ|ട|ഡ|ണ|ത|ദ|ന|പ|ബ|മ|യ|ര|ല|വ|സ|ഹ|ഴ}}
=={{langname|brw}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Kannada
| [[ಬ#Tiếng_Bellara|ಬ]]
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|brw|[bɒ]}}
==={{ĐM|letter}}===
{{head|brw|Chữ cái}}
#{{n-g|Chữ cái thứ 38 trong bảng chữ cái Malayalam tiếng Bellara.}}
#:{{ux|brw|'''ബെ'''ല്ലാരി|[[:Thể loại:Tiếng Bellara|tiếng Bellara]]|inline=1}}
==={{ĐM|see}}===
*{{list helper 2|title=Chữ Malayalam tiếng Bellara|list={{l-self|brw|അ|tr=-}}, {{l-self|brw|ആ|tr=-}}, {{l-self|brw|ഇ|tr=-}}, {{l-self|brw|ഈ|tr=-}}, {{l-self|brw|ഉ|tr=-}}, {{l-self|brw|ഊ|tr=-}}, {{l-self|brw|ഋ|tr=-}}, {{l-self|brw|എ|tr=-}}, {{l-self|brw|ഏ|tr=-}}, {{l-self|brw|ഐ|tr=-}}, {{l-self|brw|ഒ|tr=-}}, {{l-self|brw|ഓ|tr=-}}, {{l-self|brw|ഔ|tr=-}}, {{l-self|brw|അം|tr=-}}, {{l-self|brw|അഃ|tr=-}}, {{l-self|brw|ക|tr=-}}, {{l-self|brw|ഖ|tr=-}}, {{l-self|brw|ഗ|tr=-}}, {{l-self|brw|ഘ|tr=-}}, {{l-self|brw|ങ|tr=-}}, {{l-self|brw|ച|tr=-}}, {{l-self|brw|ഛ|tr=-}}, {{l-self|brw|ജ|tr=-}}, {{l-self|brw|ഝ|tr=-}}, {{l-self|brw|ഞ|tr=-}}, {{l-self|brw|ട|tr=-}}, {{l-self|brw|ഠ|tr=-}}, {{l-self|brw|ഡ|tr=-}}, {{l-self|brw|ഢ|tr=-}}, {{l-self|brw|ണ|tr=-}}, {{l-self|brw|ത|tr=-}}, {{l-self|brw|ഥ|tr=-}}, {{l-self|brw|ദ|tr=-}}, {{l-self|brw|ധ|tr=-}}, {{l-self|brw|ന|tr=-}}, {{l-self|brw|പ|tr=-}}, {{l-self|brw|ഫ|tr=-}}, {{l-self|brw|ബ|tr=-}}, {{l-self|brw|ഭ|tr=-}}, {{l-self|brw|മ|tr=-}}, {{l-self|brw|യ|tr=-}}, {{l-self|brw|ര|tr=-}}, {{l-self|brw|ല|tr=-}}, {{l-self|brw|വ|tr=-}}, {{l-self|brw|ശ|tr=-}}, {{l-self|brw|ഷ|tr=-}}, {{l-self|brw|സ|tr=-}}, {{l-self|brw|ഹ|tr=-}}, {{l-self|brw|ള|tr=-}}, {{l-self|brw|ഴ|tr=-}}, {{l-self|brw|റ|tr=-}}, {{l-self|brw|ൺ|tr=-}}, {{l-self|brw|ൻ|tr=-}}, {{l-self|brw|ർ|tr=-}}, {{l-self|brw|ൽ|tr=-}}, {{l-self|brw|ൾ|tr=-}}}}
=={{langname|kej}}==
==={{ĐM|pron}}===
*{{IPA4|kej|[b]}}
==={{ĐM|letter}}===
{{head|kej|Chữ cái}}
#{{n-g|Chữ Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kadar.}}
=={{langname|wkl}}==
==={{ĐM|pron}}===
*{{IPA|wkl|[b]}}
==={{ĐM|letter}}===
{{head|wkl|Chữ cái}}
#{{n-g|Chữ Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kalanad.}}
=={{langname|kfa}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Kannada
| [[ಬ#Tiếng_Kodava|ಬ]]
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|kfa|[b]}}
==={{ĐM|letter}}===
{{head|kfa|Chữ cái}}
#{{n-g|Phụ âm thứ 19 trong tiếng Kodava, viết bằng chữ Malayalam.}}
#:{{ux|kfa|'''ബ'''ള്ളി|[[cây leo]]|inline=1}}
==={{ĐM|see}}===
*{{list helper 2|title=Chữ Malayalam tiếng Kodava|list={{l-self|kfa|അ}}, {{l-self|kfa|ആ}}, {{l-self|kfa|ഇ}}, {{l-self|kfa|ഈ}}, {{l-self|kfa|ഉ}}, {{l-self|kfa|ഊ}}, {{l-self|kfa|എ}}, {{l-self|kfa|ഏ}}, {{l-self|kfa|ഐ}}, {{l-self|kfa|ഒ}}, {{l-self|kfa|ഓ}}, {{l-self|kfa|ഔ}}, {{l-self|kfa|ക}}, {{l-self|kfa|ഖ}}, {{l-self|kfa|ഗ}}, {{l-self|kfa|ഘ}}, {{l-self|kfa|ങ}}, {{l-self|kfa|ച}}, {{l-self|kfa|ഛ}}, {{l-self|kfa|ജ}}, {{l-self|kfa|ട}}, {{l-self|kfa|ഡ}}, {{l-self|kfa|ണ}}, {{l-self|kfa|ത}}, {{l-self|kfa|ഥ}}, {{l-self|kfa|ദ}}, {{l-self|kfa|ധ}}, {{l-self|kfa|ന}}, {{l-self|kfa|പ}}, {{l-self|kfa|ഫ}}, {{l-self|kfa|ബ}}, {{l-self|kfa|ഭ}}, {{l-self|kfa|മ}}, {{l-self|kfa|യ}}, {{l-self|kfa|ക്യ}}, {{l-self|kfa|ര}}, {{l-self|kfa|ക്ര}}, {{l-self|kfa|ല}}, {{l-self|kfa|വ}}, {{l-self|kfa|ശ}}, {{l-self|kfa|ഷ}}, {{l-self|kfa|സ}}, {{l-self|kfa|ഹ}}, {{l-self|kfa|ള}}, {{l-self|kfa|ക്ഷ}}}}
==={{ĐM|ref}}===
*{{Chú thích web|kfa|author=New Life Computer Institute|entryurl=https://www.bible.com/bible/2045/MAT.1.%25E0%25B2%2595%25E0%25B3%258A%25E0%25B2%25A1%25E0%25B2%25B5|entry=ಮತ್ತಾಯ 1|work=ಕೊಡವ ಬೈಬಲ್।|year=2017}}
=={{langname|kok}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Devanagari
| {{l|kok|ब}}
|-
! Kannada
| {{l|kok|ಬ}}
|-
! Malayalam
| {{pn}}
|-
! Latinh
| {{l|kok|B}} {{l|kok|b}}
|-
! Brahmi
| {{l|kok|𑀩}}
|-
! Modi
| {{l|kok|𑘤}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|kok|[b]}}
==={{ĐM|letter}}===
{{head|kok|Chữ cái}}
#{{n-g|[[phụ âm|Phụ âm]] thứ 23 trong tiếng Konkan, viết bằng chữ Malayalam.}}
#:{{ux|kok|'''ബാ'''ണ|[[mũi tên]]|inline=1}}
==={{ĐM|see}}===
*{{list helper 2|title=Chữ Malayalam tiếng Konkan|list={{l-self|kok|അ}}, {{l-self|kok|ആ}}, {{l-self|kok|ഇ}}, {{l-self|kok|ഈ}}, {{l-self|kok|ഉ}}, {{l-self|kok|ഊ}}, {{l-self|kok|ഋ}}, {{l-self|kok|ൠ}}, {{l-self|kok|ഌ}}, {{l-self|kok|ൡ}}, {{l-self|kok|എ}}, {{l-self|kok|ഏ}}, {{l-self|kok|ഒ}}, {{l-self|kok|ഓ}}, {{l-self|kok|ഐ}}, {{l-self|kok|ഔ}}, {{l-self|kok|ക}}, {{l-self|kok|ഖ}}, {{l-self|kok|ഗ}}, {{l-self|kok|ഘ}}, {{l-self|kok|ങ}}, {{l-self|kok|ച}}, {{l-self|kok|ഛ}}, {{l-self|kok|ജ}}, {{l-self|kok|ഝ}}, {{l-self|kok|ഞ}}, {{l-self|kok|ട}}, {{l-self|kok|ഠ}}, {{l-self|kok|ഡ}}, {{l-self|kok|ഢ}}, {{l-self|kok|ണ}}, {{l-self|kok|ത}}, {{l-self|kok|ഥ}}, {{l-self|kok|ദ}}, {{l-self|kok|ധ}}, {{l-self|kok|ന}}, {{l-self|kok|പ}}, {{l-self|kok|ഫ}}, {{l-self|kok|ബ}}, {{l-self|kok|ഭ}}, {{l-self|kok|മ}}, {{l-self|kok|യ}}, {{l-self|kok|ര}}, {{l-self|kok|ല}}, {{l-self|kok|വ}}, {{l-self|kok|ശ}}, {{l-self|kok|ഷ}}, {{l-self|kok|സ}}, {{l-self|kok|ഹ}}, {{l-self|kok|ള}}, {{l-self|kok|ക്ശ}}, {{l-self|kok|ജ്ഞ}}}}
==={{ĐM|ref}}===
*{{Chú thích sách|author=Angelus Francis Xavier Maffei|title=Konkani-English Dictionary|year=1990|page=80|pageurl=https://archive.org/details/konkanienglishdi0000ange/page/80|location=New Delhi - Madras|publisher=Asian Educational Services}}
=={{langname|kfg}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Kannada
| [[ಬ#Tiếng_Kudiya|ಬ]]
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|kfg|[b]}}
==={{ĐM|letter}}===
{{head|kfg|Chữ cái}}
#{{n-g|Chữ Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kudiya.}}
=={{langname|wku}}==
==={{ĐM|pron}}===
*{{IPA4|wku|[b]}}
==={{ĐM|letter}}===
{{head|wku|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kunduvadi.}}
=={{langname|kfh}}==
==={{ĐM|pron}}===
*{{IPA4|kfh|[b]}}
==={{ĐM|letter}}===
{{head|kfh|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kurichiya.}}
=={{langname|pkr}}==
==={{ĐM|pron}}===
*{{IPA4|pkr|[b]}}
==={{ĐM|letter}}===
{{head|pkr|Chữ cái}}
#{{n-g|Chữ cái Malayalam thể hiện phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kurumba Attapady.}}
#:{{ux|pkr|'''ബെ്'''ളിപട്ട കാര്യ|[[s:Khải huyền|Khải huyền]]|inline=1}}
==={{ĐM|ref}}===
*{{Chú thích web|pkr|author=New Life Computer Institute|entryurl=https://www.bible.com/bible/3165/REV.1.%E0%B4%B8%E0%B4%BE%E0%B4%AE%E0%B4%BF%20%E0%B4%B8%E0%B5%87%E0%B4%A6%E0%B4%BF|entry=ബെ്ളിപട്ട കാര്യ 1|work=സാമിദ് സേദി|year=2025}}
=={{langname|xub}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Kannada
| [[ಬ#Tiếng_Kurumba_Betta|ಬ]]
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|xub|[ba]}}
==={{ĐM|letter}}===
{{head|xub|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kurumba Betta.}}
#:{{ux|xub|കുരും'''ബ'''|người Kurumba|inline=1}}
=={{langname|kpb}}==
==={{ĐM|pron}}===
*{{IPA4|kpb|[b]}}
==={{ĐM|letter}}===
{{head|kpb|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Kurumba Mullu.}}
=={{langname|mjo}}==
==={{ĐM|pron}}===
*{{IPA4|mjo|[b]}}
==={{ĐM|letter}}===
{{head|mjo|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Malankurava.}}
=={{langname|mjq}}==
==={{ĐM|pron}}===
*{{IPA4|mjq|[b]}}
==={{ĐM|letter}}===
{{head|mjq|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Malarya.}}
=={{langname|mjr}}==
==={{ĐM|pron}}===
*{{IPA4|mjr|[b]}}
==={{ĐM|letter}}===
{{head|mjr|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Malavedan.}}
=={{langname|ml}}==
{{wp|ml:}}
==={{ĐM|pron}}===
*{{mal-IPA}}
*{{audio|ml|LL-Q36236 (mal)-Vis M-ബ.wav|Âm thanh}}
*{{audio|ml|LL-Q36236 (mal)-BhagyaMohan-ബ.wav|Âm thanh}}
==={{ĐM|letter}}===
{{head|ml|Chữ cái}}
#Chữ cái thứ 37 trong bảng chữ cái Malayalam.
#:{{ux|ml|[[ഹിജാബ്#Tiếng_Malayalam|ഹിജാ'''ബ്''']]|{{w|Hijab}}|inline=1}}
==={{ĐM|see}}===
*{{list helper 2|title=Bảng chữ cái Malayalam|list={{l-self|ml|അ|tr=-}}, {{l-self|ml|ആ|tr=-}}, {{l-self|ml|ഇ|tr=-}}, {{l-self|ml|ഈ|tr=-}}, {{l-self|ml|ഉ|tr=-}}, {{l-self|ml|ഊ|tr=-}}, {{l-self|ml|ഋ|tr=-}}, {{l-self|ml|എ|tr=-}}, {{l-self|ml|ഏ|tr=-}}, {{l-self|ml|ഐ|tr=-}}, {{l-self|ml|ഒ|tr=-}}, {{l-self|ml|ഓ|tr=-}}, {{l-self|ml|ഔ|tr=-}}, {{l-self|ml|അം|tr=-}}, {{l-self|ml|അഃ|tr=-}}, {{l-self|ml|ക|tr=-}}, {{l-self|ml|ഖ|tr=-}}, {{l-self|ml|ഗ|tr=-}}, {{l-self|ml|ഘ|tr=-}}, {{l-self|ml|ങ|tr=-}}, {{l-self|ml|ച|tr=-}}, {{l-self|ml|ഛ|tr=-}}, {{l-self|ml|ജ|tr=-}}, {{l-self|ml|ഝ|tr=-}}, {{l-self|ml|ഞ|tr=-}}, {{l-self|ml|ട|tr=-}}, {{l-self|ml|ഠ|tr=-}}, {{l-self|ml|ഡ|tr=-}}, {{l-self|ml|ഢ|tr=-}}, {{l-self|ml|ണ|tr=-}}, {{l-self|ml|ത|tr=-}}, {{l-self|ml|ഥ|tr=-}}, {{l-self|ml|ദ|tr=-}}, {{l-self|ml|ധ|tr=-}}, {{l-self|ml|ന|tr=-}}, {{l-self|ml|പ|tr=-}}, {{l-self|ml|ഫ|tr=-}}, {{l-self|ml|ബ|tr=-}}, {{l-self|ml|ഭ|tr=-}}, {{l-self|ml|മ|tr=-}}, {{l-self|ml|യ|tr=-}}, {{l-self|ml|ര|tr=-}}, {{l-self|ml|ല|tr=-}}, {{l-self|ml|വ|tr=-}}, {{l-self|ml|ശ|tr=-}}, {{l-self|ml|ഷ|tr=-}}, {{l-self|ml|സ|tr=-}}, {{l-self|ml|ഹ|tr=-}}, {{l-self|ml|ള|tr=-}}, {{l-self|ml|ഴ|tr=-}}, {{l-self|ml|റ|tr=-}}, {{l-self|ml|ൺ|tr=-}}, {{l-self|ml|ൻ|tr=-}}, {{l-self|ml|ർ|tr=-}}, {{l-self|ml|ൽ|tr=-}}, {{l-self|ml|ൾ|tr=-}}}}
=={{langname|mjv}}==
==={{ĐM|pron}}===
*{{IPA4|mjv|[b]}}
==={{ĐM|letter}}===
{{head|mjv|Chữ cái}}
#{{n-g|Chữ cái Malayalam thể hiện phụ âm '''{{IPAchar|/b/}}''' trong tiếng Mannan.}}
#:{{ux|mjv|എ'''ബു'''റായര്|[[s:Hê-bơ-rơ|Hê-bơ-rơ]]|inline=1}}
==={{ĐM|ref}}===
*{{Chú thích web|mjv|author=New Life Computer Institute|entryurl=https://www.bible.com/bible/2967/HEB.1.%25E0%25B4%25AE%25E0%25B4%25A8%25E0%25B5%258D%25E0%25B4%25A8%25E0%25B4%25BE%25E0%25B5%25BB|entry=എബുറായര് 1|work=പുതുവൻ ചേതി|year=2025}}
=={{langname|udg}}==
==={{ĐM|pron}}===
*{{IPA4|udg|[b]}}
==={{ĐM|letter}}===
{{head|udg|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Muduga.}}
#:{{ux|udg|'''ബാ'''ഗ|cây [[mã đề]]|inline=1}}
==={{ĐM|ref}}===
*{{Chú thích web|udg|author=New Life Computer Institute|entryurl=https://www.bible.com/bible/3189/ACT.1.%E0%B4%B8%E0%B4%BE%E0%B4%AE%E0%B4%BF%E0%B4%A6%E0%B5%8D%20%E0%B4%B8%E0%B5%87%E0%B4%A6%E0%B4%BF|entry=അപ്പൊസലല 1|work=സാമി സേദി|year=2025}}
=={{langname|pcf}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Devanagari
| [[ब#Tiếng_Paliyan|ब]]
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|pcf|[b]}}
==={{ĐM|letter}}===
{{head|pcf|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Paliyan.}}
#:{{ux|pcf|യാകു'''ബ'''|[[s:Gia-cơ|Gia-cơ]]|inline=1}}
==={{ĐM|ref}}===
*{{Chú thích web|pcf|author=Yisu Por Bherho Karanya Palya Mandli, Rajpur, Barwani, (MP)|entryurl=https://live.bible.is/bible/PCFWFW/JAS/1|entry=याकुब नी चीट्ठी 1|work=The Word for the World International|year=2020}}
=={{langname|pcg}}==
==={{ĐM|pron}}===
*{{IPA4|pcg|[b]}}
==={{ĐM|letter}}===
{{head|pcg|Chữ cái}}
#{{n-g|Chữ cái Malayalam thể hiện phụ âm '''{{IPAchar|/b/}}''' trong tiếng Paniya.}}
#:{{quote|pcg|ചലുമോനുക്കും തന്ന ഉറട്ടി രാകാവുക്കും പുറന്ത മകെയായിന്തു '''ബോ'''വച്ചു. '''ബോ'''വച്ചുക്കും തന്ന ഉറട്ടി രൂത്തുക്കും പുറന്ത മകെയായിന്തു ഓവേതു. ഓവേതുന മകെയായിന്തു ഇച്ചായി.|Sanh-môn bởi Ra-háp sanh Bô-ô. Bô-ô bởi Ru-tơ sanh Ô-bết. Ô-bết sanh Gie-sê; ([[s:Ma-thi-ơ/1#1:5|Ma-thi-ơ 1:5]])}}
==={{ĐM|ref}}===
*{{Chú thích web|pcg|author=New Life Computer Institute|entryurl=https://live.bible.is/bible/PCGNLC/MAT/1|entry=മത്തായി എയുതുത്ത നല്ലവാക്കു 1|work=Bible.is|year=2025}}
=={{langname|sa}}==
==={{ĐM|alt sc}}===
{{sa-alt}}
==={{ĐM|pron}}===
{{san-IPA|ब}}
==={{ĐM|letter}}===
{{head|sa|Chữ cái}}
#Chữ cái thứ 38 trong bảng chữ cái Malayalam tiếng Phạn.
#:{{ux|sa|ഇ'''ബ്രി'''ണഃ|[[s:Hê-bơ-rơ|Hê-bơ-rơ]]|inline=1}}
===={{ĐM|see}}====
*{{list helper 2|title=Chữ Malayalam tiếng Phạn|list={{l-self|sa|അ|tr=-}}, {{l-self|sa|ആ|tr=-}}, {{l-self|sa|ഇ|tr=-}}, {{l-self|sa|ഈ|tr=-}}, {{l-self|sa|ഉ|tr=-}}, {{l-self|sa|ഊ|tr=-}}, {{l-self|sa|ഋ|tr=-}}, {{l-self|sa|എ|tr=-}}, {{l-self|sa|ഏ|tr=-}}, {{l-self|sa|ഐ|tr=-}}, {{l-self|sa|ഒ|tr=-}}, {{l-self|sa|ഓ|tr=-}}, {{l-self|sa|ഔ|tr=-}}, {{l-self|sa|അം|tr=-}}, {{l-self|sa|അഃ|tr=-}}, {{l-self|sa|ക|tr=-}}, {{l-self|sa|ഖ|tr=-}}, {{l-self|sa|ഗ|tr=-}}, {{l-self|sa|ഘ|tr=-}}, {{l-self|sa|ങ|tr=-}}, {{l-self|sa|ച|tr=-}}, {{l-self|sa|ഛ|tr=-}}, {{l-self|sa|ജ|tr=-}}, {{l-self|sa|ഝ|tr=-}}, {{l-self|sa|ഞ|tr=-}}, {{l-self|sa|ട|tr=-}}, {{l-self|sa|ഠ|tr=-}}, {{l-self|sa|ഡ|tr=-}}, {{l-self|sa|ഢ|tr=-}}, {{l-self|sa|ണ|tr=-}}, {{l-self|sa|ത|tr=-}}, {{l-self|sa|ഥ|tr=-}}, {{l-self|sa|ദ|tr=-}}, {{l-self|sa|ധ|tr=-}}, {{l-self|sa|ന|tr=-}}, {{l-self|sa|പ|tr=-}}, {{l-self|sa|ഫ|tr=-}}, {{l-self|sa|ബ|tr=-}}, {{l-self|sa|ഭ|tr=-}}, {{l-self|sa|മ|tr=-}}, {{l-self|sa|യ|tr=-}}, {{l-self|sa|ര|tr=-}}, {{l-self|sa|ല|tr=-}}, {{l-self|sa|വ|tr=-}}, {{l-self|sa|ശ|tr=-}}, {{l-self|sa|ഷ|tr=-}}, {{l-self|sa|സ|tr=-}}, {{l-self|sa|ഹ|tr=-}}, {{l-self|sa|ഴ|tr=-}}, {{l-self|sa|റ|tr=-}}, {{l-self|sa|ൺ|tr=-}}, {{l-self|sa|ൻ|tr=-}}, {{l-self|sa|ർ|tr=-}}, {{l-self|sa|ൽ|tr=-}}, {{l-self|sa|ൾ|tr=-}}}}
==={{ĐM|ref}}===
*{{Chú thích web|sa|author=SanskritBible.in|entryurl=https://www.bible.com/bible/2113/HEB.1.SANML|entry=ഇബ്രിണഃ 1|work=സത്യവേദഃ।|year=1851}}
=={{langname|yea}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Kannada
| [[ಬ#Tiếng_Ravula|ಬ]]
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|yea|[b]}}
==={{ĐM|letter}}===
{{head|yea|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Ravula.}}
#:{{ux|yea|എ'''ബ്ബു'''റായെരക്കു എവുദിന കത്തു|[[s:Hê-bơ-rơ|Hê-bơ-rơ]]|inline=1}}
==={{ĐM|see}}===
*{{list helper 2|title=Chữ Malayalam tiếng Ravula|list={{l-self|yea|അ|tr=-}}, {{l-self|yea|ആ|tr=-}}, {{l-self|yea|ഇ|tr=-}}, {{l-self|yea|ഈ|tr=-}}, {{l-self|yea|ഉ|tr=-}}, {{l-self|yea|ഊ|tr=-}}, {{l-self|yea|എ|tr=-}}, {{l-self|yea|ഏ|tr=-}}, {{l-self|yea|ഒ|tr=-}}, {{l-self|yea|ഓ|tr=-}}, {{l-self|yea|ക|tr=-}}, {{l-self|yea|ഖ|tr=-}}, {{l-self|yea|ഗ|tr=-}}, {{l-self|yea|ഘ|tr=-}}, {{l-self|yea|ങ|tr=-}}, {{l-self|yea|ച|tr=-}}, {{l-self|yea|ഛ|tr=-}}, {{l-self|yea|ജ|tr=-}}, {{l-self|yea|ഝ|tr=-}}, {{l-self|yea|ഞ|tr=-}}, {{l-self|yea|ട|tr=-}}, {{l-self|yea|ഠ|tr=-}}, {{l-self|yea|ഡ|tr=-}}, {{l-self|yea|ഢ|tr=-}}, {{l-self|yea|ണ|tr=-}}, {{l-self|yea|ത|tr=-}}, {{l-self|yea|ഥ|tr=-}}, {{l-self|yea|ദ|tr=-}}, {{l-self|yea|ധ|tr=-}}, {{l-self|yea|ന|tr=-}}, {{l-self|yea|ന്ന|tr=-}}, {{l-self|yea|പ|tr=-}}, {{l-self|yea|ഫ|tr=-}}, {{l-self|yea|ബ|tr=-}}, {{l-self|yea|ഭ|tr=-}}, {{l-self|yea|മ|tr=-}}, {{l-self|yea|യ|tr=-}}, {{l-self|yea|ര|tr=-}}, {{l-self|yea|ല|tr=-}}, {{l-self|yea|വ|tr=-}}, {{l-self|yea|ശ|tr=-}}, {{l-self|yea|ഷ|tr=-}}, {{l-self|yea|സ|tr=-}}, {{l-self|yea|ഹ|tr=-}}, {{l-self|yea|ള|tr=-}}}}
==={{ĐM|ref}}===
*{{Chú thích web|yea|author=New Life Computer Institute|entryurl=https://live.bible.is/bible/YEANLC/HEB/1|entry=എബ്ബുറായെരക്കു എവുദിന കത്തു 1|work=പുദിയ നേമ।|year=2020}}
=={{langname|thn}}==
==={{ĐM|pron}}===
*{{IPA4|thn|[b]}}
==={{ĐM|letter}}===
{{head|thn|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Thachanad}}
=={{langname|tcy}}==
{| class="floatright wikitable" style="text-align:center;"
|-
! Tulu
| {{l|tcy|}}
|-
! Kannada
| {{l|tcy|ಬ}}
|-
! Malayalam
| {{pn}}
|-
|}
==={{ĐM|pron}}===
*{{IPA4|tcy|[bɒ]}}
==={{ĐM|letter}}===
{{head|tcy|Chữ cái}}
#{{n-g|Phụ âm thứ 23 trong tiếng Tulu, viết bằng chữ Malayalam.}}
#:{{ux|tcy|'''ബ'''ർസൊ|[[mưa]]|inline=1}}
==={{ĐM|see}}===
*{{list helper 2|title=Chữ Malayalam tiếng Tulu|list={{l-self|tcy|അ|tr=-}}, {{l-self|tcy|ആ|tr=-}}, {{l-self|tcy|ഇ|tr=-}}, {{l-self|tcy|ഈ|tr=-}}, {{l-self|tcy|ഉ|tr=-}}, {{l-self|tcy|ഊ|tr=-}}, {{l-self|tcy|ഋ|tr=-}}, {{l-self|tcy|ൠ|tr=-}}, {{l-self|tcy|ഌ|tr=-}}, {{l-self|tcy|ൡ|tr=-}}, {{l-self|tcy|എ|tr=-}}, {{l-self|tcy|ഐ|tr=-}}, {{l-self|tcy|ഒ|tr=-}}, {{l-self|tcy|ഔ|tr=-}}, {{l-self|tcy|അം|tr=-}}, {{l-self|tcy|അഃ|tr=-}}, {{l-self|tcy|ക|tr=-}}, {{l-self|tcy|ഖ|tr=-}}, {{l-self|tcy|ഗ|tr=-}}, {{l-self|tcy|ഘ|tr=-}}, {{l-self|tcy|ങ|tr=-}}, {{l-self|tcy|ച|tr=-}}, {{l-self|tcy|ഛ|tr=-}}, {{l-self|tcy|ജ|tr=-}}, {{l-self|tcy|ഝ|tr=-}}, {{l-self|tcy|ഞ|tr=-}}, {{l-self|tcy|ട|tr=-}}, {{l-self|tcy|ഠ|tr=-}}, {{l-self|tcy|ഡ|tr=-}}, {{l-self|tcy|ഢ|tr=-}}, {{l-self|tcy|ണ|tr=-}}, {{l-self|tcy|ത|tr=-}}, {{l-self|tcy|ഥ|tr=-}}, {{l-self|tcy|ദ|tr=-}}, {{l-self|tcy|ധ|tr=-}}, {{l-self|tcy|ന|tr=-}}, {{l-self|tcy|പ|tr=-}}, {{l-self|tcy|ഫ|tr=-}}, {{l-self|tcy|ബ|tr=-}}, {{l-self|tcy|ഭ|tr=-}}, {{l-self|tcy|മ|tr=-}}, {{l-self|tcy|യ|tr=-}}, {{l-self|tcy|ര|tr=-}}, {{l-self|tcy|ല|tr=-}}, {{l-self|tcy|വ|tr=-}}, {{l-self|tcy|ശ|tr=-}}, {{l-self|tcy|ഷ|tr=-}}, {{l-self|tcy|സ|tr=-}}, {{l-self|tcy|ഹ|tr=-}}, {{l-self|tcy|ള|tr=-}}, {{l-self|tcy|ഴ|tr=-}}, {{l-self|tcy|റ|tr=-}}}}
==={{ĐM|ref}}===
*{{Chú thích web|author=Tulu World|work=[https://tuludictionary.in/dictionary/cgi-bin/web/frame.html Online Tulu Dictionary]|year=2024}}
*{{Chú thích web|tcy|author=New Life Computer Institute|work=Mavian Tulu|year=2026|entry=മർക്കോച്ച് എവുദ്ഗ്ന എഡ്ഡ ബാക്ക് 1|entryurl=https://live.bible.is/bible/TCYNLC/MRK/1}}
=={{langname|ull}}==
==={{ĐM|pron}}===
*{{IPA4|ull|[b]}}
==={{ĐM|letter}}===
{{head|ull|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Ullatan.}}
=={{langname|vis}}==
==={{ĐM|pron}}===
*{{IPA4|vis|[b]}}
==={{ĐM|letter}}===
{{head|vis|Chữ cái}}
#{{n-g|Chữ cái Malayalam biểu thị phụ âm '''{{IPAchar|/b/}}''' trong tiếng Vishava.}}
[[Thể loại:Khối ký tự Malayalam|2C]]
ko6gdd51j4uy8zyay0m0ou2c27z9icu
displays
0
418465
2567182
2026-09-28T15:37:38Z
Hiyuune
50834
Trang mới: “=={{langname|en}}== ==={{section|pron}}=== * {{enPR|dĭsplāzʹ}}, {{IPA|en|/dɪsˈpleɪz/}} * {{rhymes|en|eɪz|s=2}} * {{hyph|en|dis|plays}} * {{audio|en|en-us-displays.ogg|a=US}} ==={{section|n}}=== {{head|en|Biến thể hình thái danh từ}} # {{plural of|en|display}} ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|display||s-verb-form}} =={{langname|pt}}== ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}}…”
2567182
wikitext
text/x-wiki
=={{langname|en}}==
==={{section|pron}}===
* {{enPR|dĭsplāzʹ}}, {{IPA|en|/dɪsˈpleɪz/}}
* {{rhymes|en|eɪz|s=2}}
* {{hyph|en|dis|plays}}
* {{audio|en|en-us-displays.ogg|a=US}}
==={{section|n}}===
{{head|en|Biến thể hình thái danh từ}}
# {{plural of|en|display}}
==={{section|v}}===
{{head|en|Biến thể hình thái động từ}}
# {{infl of|en|display||s-verb-form}}
=={{langname|pt}}==
==={{section|n}}===
{{head|pt|Biến thể hình thái danh từ}}
# {{plural of|pt|display}}
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-displays.ogg}}
==={{section|n}}===
{{head|nl|Biến thể hình thái danh từ}}
# {{plural of|nl|display}}
=={{langname|es}}==
==={{section|n}}===
{{head|es|Biến thể hình thái danh từ|g=m-p}}
# {{plural of|es|display}}
jpxa7bd1wwlosatifuytfoawcnw3f8i
displaytje
0
418466
2567183
2026-09-28T15:38:10Z
Hiyuune
50834
Trang mới: “=={{langname|nl}}== ==={{section|pron}}=== * {{audio|nl|Nl-displaytje.ogg}} ==={{section|n}}=== {{nl-noun-dim}} # {{diminutive of|nl|display}}”
2567183
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-displaytje.ogg}}
==={{section|n}}===
{{nl-noun-dim}}
# {{diminutive of|nl|display}}
khb4thn2679g7aoaj1kgvlmdavtkfmi
displaytjes
0
418467
2567184
2026-09-28T15:39:16Z
Hiyuune
50834
+ nl
2567184
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-displaytjes.ogg}}
==={{section|n}}===
{{head|nl|Biến thể hình thái danh từ}}
# {{plural of|nl|displaytje}}
esfnqkdg4y61lxg3ndt05vj2gah3ijl
zẖꜣw
0
418468
2567187
2026-09-28T15:44:30Z
Hiyuune
50834
Trang mới: “=={{langname|egy}}== ==={{section|pron}}=== {{egy-pr |q=singular|o=ˈzaçʀaw|m=ˈsaçʀaw|ml=ˈsaçjə|l=saçi |q2=plural|o2=zaçˈʀaːwaw|m2=saçˈʀaːwaw|ml2=səçˈaːjə|l2=səˈçoːj |ref={{R:egy:Loprieno|58}} }} ==={{section|n}}=== {{egy-noun|m|head=Y4-A1}} # [[thư lại]]. ===={{section|infl}}==== {{egy-decl-noun|g=m|type=a-stem|zẖꜣw}} ===={{section|drv}}==== * {{l|egy|zẖꜣw-n-ṯmꜣ}} ===={{section|desc}}==== * {{desc|cop-akh|ⲥⲁⳉ}} * {{des…”
2567187
wikitext
text/x-wiki
=={{langname|egy}}==
==={{section|pron}}===
{{egy-pr
|q=singular|o=ˈzaçʀaw|m=ˈsaçʀaw|ml=ˈsaçjə|l=saçi
|q2=plural|o2=zaçˈʀaːwaw|m2=saçˈʀaːwaw|ml2=səçˈaːjə|l2=səˈçoːj
|ref={{R:egy:Loprieno|58}}
}}
==={{section|n}}===
{{egy-noun|m|head=Y4-A1}}
# [[thư lại]].
===={{section|infl}}====
{{egy-decl-noun|g=m|type=a-stem|zẖꜣw}}
===={{section|drv}}====
* {{l|egy|zẖꜣw-n-ṯmꜣ}}
===={{section|desc}}====
* {{desc|cop-akh|ⲥⲁⳉ}}
* {{desc|cop-boh|ⲥⲁϧ}}
* {{desc|cop-fay|ⲥⲉϩ}}
* {{desc|cop-lyc|ⲥⲁϩ}}
* {{desc|cop-old|ⲥⲁϩ}}
* {{desc|cop-sah|ⲥⲁϩ}}
==={{section|ref}}===
* {{R:egy:Allen|48, 63}}
{{reflist}}
{{C|egy|Nghề nghiệp}}
ocgvsg774wtslvs60dzkb43tpmbwxsf
2567255
2567187
2026-09-29T07:35:52Z
Hiyuune
50834
/* Cách phát âm */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567255
wikitext
text/x-wiki
=={{langname|egy}}==
==={{section|pron}}===
{{egy-pr
|q=số ít|o=ˈzaçʀaw|m=ˈsaçʀaw|ml=ˈsaçjə|l=saçi
|q2=số nhiều|o2=zaçˈʀaːwaw|m2=saçˈʀaːwaw|ml2=səçˈaːjə|l2=səˈçoːj
|ref={{R:egy:Loprieno|58}}
}}
==={{section|n}}===
{{egy-noun|m|head=Y4-A1}}
# [[thư lại]].
===={{section|infl}}====
{{egy-decl-noun|g=m|type=a-stem|zẖꜣw}}
===={{section|drv}}====
* {{l|egy|zẖꜣw-n-ṯmꜣ}}
===={{section|desc}}====
* {{desc|cop-akh|ⲥⲁⳉ}}
* {{desc|cop-boh|ⲥⲁϧ}}
* {{desc|cop-fay|ⲥⲉϩ}}
* {{desc|cop-lyc|ⲥⲁϩ}}
* {{desc|cop-old|ⲥⲁϩ}}
* {{desc|cop-sah|ⲥⲁϩ}}
==={{section|ref}}===
* {{R:egy:Allen|48, 63}}
{{reflist}}
{{C|egy|Nghề nghiệp}}
22egaa91b6vbftvi027kco5pb8cc8fv
muziekinstrumenten
0
418469
2567189
2026-09-28T15:47:52Z
Hiyuune
50834
Trang mới: “=={{langname|nl}}== ==={{section|pron}}=== * {{audio|nl|Nl-muziekinstrumenten.ogg}} ==={{section|n}}=== {{head|nl|Biến thể hình thái danh từ}} # {{plural of|nl|muziekinstrument}}”
2567189
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-muziekinstrumenten.ogg}}
==={{section|n}}===
{{head|nl|Biến thể hình thái danh từ}}
# {{plural of|nl|muziekinstrument}}
tfawfapygjfb9geogikh8ror7uwjjjp
muziekinstrumentje
0
418470
2567190
2026-09-28T15:48:18Z
Hiyuune
50834
Trang mới: “=={{langname|nl}}== ==={{section|pron}}=== * {{audio|nl|Nl-muziekinstrumentje.ogg}} ==={{section|n}}=== {{nl-noun-dim}} # {{diminutive of|nl|muziekinstrument}}”
2567190
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-muziekinstrumentje.ogg}}
==={{section|n}}===
{{nl-noun-dim}}
# {{diminutive of|nl|muziekinstrument}}
bzghvidmn090d6o6fwvno50vuvtl58t
muziekinstrumentjes
0
418471
2567191
2026-09-28T15:49:22Z
Hiyuune
50834
Trang mới: “=={{langname|nl}}== ==={{section|pron}}=== * {{audio|nl|Nl-muziekinstrumentjes.ogg}} ==={{section|n}}=== {{head|nl|Biến thể hình thái danh từ}} # {{plural of|nl|muziekinstrumentje}}”
2567191
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-muziekinstrumentjes.ogg}}
==={{section|n}}===
{{head|nl|Biến thể hình thái danh từ}}
# {{plural of|nl|muziekinstrumentje}}
gzq0br7gqbyo54kaiyol49zjlmvamec
vergaderingen
0
418472
2567193
2026-09-28T16:03:54Z
Hiyuune
50834
Trang mới: “=={{langname|nl}}== ==={{section|pron}}=== * {{audio|nl|Nl-vergaderingen.ogg}} ==={{section|n}}=== {{head|nl|Biến thể hình thái danh từ}} # {{plural of|nl|vergadering}}”
2567193
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-vergaderingen.ogg}}
==={{section|n}}===
{{head|nl|Biến thể hình thái danh từ}}
# {{plural of|nl|vergadering}}
dkypvyta6m9zgzlov2o71g6b7e1rr4s
vergaderingetje
0
418473
2567194
2026-09-28T16:04:30Z
Hiyuune
50834
Trang mới: “=={{langname|nl}}== ==={{section|pron}}=== * {{audio|nl|Nl-vergaderingetje.ogg}} ==={{section|n}}=== {{nl-noun-dim}} # {{diminutive of|nl|vergadering}}”
2567194
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-vergaderingetje.ogg}}
==={{section|n}}===
{{nl-noun-dim}}
# {{diminutive of|nl|vergadering}}
4zwxu0xqwf76zr7p1ri7plqrwei146c
vergaderingetjes
0
418474
2567195
2026-09-28T16:05:04Z
Hiyuune
50834
+ nl
2567195
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|pron}}===
* {{audio|nl|Nl-vergaderingetjes.ogg}}
==={{section|n}}===
{{head|nl|Biến thể hình thái danh từ}}
# {{plural of|nl|vergaderingetje}}
r2cvya6j5lzic464tpyxamrf9n8v9th
wiskunde-examen
0
418475
2567198
2026-09-28T16:10:47Z
Hiyuune
50834
+ nl
2567198
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|etym}}===
Từ {{affix|nl|wiskunde|examen}}.
==={{section|pron}}===
* {{IPA|nl|/ˈʋɪs.kʏn.də.ɛkˌsaː.mə(n)/}}
* {{audio|nl|Nl-wiskunde-examen.ogg}}
* {{hyphenation|nl|wis|kun|de-|exa|men}}
==={{section|n}}===
{{nl-noun|n|-s|-}}
# [[kỳ thi|Kỳ thi]] hay [[bài]] [[kiểm tra]] môn [[toán]].
2xdnazzqi4lknlk8o2iuo2ipk1xhgzh
wiskundeboek
0
418476
2567199
2026-09-28T16:11:37Z
Hiyuune
50834
+ nl
2567199
wikitext
text/x-wiki
=={{langname|nl}}==
==={{section|etym}}===
Từ {{compound|nl|wiskunde|boek}}.
==={{section|etym}}===
* {{IPA|nl|/ˈʋɪsˌkʏn.dəˌbuk/}}
* {{audio|nl|Nl-wiskundeboek.ogg}}
* {{hyphenation|nl|wis|kun|de|boek}}
==={{section|n}}===
{{nl-noun|n|-en|+}}
# [[sách|Sách]] [[toán]].
dzuuyn2m4wtxc73o1wfmhoo0lxql4m1
Bản mẫu:af-adj-table-3
10
418477
2567202
2026-09-28T16:19:45Z
Hiyuune
50834
Trang mới: “{{inflection-table-top|title=Biến tố của {{m|af||{{{1|{{pagename}}}}}}}|palette=blue|tall=yes}} ! rowspan="2" class="outer" | ! rowspan="2" class="outer" | vị ngữ ! rowspan="2" class="outer" | thuộc tính ! colspan="2" class="outer" | độc lập ! rowspan="2" class="outer" | [[partitive|chiết phân cách]] |- ! số ít ! số nhiều |- ! khẳng định | {{l-self|af|{{{1|{{pagename}}}}}}} | {{l-self|af|{{{attr|{{pagename}}}}}}}{{#if:{{{attr2|}}}|…”
2567202
wikitext
text/x-wiki
{{inflection-table-top|title=Biến tố của {{m|af||{{{1|{{pagename}}}}}}}|palette=blue|tall=yes}}
! rowspan="2" class="outer" |
! rowspan="2" class="outer" | vị ngữ
! rowspan="2" class="outer" | thuộc tính
! colspan="2" class="outer" | độc lập
! rowspan="2" class="outer" | [[partitive|chiết phân cách]]
|-
! số ít
! số nhiều
|-
! khẳng định
| {{l-self|af|{{{1|{{pagename}}}}}}}
| {{l-self|af|{{{attr|{{pagename}}}}}}}{{#if:{{{attr2|}}}|, {{l-self|af|{{{attr2}}}}}}}
| {{l-self|af|{{{indep|{{pagename}}}}}}}{{#if:{{{indep2|}}}|, {{l-self|af|{{{indep2}}}}}}}
| {{l-self|af|{{{indep|{{pagename}}}}}s}}{{#if:{{{indep2|}}}|, {{l-self|af|{{{indep2}}}}}}}
| {{l-self|af|{{{part|{{pagename}}}}}}}{{#if:{{{part2|}}}|, {{l-self|af|{{{part2}}}}}}}
|-
! so sánh hơn
| colspan="2" | {{l-self|af|{{{comp|{{pagename}}er}}}}}{{#if:{{{comp2|}}}|, {{l-self|af|{{{comp2}}}}}}}
| {{l-self|af|{{{comp|{{pagename}}er}}}e}}{{#if:{{{comp2|}}}|, {{l-self|af|{{{comp2}}}e}}}}
| {{l-self|af|{{{comp|{{pagename}}er}}}es}}{{#if:{{{comp2|}}}|, {{l-self|af|{{{comp2}}}es}}}}
| {{l-self|af|{{{comp|{{pagename}}er}}}s}}{{#if:{{{comp2|}}}|, {{l-self|af|{{{comp2}}}s}}}}
|-
! so sánh nhất
| colspan="3" | {{l-self|af|{{{sup|{{pagename}}ste}}}}}{{#if:{{{sup2|}}}|, {{l-self|af|{{{sup2}}}}}}}
| {{l-self|af|{{{sup|{{pagename}}ste}}}s}}{{#if:{{{sup2|}}}|, {{l-self|af|{{{sup2}}}s}}}}
| —
{{inflection-table-bottom}}<noinclude>{{tcat|adecl}}</noinclude>
i1jdtme8wf464g8h2ky1bctbtm4f9mj
Mô đun:dum-adjectives
828
418478
2567204
2026-09-28T16:25:57Z
Hiyuune
50834
Trang mới: “local m_links = require("Module:links") local m_common = require("Module:dum-common") local lang = require("Module:languages").getByCode("dum") local export = {} local m_inflection_table = require("Module:inflection-table") function export.show(frame) local params = { [1] = {required = true, default = "{{{1}}}"}, } local args = require("Module:parameters").process(frame:getParent().args, params) local data = {forms = {}, info = "adjective", categories = {}}…”
2567204
Scribunto
text/plain
local m_links = require("Module:links")
local m_common = require("Module:dum-common")
local lang = require("Module:languages").getByCode("dum")
local export = {}
local m_inflection_table = require("Module:inflection-table")
function export.show(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "adjective", categories = {}}
local stem = mw.ustring.gsub(args[1], "([^aeiouâêîôûāēōë])e$", "%1")
data.forms["m_nom_indf"] = {m_common.devoiced(m_common.checked(args[1]))}
data.forms["m_acc"] = {stem .. "en"}
data.forms["m_dat"] = {stem .. "en"}
data.forms["n_nom_indf"] = {m_common.devoiced(m_common.checked(args[1]))}
data.forms["n_acc_indf"] = {m_common.devoiced(m_common.checked(args[1]))}
data.forms["n_dat"] = {stem .. "en"}
data.forms["p_dat"] = {stem .. "en"}
if mw.ustring.find(args[1], "[aeiouâêîôûāēōë][^aeiouâêîôûāēōë]+e[lnr]$") then
data.forms["m_nom_defn"] = {stem, stem .. "e"}
data.forms["f_nom"] = {stem, stem .. "e"}
data.forms["f_acc"] = {stem, stem .. "e"}
data.forms["n_nom_defn"] = {stem, stem .. "e"}
data.forms["n_acc_defn"] = {stem, stem .. "e"}
data.forms["p_nom"] = {stem, stem .. "e"}
data.forms["p_acc"] = {stem, stem .. "e"}
else
data.forms["m_nom_defn"] = {stem .. "e"}
data.forms["f_nom"] = {stem .. "e"}
data.forms["f_acc"] = {stem .. "e"}
data.forms["n_nom_defn"] = {stem .. "e"}
data.forms["n_acc_defn"] = {stem .. "e"}
data.forms["p_nom"] = {stem .. "e"}
data.forms["p_acc"] = {stem .. "e"}
end
if mw.ustring.find(args[1], "[^aeiouâêîôûāēōë]e$") then
data.forms["m_gen_indf"] = {args[1] .. "s"}
data.forms["n_gen_indf"] = {args[1] .. "s"}
data.forms["m_gen_defn"] = {args[1] .. "s", args[1] .. "n"}
data.forms["n_gen_defn"] = {args[1] .. "s", args[1] .. "n"}
elseif mw.ustring.find(stem, "s$") or mw.ustring.find(stem, "sch$") then
data.forms["m_gen_indf"] = {m_common.checked(stem)}
data.forms["n_gen_indf"] = {m_common.checked(stem)}
data.forms["m_gen_defn"] = {m_common.checked(stem), stem .. "en"}
data.forms["n_gen_defn"] = {m_common.checked(stem), stem .. "en"}
else
data.forms["m_gen_indf"] = {m_common.devoiced(m_common.checked(stem)) .. "s"}
data.forms["n_gen_indf"] = {m_common.devoiced(m_common.checked(stem)) .. "s"}
data.forms["m_gen_defn"] = {m_common.devoiced(m_common.checked(stem)) .. "s", stem .. "en"}
data.forms["n_gen_defn"] = {m_common.devoiced(m_common.checked(stem)) .. "s", stem .. "en"}
end
if mw.ustring.find(stem, "[lnr]$") then
data.forms["f_gen"] = {m_common.checked(args[1]) .. "re"}
data.forms["f_dat"] = {m_common.checked(args[1]) .. "re"}
data.forms["p_gen"] = {m_common.checked(args[1]) .. "re"}
else
data.forms["f_gen"] = {stem .. "er"}
data.forms["f_dat"] = {stem .. "er"}
data.forms["p_gen"] = {stem .. "er"}
end
return make_table(data)
end
-- Make the table
function make_table(data)
local function repl(param)
local form = data.forms[param]
if not form or #form == 0 then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, alt = subform}))
end
return table.concat(ret, ", ")
end
local names = {
["nom"] = "danh cách",
["acc"] = "đối cách",
["gen"] = "sinh cách",
["dat"] = "dữ cách",
["indf"] = "bất định",
["defn"] = "xác định",
}
local cases = {"nom", "acc", "gen", "dat"}
local genders = {"m", "f", "n", "p"}
local defns = {"indf", "defn"}
local wikicode = {}
table.insert(wikicode, m_inflection_table.make_top{
title = mw.getContentLanguage():ucfirst(data.info or ""),
palette = 'indigo',
tall = 'yes',
})
table.insert(wikicode, "! class=\"outer\" colspan=2 |")
table.insert(wikicode, "! class=\"outer\" colspan=3 | số ít")
table.insert(wikicode, "! class=\"outer\" rowspan=2 | số nhiều")
table.insert(wikicode, "|-")
table.insert(wikicode, "! colspan=2 |")
table.insert(wikicode, "! giống đực")
table.insert(wikicode, "! giống cái")
table.insert(wikicode, "! giống trung")
for _, case in ipairs(cases) do
if case == "nom" or case == "gen" then
for i, d in ipairs(defns) do
table.insert(wikicode, "|- ")
if i == 1 then
table.insert(wikicode, "! rowspan=\"" .. tostring(#defns) .. "\" | " .. names[case])
end
table.insert(wikicode, "! class=\"secondary\" | " .. names[d])
for _, g in ipairs(genders) do
if g == "m" or g == "n" then
table.insert(wikicode, "| {{{" .. g .. "_" .. case .. "_" .. d .. "}}}")
elseif i == 1 then
table.insert(wikicode, "| rowspan=\"" .. tostring(#defns) .. " | {{{" .. g .. "_" .. case .. "}}}")
end
end
end
elseif case == "acc" then
for i, d in ipairs(defns) do
table.insert(wikicode, "|- ")
if i == 1 then
table.insert(wikicode, "! rowspan=\"" .. tostring(#defns) .. "\" | " .. names[case])
end
table.insert(wikicode, "! class=\"secondary\" | " .. names[d])
for _, g in ipairs(genders) do
if g == "n" then
table.insert(wikicode, "| {{{" .. g .. "_" .. case .. "_" .. d .. "}}}")
elseif i == 1 then
table.insert(wikicode, "| rowspan=\"" .. tostring(#defns) .. " | {{{" .. g .. "_" .. case .. "}}}")
end
end
end
else
table.insert(wikicode, "|- ")
table.insert(wikicode, "! colspan=\"2\" | " .. names[case])
for _, g in ipairs(genders) do
table.insert(wikicode, "| {{{" .. g .. "_" .. case .. "}}}")
end
end
end
table.insert(wikicode, m_inflection_table.make_bottom{})
wikicode = table.concat(wikicode, "\n")
return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. require("Module:utilities").format_categories(data.categories, lang)
end
return export
k2x33lektmceyg0fyurco0gbmbd0vkp
2567208
2567204
2026-09-28T16:31:16Z
Hiyuune
50834
2567208
Scribunto
text/plain
local m_links = require("Module:links")
local m_common = require("Module:dum-common")
local lang = require("Module:languages").getByCode("dum")
local export = {}
local m_inflection_table = require("Module:inflection-table")
function export.show(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "tính từ", categories = {}}
local stem = mw.ustring.gsub(args[1], "([^aeiouâêîôûāēōë])e$", "%1")
data.forms["m_nom_indf"] = {m_common.devoiced(m_common.checked(args[1]))}
data.forms["m_acc"] = {stem .. "en"}
data.forms["m_dat"] = {stem .. "en"}
data.forms["n_nom_indf"] = {m_common.devoiced(m_common.checked(args[1]))}
data.forms["n_acc_indf"] = {m_common.devoiced(m_common.checked(args[1]))}
data.forms["n_dat"] = {stem .. "en"}
data.forms["p_dat"] = {stem .. "en"}
if mw.ustring.find(args[1], "[aeiouâêîôûāēōë][^aeiouâêîôûāēōë]+e[lnr]$") then
data.forms["m_nom_defn"] = {stem, stem .. "e"}
data.forms["f_nom"] = {stem, stem .. "e"}
data.forms["f_acc"] = {stem, stem .. "e"}
data.forms["n_nom_defn"] = {stem, stem .. "e"}
data.forms["n_acc_defn"] = {stem, stem .. "e"}
data.forms["p_nom"] = {stem, stem .. "e"}
data.forms["p_acc"] = {stem, stem .. "e"}
else
data.forms["m_nom_defn"] = {stem .. "e"}
data.forms["f_nom"] = {stem .. "e"}
data.forms["f_acc"] = {stem .. "e"}
data.forms["n_nom_defn"] = {stem .. "e"}
data.forms["n_acc_defn"] = {stem .. "e"}
data.forms["p_nom"] = {stem .. "e"}
data.forms["p_acc"] = {stem .. "e"}
end
if mw.ustring.find(args[1], "[^aeiouâêîôûāēōë]e$") then
data.forms["m_gen_indf"] = {args[1] .. "s"}
data.forms["n_gen_indf"] = {args[1] .. "s"}
data.forms["m_gen_defn"] = {args[1] .. "s", args[1] .. "n"}
data.forms["n_gen_defn"] = {args[1] .. "s", args[1] .. "n"}
elseif mw.ustring.find(stem, "s$") or mw.ustring.find(stem, "sch$") then
data.forms["m_gen_indf"] = {m_common.checked(stem)}
data.forms["n_gen_indf"] = {m_common.checked(stem)}
data.forms["m_gen_defn"] = {m_common.checked(stem), stem .. "en"}
data.forms["n_gen_defn"] = {m_common.checked(stem), stem .. "en"}
else
data.forms["m_gen_indf"] = {m_common.devoiced(m_common.checked(stem)) .. "s"}
data.forms["n_gen_indf"] = {m_common.devoiced(m_common.checked(stem)) .. "s"}
data.forms["m_gen_defn"] = {m_common.devoiced(m_common.checked(stem)) .. "s", stem .. "en"}
data.forms["n_gen_defn"] = {m_common.devoiced(m_common.checked(stem)) .. "s", stem .. "en"}
end
if mw.ustring.find(stem, "[lnr]$") then
data.forms["f_gen"] = {m_common.checked(args[1]) .. "re"}
data.forms["f_dat"] = {m_common.checked(args[1]) .. "re"}
data.forms["p_gen"] = {m_common.checked(args[1]) .. "re"}
else
data.forms["f_gen"] = {stem .. "er"}
data.forms["f_dat"] = {stem .. "er"}
data.forms["p_gen"] = {stem .. "er"}
end
return make_table(data)
end
-- Make the table
function make_table(data)
local function repl(param)
local form = data.forms[param]
if not form or #form == 0 then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, alt = subform}))
end
return table.concat(ret, ", ")
end
local names = {
["nom"] = "danh cách",
["acc"] = "đối cách",
["gen"] = "sinh cách",
["dat"] = "dữ cách",
["indf"] = "bất định",
["defn"] = "xác định",
}
local cases = {"nom", "acc", "gen", "dat"}
local genders = {"m", "f", "n", "p"}
local defns = {"indf", "defn"}
local wikicode = {}
table.insert(wikicode, m_inflection_table.make_top{
title = mw.getContentLanguage():ucfirst(data.info or ""),
palette = 'indigo',
tall = 'yes',
})
table.insert(wikicode, "! class=\"outer\" colspan=2 |")
table.insert(wikicode, "! class=\"outer\" colspan=3 | số ít")
table.insert(wikicode, "! class=\"outer\" rowspan=2 | số nhiều")
table.insert(wikicode, "|-")
table.insert(wikicode, "! colspan=2 |")
table.insert(wikicode, "! giống đực")
table.insert(wikicode, "! giống cái")
table.insert(wikicode, "! giống trung")
for _, case in ipairs(cases) do
if case == "nom" or case == "gen" then
for i, d in ipairs(defns) do
table.insert(wikicode, "|- ")
if i == 1 then
table.insert(wikicode, "! rowspan=\"" .. tostring(#defns) .. "\" | " .. names[case])
end
table.insert(wikicode, "! class=\"secondary\" | " .. names[d])
for _, g in ipairs(genders) do
if g == "m" or g == "n" then
table.insert(wikicode, "| {{{" .. g .. "_" .. case .. "_" .. d .. "}}}")
elseif i == 1 then
table.insert(wikicode, "| rowspan=\"" .. tostring(#defns) .. " | {{{" .. g .. "_" .. case .. "}}}")
end
end
end
elseif case == "acc" then
for i, d in ipairs(defns) do
table.insert(wikicode, "|- ")
if i == 1 then
table.insert(wikicode, "! rowspan=\"" .. tostring(#defns) .. "\" | " .. names[case])
end
table.insert(wikicode, "! class=\"secondary\" | " .. names[d])
for _, g in ipairs(genders) do
if g == "n" then
table.insert(wikicode, "| {{{" .. g .. "_" .. case .. "_" .. d .. "}}}")
elseif i == 1 then
table.insert(wikicode, "| rowspan=\"" .. tostring(#defns) .. " | {{{" .. g .. "_" .. case .. "}}}")
end
end
end
else
table.insert(wikicode, "|- ")
table.insert(wikicode, "! colspan=\"2\" | " .. names[case])
for _, g in ipairs(genders) do
table.insert(wikicode, "| {{{" .. g .. "_" .. case .. "}}}")
end
end
end
table.insert(wikicode, m_inflection_table.make_bottom{})
wikicode = table.concat(wikicode, "\n")
return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl)) .. require("Module:utilities").format_categories(data.categories, lang)
end
return export
1w4ad4lb7amesza13ybgwx8l4bnaf7q
Bản mẫu:dum-infl-adj
10
418479
2567206
2026-09-28T16:28:58Z
Hiyuune
50834
Trang mới: “{{#invoke:dum-adjectives|show}}<noinclude>{{documentation}}</noinclude>”
2567206
wikitext
text/x-wiki
{{#invoke:dum-adjectives|show}}<noinclude>{{documentation}}</noinclude>
tbmlxu3xl7f9stsyhkpr9kugl3tv2bw
beschuldich
0
418480
2567207
2026-09-28T16:29:51Z
Hiyuune
50834
+ dum
2567207
wikitext
text/x-wiki
=={{langname|dum}}==
==={{section|etym}}===
{{rfe|dum}}
==={{section|adj}}===
{{dum-adj}}
# Có tội, [[phạm tội]], [[tội lỗi]].
===={{section|infl}}====
{{dum-infl-adj|beschuldigg}}
==={{section|further}}===
* {{R:MNW|03666|besculdich}}
1zoetp6lx8yd06ijjr8ddzj1hvh2hhv
Thể loại:Tính từ tiếng Hà Lan trung đại
14
418481
2567209
2026-09-28T16:31:34Z
Hiyuune
50834
Trang mới: “{{auto cat}}”
2567209
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Tiếng Hà Lan trung đại
14
418482
2567210
2026-09-28T16:33:14Z
Hiyuune
50834
Trang mới: “{{auto cat|Hà Lan|Bỉ|Pháp|Đức|extinct=1}}”
2567210
wikitext
text/x-wiki
{{auto cat|Hà Lan|Bỉ|Pháp|Đức|extinct=1}}
a4z5qxle88ngn1if1h9vkwo8iwwjlbt
Thể loại:Tiếng Hà Lan cổ
14
418483
2567211
2026-09-28T16:34:08Z
Hiyuune
50834
Trang mới: “{{auto cat|Hà Lan|Bỉ|Pháp|Đức|extinct=1}}”
2567211
wikitext
text/x-wiki
{{auto cat|Hà Lan|Bỉ|Pháp|Đức|extinct=1}}
a4z5qxle88ngn1if1h9vkwo8iwwjlbt
Từ tái tạo:Tiếng Hà Lan cổ/beta
0
418484
2567212
2026-09-28T16:37:18Z
Hiyuune
50834
Trang mới: “{{reconstruction}} =={{langname|odt}}== ==={{section|etym}}=== Từ {{inh|odt|gmw-pro|*bētā}}, vay mượn từ tiếng Latinh {{l|la|bēta}}. ==={{section|n}}=== {{odt-noun|f|head=*bēta}} # [[củ cải|Củ cải]] [[ngọt]]. ===={{section|infl}}==== {{odt-decl-noun-o|bēt}} ===={{section|desc}}==== * {{desc|dum|bête}} ** {{desctree|nl|biet}} [[en:Reconstruction:Old Dutch/beta]]”
2567212
wikitext
text/x-wiki
{{reconstruction}}
=={{langname|odt}}==
==={{section|etym}}===
Từ {{inh|odt|gmw-pro|*bētā}}, vay mượn từ tiếng Latinh {{l|la|bēta}}.
==={{section|n}}===
{{odt-noun|f|head=*bēta}}
# [[củ cải|Củ cải]] [[ngọt]].
===={{section|infl}}====
{{odt-decl-noun-o|bēt}}
===={{section|desc}}====
* {{desc|dum|bête}}
** {{desctree|nl|biet}}
[[en:Reconstruction:Old Dutch/beta]]
tg2nkq5dqddstewpkdi2c3awtmiaf1c
𫣫
0
418485
2567214
2026-09-28T16:42:52Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=9|rad=人|as=13|sn=|four=|canj=|ids=⿰亻数}} ===={{ĐM|ref}}==== * {{Han ref|kx=|dkj=|dj=|hdz=|uh=2B8EB}}”
2567214
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=9|rad=人|as=13|sn=|four=|canj=|ids=⿰亻数}}
===={{ĐM|ref}}====
* {{Han ref|kx=|dkj=|dj=|hdz=|uh=2B8EB}}
f9hoohr41sjeqsi91oj5etcy60e46n7
𪢒
0
418486
2567215
2026-09-28T16:43:38Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=30|rad=口|as=13|sn=16|four=|canj=|ids=⿰口数}} ===={{section|ref}}==== * {{Han ref|uh=2A892}}”
2567215
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{section|han}}===
{{Han char|rn=30|rad=口|as=13|sn=16|four=|canj=|ids=⿰口数}}
===={{section|ref}}====
* {{Han ref|uh=2A892}}
lmljgwhdm5a1yr4s8gtkshhovcbqxeo
𱘊
0
418487
2567216
2026-09-28T16:44:30Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=32|rad=土|as=13|sn=16|four=|canj=|ids=⿰土数;⿰𪣻攵}} ===={{ĐM|ref}}==== * {{Han ref|kx=|dkj=|dj=|hdz=|uh=3160A}}”
2567216
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=32|rad=土|as=13|sn=16|four=|canj=|ids=⿰土数;⿰𪣻攵}}
===={{ĐM|ref}}====
* {{Han ref|kx=|dkj=|dj=|hdz=|uh=3160A}}
iwoijgwcu9vz1oycw382pmdu02q6i5j
𱘋
0
418488
2567217
2026-09-28T16:45:01Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=32|rad=土|as=14|sn=17|four=|canj=|ids=⿰土兢}} ===={{ĐM|ref}}==== * {{Han ref|kx=|dkj=|dj=|hdz=|uh=3160B}}”
2567217
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=32|rad=土|as=14|sn=17|four=|canj=|ids=⿰土兢}}
===={{ĐM|ref}}====
* {{Han ref|kx=|dkj=|dj=|hdz=|uh=3160B}}
6l4d038pwckvxlmqmg398bscqry7ri8
Phụ lục:Bộ gõ Thương Hiệt/戈
100
418489
2567218
2026-09-28T16:46:08Z
Hiyuune
50834
Trang mới: “{{zh-Cangjie TOC}} {{tocright}} ==戈 (I)== {| lang="zh" |- | '''戈'''|| (I) || : {{charlist|sc=Hani|戈}} |} ==戈日 (IA)== {| lang="zh" |- | '''戈日戈水'''|| (IAIE) || : {{charlist|sc=Hani|廄}} |- | '''戈日戈山'''|| (IAIU) || : {{charlist|sc=Hani|廐}} |- | '''戈日一'''|| (IAM) || : {{charlist|sc=Hani|㡺}} |- | '''戈日女'''|| (IAV) || : {{charlist|sc=Hani|㡾良}} |} ==戈月 (IB)== {| lang="zh" |- | '''戈月'''|| (IB) || : {{charlist|sc=Hani|禸…”
2567218
wikitext
text/x-wiki
{{zh-Cangjie TOC}}
{{tocright}}
==戈 (I)==
{| lang="zh"
|-
| '''戈'''|| (I) || : {{charlist|sc=Hani|戈}}
|}
==戈日 (IA)==
{| lang="zh"
|-
| '''戈日戈水'''|| (IAIE) || : {{charlist|sc=Hani|廄}}
|-
| '''戈日戈山'''|| (IAIU) || : {{charlist|sc=Hani|廐}}
|-
| '''戈日一'''|| (IAM) || : {{charlist|sc=Hani|㡺}}
|-
| '''戈日女'''|| (IAV) || : {{charlist|sc=Hani|㡾良}}
|}
==戈月 (IB)==
{| lang="zh"
|-
| '''戈月'''|| (IB) || : {{charlist|sc=Hani|禸䏍}}
|-
| '''戈月月口'''|| (IBBR) || : {{charlist|sc=Hani|㢐}}
|-
| '''戈月月廿'''|| (IBBT) || : {{charlist|sc=Hani|盙}}
|-
| '''戈月金弓'''|| (IBCN) || : {{charlist|sc=Hani|廁}}
|-
| '''戈月金女'''|| (IBCV) || : {{charlist|sc=Hani|廮}}
|-
| '''戈月木'''|| (IBD) || : {{charlist|sc=Hani|㮾}}
|-
| '''戈月木戈'''|| (IBDI) || : {{charlist|sc=Hani|尃}}
|-
| '''戈月土'''|| (IBG) || : {{charlist|sc=Hani|塱}}
|-
| '''戈月土戈'''|| (IBGI) || : {{charlist|sc=Hani|䏻}}
|-
| '''戈月竹日火'''|| (IBHAF) || : {{charlist|sc=Hani|䳌鵏鷛}}
|-
| '''戈月竹竹竹'''|| (IBHHH) || : {{charlist|sc=Hani|㣑}}
|-
| '''戈月竹手山'''|| (IBHQU) || : {{charlist|sc=Hani|㲢}}
|-
| '''戈月竹女人'''|| (IBHVO) || : {{charlist|sc=Hani|㼐}}
|-
| '''戈月中弓'''|| (IBLN) || : {{charlist|sc=Hani|㓲}}
|-
| '''戈月一'''|| (IBM) || : {{charlist|sc=Hani|㡹}}
|-
| '''戈月弓'''|| (IBN) || : {{charlist|sc=Hani|乶}}
|-
| '''戈月弓中'''|| (IBNL) || : {{charlist|sc=Hani|郙鄘}}
|-
| '''戈月人'''|| (IBO) || : {{charlist|sc=Hani|贠}}
|-
| '''戈月心心'''|| (IBPP) || : {{charlist|sc=Hani|能}}
|-
| '''戈月口心'''|| (IBRP) || : {{charlist|sc=Hani|喸}}
|-
| '''戈月尸竹'''|| (IBSH) || : {{charlist|sc=Hani|廫}}
|-
| '''戈月尸手火'''|| (IBSQF) || : {{charlist|sc=Hani|騗}}
|-
| '''戈月山金'''|| (IBUC) || : {{charlist|sc=Hani|貟}}
|-
| '''戈月卜竹尸'''|| (IBYHS) || : {{charlist|sc=Hani|旉}}
|}
==戈金 (IC)==
{| lang="zh"
|-
| '''戈金火火'''|| (ICFF) || : {{charlist|sc=Hani|𤒼}}
|-
| '''戈金竹日火'''|| (ICHAF) || : {{charlist|sc=Hani|𪇵}}
|-
| '''戈金竹水'''|| (ICHE) || : {{charlist|sc=Hani|夋}}
|-
| '''戈金戈木'''|| (ICID) || : {{charlist|sc=Hani|庺}}
|-
| '''戈金中弓'''|| (ICLN) || : {{charlist|sc=Hani|劆}}
|-
| '''戈金弓中'''|| (ICNL) || : {{charlist|sc=Hani|鄺}}
|-
| '''戈金弓人'''|| (ICNO) || : {{charlist|sc=Hani|廞}}
|-
| '''戈金心'''|| (ICP) || : {{charlist|sc=Hani|怷}}
|}
==戈木 (ID)==
{| lang="zh"
|-
| '''戈木'''|| (ID) || : {{charlist|sc=Hani|床术}}
|-
| '''戈木月'''|| (IDB) || : {{charlist|sc=Hani|㢀}}
|-
| '''戈木月月月'''|| (IDBBB) || : {{charlist|sc=Hani|䯢}}
|-
| '''戈木月月口'''|| (IDBBR) || : {{charlist|sc=Hani|𪎩}}
|-
| '''戈木月山'''|| (IDBU) || : {{charlist|sc=Hani|廂}}
|-
| '''戈木火'''|| (IDF) || : {{charlist|sc=Hani|𤇍}}
|-
| '''戈木火木'''|| (IDFD) || : {{charlist|sc=Hani|糜}}
|-
| '''戈木土'''|| (IDG) || : {{charlist|sc=Hani|塺}}
|-
| '''戈木竹日火'''|| (IDHAF) || : {{charlist|sc=Hani|䳸}}
|-
| '''戈木竹木'''|| (IDHD) || : {{charlist|sc=Hani|穈}}
|-
| '''戈木竹木日'''|| (IDHDA) || : {{charlist|sc=Hani|黁}}
|-
| '''戈木竹戈'''|| (IDHI) || : {{charlist|sc=Hani|魔麽}}
|-
| '''戈木竹手'''|| (IDHQ) || : {{charlist|sc=Hani|犘}}
|-
| '''戈木竹手山'''|| (IDHQU) || : {{charlist|sc=Hani|麾}}
|-
| '''戈木十廿金'''|| (IDJTC) || : {{charlist|sc=Hani|黂}}
|-
| '''戈木中一卜'''|| (IDLMY) || : {{charlist|sc=Hani|靡}}
|-
| '''戈木中卜火'''|| (IDLYF) || : {{charlist|sc=Hani|爢㸏}}
|-
| '''戈木一'''|| (IDM) || : {{charlist|sc=Hani|㡷}}
|-
| '''戈木一口'''|| (IDMR) || : {{charlist|sc=Hani|磨}}
|-
| '''戈木人大'''|| (IDOK) || : {{charlist|sc=Hani|䵇}}
|-
| '''戈木人一弓'''|| (IDOMN) || : {{charlist|sc=Hani|䵉}}
|-
| '''戈木人人'''|| (IDOO) || : {{charlist|sc=Hani|庲}}
|-
| '''戈木心'''|| (IDP) || : {{charlist|sc=Hani|怸㥻㦄}}
|-
| '''戈木手'''|| (IDQ) || : {{charlist|sc=Hani|摩}}
|-
| '''戈木口竹口'''|| (IDRHR) || : {{charlist|sc=Hani|麿}}
|-
| '''戈木尸'''|| (IDS) || : {{charlist|sc=Hani|书}}
|-
| '''戈木尸十水'''|| (IDSJE) || : {{charlist|sc=Hani|黀}}
|-
| '''戈木女戈'''|| (IDVI) || : {{charlist|sc=Hani|麼}}
|-
| '''戈木女戈火'''|| (IDVIF) || : {{charlist|sc=Hani|縻}}
|-
| '''戈木卜一口'''|| (IDYMR) || : {{charlist|sc=Hani|䜆}}
|}
==戈水 (IE)==
{| lang="zh"
|-
| '''戈水'''|| (IE) || : {{charlist|sc=Hani|氷}}
|-
| '''戈水日'''|| (IEA) || : {{charlist|sc=Hani|昶}}
|-
| '''戈水月廿'''|| (IEBT) || : {{charlist|sc=Hani|盚}}
|-
| '''戈水金'''|| (IEC) || : {{charlist|sc=Hani|䥭}}
|-
| '''戈水木竹水'''|| (IEDHE) || : {{charlist|sc=Hani|皴}}
|-
| '''戈水竹日火'''|| (IEHAF) || : {{charlist|sc=Hani|鵕}}
|-
| '''戈水竹竹竹'''|| (IEHHH) || : {{charlist|sc=Hani|𢒋}}
|-
| '''戈水大弓'''|| (IEKN) || : {{charlist|sc=Hani|㐜}}
|-
| '''戈水中弓'''|| (IELN) || : {{charlist|sc=Hani|剫}}
|-
| '''戈水弓日山'''|| (IENAU) || : {{charlist|sc=Hani|𠬍}}
|-
| '''戈水弓中'''|| (IENL) || : {{charlist|sc=Hani|䣇}}
|-
| '''戈水弓人'''|| (IENO) || : {{charlist|sc=Hani|㱂}}
|-
| '''戈水弓山戈'''|| (IENUI) || : {{charlist|sc=Hani|㕙}}
|-
| '''戈水人大'''|| (IEOK) || : {{charlist|sc=Hani|救}}
|-
| '''戈水卜竹女'''|| (IEYHV) || : {{charlist|sc=Hani|裘}}
|}
==戈火 (IF)==
{| lang="zh"
|-
| '''戈火'''|| (IF) || : {{charlist|sc=Hani|厼礻}}
|-
| '''戈火日日'''|| (IFAA) || : {{charlist|sc=Hani|𥚕}}
|-
| '''戈火日一'''|| (IFAM) || : {{charlist|sc=Hani|𥘵}}
|-
| '''戈火日一竹'''|| (IFAMH) || : {{charlist|sc=Hani|禓}}
|-
| '''戈火日一人'''|| (IFAMO) || : {{charlist|sc=Hani|禔}}
|-
| '''戈火日人金'''|| (IFAOC) || : {{charlist|sc=Hani|禵}}
|-
| '''戈火日尸一'''|| (IFASM) || : {{charlist|sc=Hani|禢}}
|-
| '''戈火月日金'''|| (IFBAC) || : {{charlist|sc=Hani|䄙}}
|-
| '''戈火月月口'''|| (IFBBR) || : {{charlist|sc=Hani|禍}}
|-
| '''戈火月土口'''|| (IFBGR) || : {{charlist|sc=Hani|禂}}
|-
| '''戈火月竹山'''|| (IFBHU) || : {{charlist|sc=Hani|视}}
|-
| '''戈火月十十'''|| (IFBJJ) || : {{charlist|sc=Hani|禈}}
|-
| '''戈火月大'''|| (IFBK) || : {{charlist|sc=Hani|廠}}
|-
| '''戈火月一'''|| (IFBM) || : {{charlist|sc=Hani|祖}}
|-
| '''戈火月一水'''|| (IFBME) || : {{charlist|sc=Hani|禐}}
|-
| '''戈火月人火'''|| (IFBOF) || : {{charlist|sc=Hani|䄞}}
|-
| '''戈火月山山'''|| (IFBUU) || : {{charlist|sc=Hani|視}}
|-
| '''戈火金弓竹'''|| (IFCNH) || : {{charlist|sc=Hani|祶}}
|-
| '''戈火金口山'''|| (IFCRU) || : {{charlist|sc=Hani|祱}}
|-
| '''戈火金田十'''|| (IFCWJ) || : {{charlist|sc=Hani|禅}}
|-
| '''戈火木中金'''|| (IFDLC) || : {{charlist|sc=Hani|䄤}}
|-
| '''戈火木一手'''|| (IFDMQ) || : {{charlist|sc=Hani|禕}}
|-
| '''戈火水'''|| (IFE) || : {{charlist|sc=Hani|㵗}}
|-
| '''戈火水水水'''|| (IFEEE) || : {{charlist|sc=Hani|䄌}}
|-
| '''戈火水田'''|| (IFEW) || : {{charlist|sc=Hani|䄕}}
|-
| '''戈火火大金'''|| (IFFKC) || : {{charlist|sc=Hani|禷}}
|-
| '''戈火火一山'''|| (IFFMU) || : {{charlist|sc=Hani|𥙑}}
|-
| '''戈火土'''|| (IFG) || : {{charlist|sc=Hani|社}}
|-
| '''戈火土金水'''|| (IFGCE) || : {{charlist|sc=Hani|祾}}
|-
| '''戈火土戈'''|| (IFGI) || : {{charlist|sc=Hani|祛}}
|-
| '''戈火土弓戈'''|| (IFGNI) || : {{charlist|sc=Hani|禱}}
|-
| '''戈火土心'''|| (IFGP) || : {{charlist|sc=Hani|䄊}}
|-
| '''戈火土口'''|| (IFGR) || : {{charlist|sc=Hani|祮}}
|-
| '''戈火土口金'''|| (IFGRC) || : {{charlist|sc=Hani|𥜝}}
|-
| '''戈火土口口'''|| (IFGRR) || : {{charlist|sc=Hani|禧}}
|-
| '''戈火土田金'''|| (IFGWC) || : {{charlist|sc=Hani|䄣}}
|-
| '''戈火竹日火'''|| (IFHAF) || : {{charlist|sc=Hani|鷓}}
|-
| '''戈火竹日土'''|| (IFHAG) || : {{charlist|sc=Hani|䄓}}
|-
| '''戈火竹土'''|| (IFHG) || : {{charlist|sc=Hani|祍}}
|-
| '''戈火竹土口'''|| (IFHGR) || : {{charlist|sc=Hani|祰}}
|-
| '''戈火竹竹十'''|| (IFHHJ) || : {{charlist|sc=Hani|禆}}
|-
| '''戈火竹十木'''|| (IFHJD) || : {{charlist|sc=Hani|祩}}
|-
| '''戈火竹十口'''|| (IFHJR) || : {{charlist|sc=Hani|䄆}}
|-
| '''戈火竹大'''|| (IFHK) || : {{charlist|sc=Hani|祅}}
|-
| '''戈火竹中月'''|| (IFHLB) || : {{charlist|sc=Hani|䄔}}
|-
| '''戈火竹一中'''|| (IFHML) || : {{charlist|sc=Hani|㫂祈}}
|-
| '''戈火竹弓'''|| (IFHN) || : {{charlist|sc=Hani|凴}}
|-
| '''戈火竹弓水'''|| (IFHNE) || : {{charlist|sc=Hani|祋}}
|-
| '''戈火竹心日'''|| (IFHPA) || : {{charlist|sc=Hani|䄑}}
|-
| '''戈火竹心一'''|| (IFHPM) || : {{charlist|sc=Hani|祗}}
|-
| '''戈火竹手戈'''|| (IFHQI) || : {{charlist|sc=Hani|䄉}}
|-
| '''戈火竹手人'''|| (IFHQO) || : {{charlist|sc=Hani|祑}}
|-
| '''戈火竹尸'''|| (IFHS) || : {{charlist|sc=Hani|祚}}
|-
| '''戈火竹山金'''|| (IFHUC) || : {{charlist|sc=Hani|禶}}
|-
| '''戈火竹女心'''|| (IFHVP) || : {{charlist|sc=Hani|祇}}
|-
| '''戈火竹卜山'''|| (IFHYU) || : {{charlist|sc=Hani|禠}}
|-
| '''戈火戈'''|| (IFI) || : {{charlist|sc=Hani|䄀}}
|-
| '''戈火戈月戈'''|| (IFIBI) || : {{charlist|sc=Hani|禣}}
|-
| '''戈火戈大大'''|| (IFIKK) || : {{charlist|sc=Hani|祓}}
|-
| '''戈火戈中口'''|| (IFILR) || : {{charlist|sc=Hani|禟}}
|-
| '''戈火戈廿'''|| (IFIT) || : {{charlist|sc=Hani|祴}}
|-
| '''戈火十月金'''|| (IFJBC) || : {{charlist|sc=Hani|禛}}
|-
| '''戈火十月一'''|| (IFJBM) || : {{charlist|sc=Hani|禃}}
|-
| '''戈火十木'''|| (IFJD) || : {{charlist|sc=Hani|祙}}
|-
| '''戈火十水'''|| (IFJE) || : {{charlist|sc=Hani|䃽}}
|-
| '''戈火十大日'''|| (IFJKA) || : {{charlist|sc=Hani|禇}}
|-
| '''戈火十口'''|| (IFJR) || : {{charlist|sc=Hani|祜}}
|-
| '''戈火大水'''|| (IFKE) || : {{charlist|sc=Hani|鿆}}
|-
| '''戈火大中山'''|| (IFKLU) || : {{charlist|sc=Hani|䄋}}
|-
| '''戈火大一口'''|| (IFKMR) || : {{charlist|sc=Hani|䄎}}
|-
| '''戈火大心月'''|| (IFKPB) || : {{charlist|sc=Hani|𥛣}}
|-
| '''戈火大口'''|| (IFKR) || : {{charlist|sc=Hani|祐}}
|-
| '''戈火中'''|| (IFL) || : {{charlist|sc=Hani|祌}}
|-
| '''戈火中月大'''|| (IFLBK) || : {{charlist|sc=Hani|䄃}}
|-
| '''戈火中中女'''|| (IFLLV) || : {{charlist|sc=Hani|䄛}}
|-
| '''戈火中一人'''|| (IFLMO) || : {{charlist|sc=Hani|祧}}
|-
| '''戈火中心月'''|| (IFLPB) || : {{charlist|sc=Hani|禙}}
|-
| '''戈火中心金'''|| (IFLPC) || : {{charlist|sc=Hani|𥜥}}
|-
| '''戈火中田'''|| (IFLW) || : {{charlist|sc=Hani|䄂}}
|-
| '''戈火中田中'''|| (IFLWL) || : {{charlist|sc=Hani|神}}
|-
| '''戈火中難中'''|| (IFLXL) || : {{charlist|sc=Hani|䄗}}
|-
| '''戈火一'''|| (IFM) || : {{charlist|sc=Hani|应}}
|-
| '''戈火一月金'''|| (IFMBC) || : {{charlist|sc=Hani|顣}}
|-
| '''戈火一月中'''|| (IFMBL) || : {{charlist|sc=Hani|鿅}}
|-
| '''戈火一月人'''|| (IFMBO) || : {{charlist|sc=Hani|䄥}}
|-
| '''戈火一火月'''|| (IFMFB) || : {{charlist|sc=Hani|禰}}
|-
| '''戈火一戈土'''|| (IFMIG) || : {{charlist|sc=Hani|祬}}
|-
| '''戈火一大'''|| (IFMK) || : {{charlist|sc=Hani|祆}}
|-
| '''戈火一一女'''|| (IFMMV) || : {{charlist|sc=Hani|祳}}
|-
| '''戈火一口'''|| (IFMR) || : {{charlist|sc=Hani|祏}}
|-
| '''戈火一口廿'''|| (IFMRT) || : {{charlist|sc=Hani|䄈}}
|-
| '''戈火一口田'''|| (IFMRW) || : {{charlist|sc=Hani|福}}
|-
| '''戈火一廿月'''|| (IFMTB) || : {{charlist|sc=Hani|禲}}
|-
| '''戈火一田土'''|| (IFMWG) || : {{charlist|sc=Hani|禋}}
|-
| '''戈火一田十'''|| (IFMWJ) || : {{charlist|sc=Hani|禫}}
|-
| '''戈火弓金口'''|| (IFNCR) || : {{charlist|sc=Hani|䄡}}
|-
| '''戈火弓火'''|| (IFNF) || : {{charlist|sc=Hani|祢}}
|-
| '''戈火弓竹尸'''|| (IFNHS) || : {{charlist|sc=Hani|礽}}
|-
| '''戈火弓中'''|| (IFNL) || : {{charlist|sc=Hani|祁鄬}}
|-
| '''戈火弓一水'''|| (IFNME) || : {{charlist|sc=Hani|禄}}
|-
| '''戈火弓一山'''|| (IFNMU) || : {{charlist|sc=Hani|祪}}
|-
| '''戈火弓女一'''|| (IFNVM) || : {{charlist|sc=Hani|祃}}
|-
| '''戈火人木戈'''|| (IFODI) || : {{charlist|sc=Hani|祔}}
|-
| '''戈火人竹女'''|| (IFOHV) || : {{charlist|sc=Hani|祣}}
|-
| '''戈火人戈心'''|| (IFOIP) || : {{charlist|sc=Hani|䄒}}
|-
| '''戈火人中中'''|| (IFOLL) || : {{charlist|sc=Hani|祄}}
|-
| '''戈火人一日'''|| (IFOMA) || : {{charlist|sc=Hani|禬}}
|-
| '''戈火人一月'''|| (IFOMB) || : {{charlist|sc=Hani|禴}}
|-
| '''戈火人一口'''|| (IFOMR) || : {{charlist|sc=Hani|祫}}
|-
| '''戈火人一女'''|| (IFOMV) || : {{charlist|sc=Hani|䄖}}
|-
| '''戈火心'''|| (IFP) || : {{charlist|sc=Hani|慼憑}}
|-
| '''戈火心木'''|| (IFPD) || : {{charlist|sc=Hani|祂}}
|-
| '''戈火心竹'''|| (IFPH) || : {{charlist|sc=Hani|祕}}
|-
| '''戈火心戈'''|| (IFPI) || : {{charlist|sc=Hani|礿}}
|-
| '''戈火心人山'''|| (IFPOU) || : {{charlist|sc=Hani|祹}}
|-
| '''戈火心心'''|| (IFPP) || : {{charlist|sc=Hani|䃾}}
|-
| '''戈火心廿'''|| (IFPT) || : {{charlist|sc=Hani|䄁}}
|-
| '''戈火心卜一'''|| (IFPYM) || : {{charlist|sc=Hani|鹧}}
|-
| '''戈火手竹大'''|| (IFQHK) || : {{charlist|sc=Hani|禊}}
|-
| '''戈火手大戈'''|| (IFQKI) || : {{charlist|sc=Hani|祷}}
|-
| '''戈火手大難'''|| (IFQKX) || : {{charlist|sc=Hani|䄝}}
|-
| '''戈火手人'''|| (IFQO) || : {{charlist|sc=Hani|䃿}}
|-
| '''戈火手尸'''|| (IFQS) || : {{charlist|sc=Hani|祎}}
|-
| '''戈火口'''|| (IFR) || : {{charlist|sc=Hani|㗤}}
|-
| '''戈火口竹土'''|| (IFRHG) || : {{charlist|sc=Hani|䄇}}
|-
| '''戈火口竹山'''|| (IFRHU) || : {{charlist|sc=Hani|祝}}
|-
| '''戈火口一大'''|| (IFRMK) || : {{charlist|sc=Hani|祦}}
|-
| '''戈火口人月'''|| (IFROB) || : {{charlist|sc=Hani|祸}}
|-
| '''戈火口口十'''|| (IFRRJ) || : {{charlist|sc=Hani|禪}}
|-
| '''戈火口山'''|| (IFRU) || : {{charlist|sc=Hani|祀}}
|-
| '''戈火口卜人'''|| (IFRYO) || : {{charlist|sc=Hani|蹙}}
|-
| '''戈火尸'''|| (IFS) || : {{charlist|sc=Hani|㞝}}
|-
| '''戈火尸竹口'''|| (IFSHR) || : {{charlist|sc=Hani|祒}}
|-
| '''戈火尸一水'''|| (IFSME) || : {{charlist|sc=Hani|祲}}
|-
| '''戈火尸一一'''|| (IFSMM) || : {{charlist|sc=Hani|祤}}
|-
| '''戈火尸一口'''|| (IFSMR) || : {{charlist|sc=Hani|祠}}
|-
| '''戈火尸手火'''|| (IFSQF) || : {{charlist|sc=Hani|禡}}
|-
| '''戈火廿日'''|| (IFTA) || : {{charlist|sc=Hani|䄍}}
|-
| '''戈火廿金土'''|| (IFTCG) || : {{charlist|sc=Hani|禥}}
|-
| '''戈火廿金田'''|| (IFTCW) || : {{charlist|sc=Hani|禉}}
|-
| '''戈火廿土火'''|| (IFTGF) || : {{charlist|sc=Hani|禚}}
|-
| '''戈火廿土口'''|| (IFTGR) || : {{charlist|sc=Hani|𥛶}}
|-
| '''戈火廿竹大'''|| (IFTHK) || : {{charlist|sc=Hani|䄏}}
|-
| '''戈火廿一金'''|| (IFTMC) || : {{charlist|sc=Hani|祺}}
|-
| '''戈火廿一木'''|| (IFTMD) || : {{charlist|sc=Hani|禖}}
|-
| '''戈火廿手'''|| (IFTQ) || : {{charlist|sc=Hani|祥}}
|-
| '''戈火廿女戈'''|| (IFTVI) || : {{charlist|sc=Hani|禌}}
|-
| '''戈火廿田日'''|| (IFTWA) || : {{charlist|sc=Hani|䄚}}
|-
| '''戈火廿田廿'''|| (IFTWT) || : {{charlist|sc=Hani|禮}}
|-
| '''戈火廿田女'''|| (IFTWV) || : {{charlist|sc=Hani|禯}}
|-
| '''戈火山'''|| (IFU) || : {{charlist|sc=Hani|礼}}
|-
| '''戈火女戈戈'''|| (IFVII) || : {{charlist|sc=Hani|禨}}
|-
| '''戈火女弓水'''|| (IFVNE) || : {{charlist|sc=Hani|祿}}
|-
| '''戈火女弓人'''|| (IFVNO) || : {{charlist|sc=Hani|禒}}
|-
| '''戈火田金水'''|| (IFWCE) || : {{charlist|sc=Hani|禝}}
|-
| '''戈火田木'''|| (IFWD) || : {{charlist|sc=Hani|祼}}
|-
| '''戈火田土'''|| (IFWG) || : {{charlist|sc=Hani|𥚃}}
|-
| '''戈火田十口'''|| (IFWJR) || : {{charlist|sc=Hani|祻}}
|-
| '''戈火田大'''|| (IFWK) || : {{charlist|sc=Hani|䄄}}
|-
| '''戈火田中月'''|| (IFWLB) || : {{charlist|sc=Hani|禑}}
|-
| '''戈火田中一'''|| (IFWLM) || : {{charlist|sc=Hani|禤}}
|-
| '''戈火田心'''|| (IFWP) || : {{charlist|sc=Hani|禗}}
|-
| '''戈火田廿金'''|| (IFWTC) || : {{charlist|sc=Hani|禩}}
|-
| '''戈火卜'''|| (IFY) || : {{charlist|sc=Hani|䃼}}
|-
| '''戈火卜月月'''|| (IFYBB) || : {{charlist|sc=Hani|禘}}
|-
| '''戈火卜月金'''|| (IFYBC) || : {{charlist|sc=Hani|禎}}
|-
| '''戈火卜月人'''|| (IFYBO) || : {{charlist|sc=Hani|祯}}
|-
| '''戈火卜月尸'''|| (IFYBS) || : {{charlist|sc=Hani|䄘}}
|-
| '''戈火卜竹尸'''|| (IFYHS) || : {{charlist|sc=Hani|祊}}
|-
| '''戈火卜中一'''|| (IFYLM) || : {{charlist|sc=Hani|祉}}
|-
| '''戈火卜人十'''|| (IFYOJ) || : {{charlist|sc=Hani|祽}}
|-
| '''戈火卜口月'''|| (IFYRB) || : {{charlist|sc=Hani|禞}}
|-
| '''戈火卜口女'''|| (IFYRV) || : {{charlist|sc=Hani|禳}}
|-
| '''戈火卜廿人'''|| (IFYTO) || : {{charlist|sc=Hani|禭}}
|-
| '''戈火卜山月'''|| (IFYUB) || : {{charlist|sc=Hani|䄜}}
|-
| '''戈火卜田一'''|| (IFYWM) || : {{charlist|sc=Hani|䄠}}
|-
| '''戈火卜難'''|| (IFYX) || : {{charlist|sc=Hani|䄢}}
|}
==戈土 (IG)==
{| lang="zh"
|-
| '''戈土'''|| (IG) || : {{charlist|sc=Hani|庄}}
|-
| '''戈土月'''|| (IGB) || : {{charlist|sc=Hani|膺}}
|-
| '''戈土月廿'''|| (IGBT) || : {{charlist|sc=Hani|䀅}}
|-
| '''戈土金水'''|| (IGCE) || : {{charlist|sc=Hani|庱}}
|-
| '''戈土木戈'''|| (IGDI) || : {{charlist|sc=Hani|庤}}
|-
| '''戈土水'''|| (IGE) || : {{charlist|sc=Hani|㕠}}
|-
| '''戈土竹日火'''|| (IGHAF) || : {{charlist|sc=Hani|鷹}}
|-
| '''戈土戈'''|| (IGI) || : {{charlist|sc=Hani|庒}}
|-
| '''戈土戈廿'''|| (IGIT) || : {{charlist|sc=Hani|廅}}
|-
| '''戈土十'''|| (IGJ) || : {{charlist|sc=Hani|凖}}
|-
| '''戈土弓中'''|| (IGNL) || : {{charlist|sc=Hani|鄽}}
|-
| '''戈土人田'''|| (IGOW) || : {{charlist|sc=Hani|廧}}
|-
| '''戈土心'''|| (IGP) || : {{charlist|sc=Hani|應}}
|-
| '''戈土尸大'''|| (IGSK) || : {{charlist|sc=Hani|廒}}
|-
| '''戈土廿戈'''|| (IGTI) || : {{charlist|sc=Hani|廚}}
|-
| '''戈土卜竹女'''|| (IGYHV) || : {{charlist|sc=Hani|装}}
|}
==戈竹 (IH)==
{| lang="zh"
|-
| '''戈竹'''|| (IH) || : {{charlist|sc=Hani|戊}}
|-
| '''戈竹日火'''|| (IHAF) || : {{charlist|sc=Hani|𩾷}}
|-
| '''戈竹木金'''|| (IHDC) || : {{charlist|sc=Hani|廭}}
|-
| '''戈竹木心'''|| (IHDP) || : {{charlist|sc=Hani|㢉}}
|-
| '''戈竹木田'''|| (IHDW) || : {{charlist|sc=Hani|㢖}}
|-
| '''戈竹水口'''|| (IHER) || : {{charlist|sc=Hani|㦴}}
|-
| '''戈竹水卜'''|| (IHEY) || : {{charlist|sc=Hani|庝}}
|-
| '''戈竹竹戈'''|| (IHHI) || : {{charlist|sc=Hani|螷蠯}}
|-
| '''戈竹竹十'''|| (IHHJ) || : {{charlist|sc=Hani|庳}}
|-
| '''戈竹竹中'''|| (IHHL) || : {{charlist|sc=Hani|㡻}}
|-
| '''戈竹竹手山'''|| (IHHQU) || : {{charlist|sc=Hani|毿}}
|-
| '''戈竹竹田'''|| (IHHW) || : {{charlist|sc=Hani|廇}}
|-
| '''戈竹戈'''|| (IHI) || : {{charlist|sc=Hani|廆戍}}
|-
| '''戈竹十難'''|| (IHJX) || : {{charlist|sc=Hani|㢎}}
|-
| '''戈竹大月'''|| (IHKB) || : {{charlist|sc=Hani|㢗}}
|-
| '''戈竹中月山'''|| (IHLBU) || : {{charlist|sc=Hani|㓄}}
|-
| '''戈竹中弓'''|| (IHLN) || : {{charlist|sc=Hani|剼}}
|-
| '''戈竹一'''|| (IHM) || : {{charlist|sc=Hani|戌}}
|-
| '''戈竹一月金'''|| (IHMBC) || : {{charlist|sc=Hani|䫩}}
|-
| '''戈竹一火'''|| (IHMF) || : {{charlist|sc=Hani|烕}}
|-
| '''戈竹一中'''|| (IHML) || : {{charlist|sc=Hani|庍}}
|-
| '''戈竹一口'''|| (IHMR) || : {{charlist|sc=Hani|咸}}
|-
| '''戈竹一女'''|| (IHMV) || : {{charlist|sc=Hani|威}}
|-
| '''戈竹人人'''|| (IHOO) || : {{charlist|sc=Hani|㢔}}
|-
| '''戈竹心'''|| (IHP) || : {{charlist|sc=Hani|㡯}}
|-
| '''戈竹心水'''|| (IHPE) || : {{charlist|sc=Hani|廏}}
|-
| '''戈竹心一'''|| (IHPM) || : {{charlist|sc=Hani|底}}
|-
| '''戈竹手'''|| (IHQ) || : {{charlist|sc=Hani|牟}}
|-
| '''戈竹口口'''|| (IHRR) || : {{charlist|sc=Hani|㢂}}
|-
| '''戈竹尸'''|| (IHS) || : {{charlist|sc=Hani|成}}
|-
| '''戈竹尸竹'''|| (IHSH) || : {{charlist|sc=Hani|𢦓}}
|-
| '''戈竹山'''|| (IHU) || : {{charlist|sc=Hani|允}}
|-
| '''戈竹女心'''|| (IHVP) || : {{charlist|sc=Hani|㡳}}
|-
| '''戈竹卜一火'''|| (IHYMF) || : {{charlist|sc=Hani|戚}}
|-
| '''戈竹難水'''|| (IHXE) || : {{charlist|sc=Hani|廋}}
|-
| '''戈竹難人'''|| (IHXO) || : {{charlist|sc=Hani|庾}}
|}
==戈戈 (II)==
{| lang="zh"
|-
| '''戈戈'''|| (II) || : {{charlist|sc=Hani|㕕広㡲戔}}
|-
| '''戈戈日女'''|| (IIAV) || : {{charlist|sc=Hani|㢃}}
|-
| '''戈戈月'''|| (IIB) || : {{charlist|sc=Hani|朗}}
|-
| '''戈戈月廿'''|| (IIBT) || : {{charlist|sc=Hani|盞}}
|-
| '''戈戈月山'''|| (IIBU) || : {{charlist|sc=Hani|䁉}}
|-
| '''戈戈月卜十'''|| (IIBYJ) || : {{charlist|sc=Hani|斚}}
|-
| '''戈戈火'''|| (IIF) || : {{charlist|sc=Hani|㷱}}
|-
| '''戈戈戈'''|| (III) || : {{charlist|sc=Hani|厽}}
|-
| '''戈戈戈木'''|| (IIID) || : {{charlist|sc=Hani|㕖}}
|-
| '''戈戈戈火'''|| (IIIF) || : {{charlist|sc=Hani|㕘絫}}
|-
| '''戈戈戈土'''|| (IIIG) || : {{charlist|sc=Hani|垒}}
|-
| '''戈戈戈竹'''|| (IIIH) || : {{charlist|sc=Hani|參}}
|-
| '''戈戈戈中'''|| (IIIL) || : {{charlist|sc=Hani|廊}}
|-
| '''戈戈戈一'''|| (IIIM) || : {{charlist|sc=Hani|叄}}
|-
| '''戈戈戈心'''|| (IIIP) || : {{charlist|sc=Hani|叅}}
|-
| '''戈戈十月'''|| (IIJB) || : {{charlist|sc=Hani|庯}}
|-
| '''戈戈大心'''|| (IIKP) || : {{charlist|sc=Hani|庞}}
|-
| '''戈戈中弓'''|| (IILN) || : {{charlist|sc=Hani|剆剗}}
|-
| '''戈戈中手'''|| (IILQ) || : {{charlist|sc=Hani|肈}}
|-
| '''戈戈一'''|| (IIM) || : {{charlist|sc=Hani|㦯}}
|-
| '''戈戈弓中'''|| (IINL) || : {{charlist|sc=Hani|郎䣌}}
|-
| '''戈戈弓人'''|| (IINO) || : {{charlist|sc=Hani|欴}}
|-
| '''戈戈人月人'''|| (IIOBO) || : {{charlist|sc=Hani|腐}}
|-
| '''戈戈口日山'''|| (IIRAU) || : {{charlist|sc=Hani|郒}}
|-
| '''戈戈尸'''|| (IIS) || : {{charlist|sc=Hani|庐}}
|-
| '''戈戈山竹'''|| (IIUH) || : {{charlist|sc=Hani|庬}}
|-
| '''戈戈女水'''|| (IIVE) || : {{charlist|sc=Hani|废}}
|-
| '''戈戈女戈火'''|| (IIVIF) || : {{charlist|sc=Hani|䋯}}
|-
| '''戈戈卜心山'''|| (IIYPU) || : {{charlist|sc=Hani|虦}}
|-
| '''戈戈難心'''|| (IIXP) || : {{charlist|sc=Hani|廘}}
|}
==戈十 (IJ)==
{| lang="zh"
|-
| '''戈十'''|| (IJ) || : {{charlist|sc=Hani|戎}}
|-
| '''戈十月'''|| (IJB) || : {{charlist|sc=Hani|甫}}
|-
| '''戈十月廿'''|| (IJBT) || : {{charlist|sc=Hani|盏}}
|-
| '''戈十金'''|| (IJC) || : {{charlist|sc=Hani|朮}}
|-
| '''戈十金金'''|| (IJCC) || : {{charlist|sc=Hani|麻}}
|-
| '''戈十木木'''|| (IJDD) || : {{charlist|sc=Hani|䢄}}
|-
| '''戈十水'''|| (IJE) || : {{charlist|sc=Hani|庋求}}
|-
| '''戈十火水'''|| (IJFE) || : {{charlist|sc=Hani|廀}}
|-
| '''戈十十月'''|| (IJJB) || : {{charlist|sc=Hani|廟}}
|-
| '''戈十十弓'''|| (IJJN) || : {{charlist|sc=Hani|㐣}}
|-
| '''戈十十心'''|| (IJJP) || : {{charlist|sc=Hani|廤}}
|-
| '''戈十大木'''|| (IJKD) || : {{charlist|sc=Hani|庨}}
|-
| '''戈十中弓'''|| (IJLN) || : {{charlist|sc=Hani|刬}}
|-
| '''戈十田十'''|| (IJWJ) || : {{charlist|sc=Hani|庫}}
|}
==戈大 (IK)==
{| lang="zh"
|-
| '''戈大'''|| (IK) || : {{charlist|sc=Hani|义庆犬}}
|-
| '''戈大月'''|| (IKB) || : {{charlist|sc=Hani|䏿}}
|-
| '''戈大月山'''|| (IKBU) || : {{charlist|sc=Hani|䁈}}
|-
| '''戈大月山金'''|| (IKBUC) || : {{charlist|sc=Hani|貵}}
|-
| '''戈大木'''|| (IKD) || : {{charlist|sc=Hani|𣘼}}
|-
| '''戈大竹日火'''|| (IKHAF) || : {{charlist|sc=Hani|䳊}}
|-
| '''戈大竹竹竹'''|| (IKHHH) || : {{charlist|sc=Hani|参}}
|-
| '''戈大竹弓戈'''|| (IKHNI) || : {{charlist|sc=Hani|飆}}
|-
| '''戈大竹弓大'''|| (IKHNK) || : {{charlist|sc=Hani|飙}}
|-
| '''戈大戈大'''|| (IKIK) || : {{charlist|sc=Hani|㹜}}
|-
| '''戈大戈大大'''|| (IKIKK) || : {{charlist|sc=Hani|猋}}
|-
| '''戈大十田十'''|| (IKJWJ) || : {{charlist|sc=Hani|軬}}
|-
| '''戈大大'''|| (IKK) || : {{charlist|sc=Hani|犮}}
|-
| '''戈大中手'''|| (IKLQ) || : {{charlist|sc=Hani|𦘦}}
|-
| '''戈大中山'''|| (IKLU) || : {{charlist|sc=Hani|庵}}
|-
| '''戈大一土'''|| (IKMG) || : {{charlist|sc=Hani|嗏𤨣}}
|-
| '''戈大一一一'''|| (IKMMM) || : {{charlist|sc=Hani|叁}}
|-
| '''戈大一口'''|| (IKMR) || : {{charlist|sc=Hani|㢊}}
|-
| '''戈大弓火'''|| (IKNF) || : {{charlist|sc=Hani|為}}
|-
| '''戈大弓人'''|| (IKNO) || : {{charlist|sc=Hani|欸}}
|-
| '''戈大人心'''|| (IKOP) || : {{charlist|sc=Hani|㥷}}
|-
| '''戈大心'''|| (IKP) || : {{charlist|sc=Hani|慦龙}}
|-
| '''戈大心月'''|| (IKPB) || : {{charlist|sc=Hani|廗}}
|-
| '''戈大手'''|| (IKQ) || : {{charlist|sc=Hani|库}}
|-
| '''戈大口'''|| (IKR) || : {{charlist|sc=Hani|啓}}
|-
| '''戈大口一'''|| (IKRM) || : {{charlist|sc=Hani|彧}}
|-
| '''戈大尸戈'''|| (IKSI) || : {{charlist|sc=Hani|为}}
|-
| '''戈大山'''|| (IKU) || : {{charlist|sc=Hani|尤}}
|-
| '''戈大田'''|| (IKW) || : {{charlist|sc=Hani|畚}}
|-
| '''戈大卜水'''|| (IKYE) || : {{charlist|sc=Hani|㪐}}
|}
==戈中 (IL)==
{| lang="zh"
|-
| '''戈中月'''|| (ILB) || : {{charlist|sc=Hani|庸}}
|-
| '''戈中水'''|| (ILE) || : {{charlist|sc=Hani|康}}
|-
| '''戈中土'''|| (ILG) || : {{charlist|sc=Hani|𡏅}}
|-
| '''戈中戈中'''|| (ILIL) || : {{charlist|sc=Hani|州}}
|-
| '''戈中中一戈'''|| (ILLMI) || : {{charlist|sc=Hani|䗝}}
|-
| '''戈中一人'''|| (ILMO) || : {{charlist|sc=Hani|庣}}
|-
| '''戈中一卜'''|| (ILMY) || : {{charlist|sc=Hani|䨾}}
|-
| '''戈中弓'''|| (ILN) || : {{charlist|sc=Hani|划}}
|-
| '''戈中人'''|| (ILO) || : {{charlist|sc=Hani|庚}}
|-
| '''戈中人月'''|| (ILOB) || : {{charlist|sc=Hani|𢉼}}
|-
| '''戈中人金'''|| (ILOC) || : {{charlist|sc=Hani|賡}}
|-
| '''戈中人人'''|| (ILOO) || : {{charlist|sc=Hani|赓}}
|-
| '''戈中手'''|| (ILQ) || : {{charlist|sc=Hani|㡽}}
|-
| '''戈中口'''|| (ILR) || : {{charlist|sc=Hani|唐}}
|-
| '''戈中尸'''|| (ILS) || : {{charlist|sc=Hani|门}}
|-
| '''戈中田'''|| (ILW) || : {{charlist|sc=Hani|庙}}
|-
| '''戈中田心'''|| (ILWP) || : {{charlist|sc=Hani|㡼曵}}
|-
| '''戈中田女'''|| (ILWV) || : {{charlist|sc=Hani|廔}}
|}
==戈一 (IM)==
{| lang="zh"
|-
| '''戈一'''|| (IM) || : {{charlist|sc=Hani|冫}}
|-
| '''戈一月日金'''|| (IMBAC) || : {{charlist|sc=Hani|凕}}
|-
| '''戈一月金口'''|| (IMBCR) || : {{charlist|sc=Hani|㓏}}
|-
| '''戈一月土口'''|| (IMBGR) || : {{charlist|sc=Hani|凋}}
|-
| '''戈一月一口'''|| (IMBMR) || : {{charlist|sc=Hani|㓊}}
|-
| '''戈一月尸木'''|| (IMBSD) || : {{charlist|sc=Hani|凈}}
|-
| '''戈一金'''|| (IMC) || : {{charlist|sc=Hani|凎剢}}
|-
| '''戈一金田'''|| (IMCW) || : {{charlist|sc=Hani|庮}}
|-
| '''戈一木'''|| (IMD) || : {{charlist|sc=Hani|㡰}}
|-
| '''戈一木金戈'''|| (IMDCI) || : {{charlist|sc=Hani|凇}}
|-
| '''戈一木木火'''|| (IMDDF) || : {{charlist|sc=Hani|凚}}
|-
| '''戈一木大'''|| (IMDK) || : {{charlist|sc=Hani|决}}
|-
| '''戈一木中'''|| (IMDL) || : {{charlist|sc=Hani|凁}}
|-
| '''戈一木田'''|| (IMDW) || : {{charlist|sc=Hani|凍}}
|-
| '''戈一水'''|| (IME) || : {{charlist|sc=Hani|冰㳼}}
|-
| '''戈一火手'''|| (IMFQ) || : {{charlist|sc=Hani|冸}}
|-
| '''戈一土金水'''|| (IMGCE) || : {{charlist|sc=Hani|凌}}
|-
| '''戈一土金土'''|| (IMGCG) || : {{charlist|sc=Hani|㓐}}
|-
| '''戈一土廿'''|| (IMGT) || : {{charlist|sc=Hani|㢅}}
|-
| '''戈一土廿十'''|| (IMGTJ) || : {{charlist|sc=Hani|㓑}}
|-
| '''戈一土田金'''|| (IMGWC) || : {{charlist|sc=Hani|凟}}
|-
| '''戈一竹土山'''|| (IMHGU) || : {{charlist|sc=Hani|冼}}
|-
| '''戈一竹竹戈'''|| (IMHHI) || : {{charlist|sc=Hani|㓔}}
|-
| '''戈一竹十口'''|| (IMHJR) || : {{charlist|sc=Hani|㓉}}
|-
| '''戈一竹大'''|| (IMHK) || : {{charlist|sc=Hani|㓇}}
|-
| '''戈一竹山戈'''|| (IMHUI) || : {{charlist|sc=Hani|䰥}}
|-
| '''戈一戈金水'''|| (IMICE) || : {{charlist|sc=Hani|𠗕}}
|-
| '''戈一戈木手'''|| (IMIDQ) || : {{charlist|sc=Hani|𠘚}}
|-
| '''戈一戈土'''|| (IMIG) || : {{charlist|sc=Hani|庢㦶}}
|-
| '''戈一戈竹火'''|| (IMIHF) || : {{charlist|sc=Hani|㓕}}
|-
| '''戈一戈竹口'''|| (IMIHR) || : {{charlist|sc=Hani|减}}
|-
| '''戈一戈大大'''|| (IMIKK) || : {{charlist|sc=Hani|冹}}
|-
| '''戈一戈口'''|| (IMIR) || : {{charlist|sc=Hani|冶}}
|-
| '''戈一十月十'''|| (IMJBJ) || : {{charlist|sc=Hani|㓓}}
|-
| '''戈一十中女'''|| (IMJLV) || : {{charlist|sc=Hani|凄}}
|-
| '''戈一大木'''|| (IMKD) || : {{charlist|sc=Hani|冻}}
|-
| '''戈一大山'''|| (IMKU) || : {{charlist|sc=Hani|庑}}
|-
| '''戈一中'''|| (IML) || : {{charlist|sc=Hani|冲丬}}
|-
| '''戈一中手'''|| (IMLQ) || : {{charlist|sc=Hani|冿}}
|-
| '''戈一一'''|| (IMM) || : {{charlist|sc=Hani|冮}}
|-
| '''戈一一土戈'''|| (IMMGI) || : {{charlist|sc=Hani|鿑𤦂}}
|-
| '''戈一一一口'''|| (IMMMR) || : {{charlist|sc=Hani|𠗐}}
|-
| '''戈一一弓'''|| (IMMN) || : {{charlist|sc=Hani|㓅}}
|-
| '''戈一一弓弓'''|| (IMMNN) || : {{charlist|sc=Hani|冽}}
|-
| '''戈一一心'''|| (IMMP) || : {{charlist|sc=Hani|廲}}
|-
| '''戈一一口'''|| (IMMR) || : {{charlist|sc=Hani|㓈}}
|-
| '''戈一一女竹'''|| (IMMVH) || : {{charlist|sc=Hani|冴}}
|-
| '''戈一一女一'''|| (IMMVM) || : {{charlist|sc=Hani|冱𠗊}}
|-
| '''戈一一田木'''|| (IMMWD) || : {{charlist|sc=Hani|凓}}
|-
| '''戈一一田土'''|| (IMMWG) || : {{charlist|sc=Hani|凐}}
|-
| '''戈一弓'''|| (IMN) || : {{charlist|sc=Hani|庁}}
|-
| '''戈一弓日山'''|| (IMNAU) || : {{charlist|sc=Hani|凂}}
|-
| '''戈一弓月大'''|| (IMNBK) || : {{charlist|sc=Hani|𠗫}}
|-
| '''戈一弓木廿'''|| (IMNDT) || : {{charlist|sc=Hani|𠗠}}
|-
| '''戈一弓人'''|| (IMNO) || : {{charlist|sc=Hani|次㰲}}
|-
| '''戈一弓尸木'''|| (IMNSD) || : {{charlist|sc=Hani|净}}
|-
| '''戈一弓山戈'''|| (IMNUI) || : {{charlist|sc=Hani|𠗟}}
|-
| '''戈一弓女一'''|| (IMNVM) || : {{charlist|sc=Hani|冯}}
|-
| '''戈一人土'''|| (IMOG) || : {{charlist|sc=Hani|准}}
|-
| '''戈一人戈戈'''|| (IMOII) || : {{charlist|sc=Hani|冷}}
|-
| '''戈一人戈口'''|| (IMOIR) || : {{charlist|sc=Hani|凔}}
|-
| '''戈一人戈女'''|| (IMOIV) || : {{charlist|sc=Hani|飡}}
|-
| '''戈一人一木'''|| (IMOMD) || : {{charlist|sc=Hani|凃}}
|-
| '''戈一人一土'''|| (IMOMG) || : {{charlist|sc=Hani|㓌}}
|-
| '''戈一人一口'''|| (IMOMR) || : {{charlist|sc=Hani|冾}}
|-
| '''戈一人心'''|| (IMOP) || : {{charlist|sc=Hani|㓆}}
|-
| '''戈一心'''|| (IMP) || : {{charlist|sc=Hani|惑}}
|-
| '''戈一心竹竹'''|| (IMPHH) || : {{charlist|sc=Hani|𠖳}}
|-
| '''戈一心大人'''|| (IMPKO) || : {{charlist|sc=Hani|凝}}
|-
| '''戈一手竹火'''|| (IMQHF) || : {{charlist|sc=Hani|㓗}}
|-
| '''戈一手大大'''|| (IMQKK) || : {{charlist|sc=Hani|凑}}
|-
| '''戈一手一月'''|| (IMQMB) || : {{charlist|sc=Hani|凊}}
|-
| '''戈一口竹山'''|| (IMRHU) || : {{charlist|sc=Hani|况}}
|-
| '''戈一口廿'''|| (IMRT) || : {{charlist|sc=Hani|㢄}}
|-
| '''戈一口女心'''|| (IMRVP) || : {{charlist|sc=Hani|冺}}
|-
| '''戈一尸中中'''|| (IMSLL) || : {{charlist|sc=Hani|臧}}
|-
| '''戈一尸一水'''|| (IMSME) || : {{charlist|sc=Hani|㓎}}
|-
| '''戈一尸手火'''|| (IMSQF) || : {{charlist|sc=Hani|馮}}
|-
| '''戈一尸山火'''|| (IMSUF) || : {{charlist|sc=Hani|𠘑凞𠘕}}
|-
| '''戈一廿金'''|| (IMTC) || : {{charlist|sc=Hani|㓋}}
|-
| '''戈一廿金中'''|| (IMTCL) || : {{charlist|sc=Hani|凘}}
|-
| '''戈一山水'''|| (IMUE) || : {{charlist|sc=Hani|廈}}
|-
| '''戈一山一廿'''|| (IMUMT) || : {{charlist|sc=Hani|凒}}
|-
| '''戈一山人土'''|| (IMUOG) || : {{charlist|sc=Hani|凗}}
|-
| '''戈一女竹'''|| (IMVH) || : {{charlist|sc=Hani|庌}}
|-
| '''戈一女戈木'''|| (IMVID) || : {{charlist|sc=Hani|𠘙}}
|-
| '''戈一田十口'''|| (IMWJR) || : {{charlist|sc=Hani|凅}}
|-
| '''戈一田大'''|| (IMWK) || : {{charlist|sc=Hani|𠗃}}
|-
| '''戈一田中十'''|| (IMWLJ) || : {{charlist|sc=Hani|凙}}
|-
| '''戈一田廿十'''|| (IMWTJ) || : {{charlist|sc=Hani|㓖}}
|-
| '''戈一卜戈山'''|| (IMYIU) || : {{charlist|sc=Hani|㓍}}
|-
| '''戈一卜口火'''|| (IMYRF) || : {{charlist|sc=Hani|凉}}
|-
| '''戈一卜田木'''|| (IMYWD) || : {{charlist|sc=Hani|凜}}
|-
| '''戈一卜田火'''|| (IMYWF) || : {{charlist|sc=Hani|凛}}
|}
==戈弓 (IN)==
{| lang="zh"
|-
| '''戈弓月手'''|| (INBQ) || : {{charlist|sc=Hani|廨}}
|-
| '''戈弓水'''|| (INE) || : {{charlist|sc=Hani|永}}
|-
| '''戈弓火木'''|| (INFD) || : {{charlist|sc=Hani|㢝}}
|-
| '''戈弓火手'''|| (INFQ) || : {{charlist|sc=Hani|廯}}
|-
| '''戈弓戈弓'''|| (ININ) || : {{charlist|sc=Hani|序㢁}}
|-
| '''戈弓大土'''|| (INKG) || : {{charlist|sc=Hani|庭}}
|-
| '''戈弓中'''|| (INL) || : {{charlist|sc=Hani|邝}}
|-
| '''戈弓中戈'''|| (INLI) || : {{charlist|sc=Hani|廕}}
|-
| '''戈弓中口'''|| (INLR) || : {{charlist|sc=Hani|㢌}}
|-
| '''戈弓弓竹'''|| (INNH) || : {{charlist|sc=Hani|㐧}}
|-
| '''戈弓人'''|| (INO) || : {{charlist|sc=Hani|之㡱}}
|-
| '''戈弓人水'''|| (INOE) || : {{charlist|sc=Hani|廢}}
|-
| '''戈弓人心'''|| (INOP) || : {{charlist|sc=Hani|廃}}
|-
| '''戈弓女'''|| (INV) || : {{charlist|sc=Hani|讠}}
|}
==戈人 (IO)==
{| lang="zh"
|-
| '''戈人'''|| (IO) || : {{charlist|sc=Hani|庂}}
|-
| '''戈人月人'''|| (IOBO) || : {{charlist|sc=Hani|资}}
|-
| '''戈人月廿'''|| (IOBT) || : {{charlist|sc=Hani|盗}}
|-
| '''戈人月山金'''|| (IOBUC) || : {{charlist|sc=Hani|資}}
|-
| '''戈人木'''|| (IOD) || : {{charlist|sc=Hani|庥栥}}
|-
| '''戈人木戈'''|| (IODI) || : {{charlist|sc=Hani|府}}
|-
| '''戈人火木'''|| (IOFD) || : {{charlist|sc=Hani|粢}}
|-
| '''戈人土'''|| (IOG) || : {{charlist|sc=Hani|垐㢈}}
|-
| '''戈人土十'''|| (IOGJ) || : {{charlist|sc=Hani|㢑}}
|-
| '''戈人土一'''|| (IOGM) || : {{charlist|sc=Hani|鹰}}
|-
| '''戈人土口'''|| (IOGR) || : {{charlist|sc=Hani|譍}}
|-
| '''戈人竹日火'''|| (IOHAF) || : {{charlist|sc=Hani|䳐鶊}}
|-
| '''戈人竹木'''|| (IOHD) || : {{charlist|sc=Hani|秶}}
|-
| '''戈人戈火'''|| (IOIF) || : {{charlist|sc=Hani|焤}}
|-
| '''戈人戈戈'''|| (IOII) || : {{charlist|sc=Hani|㡵}}
|-
| '''戈人戈弓'''|| (IOIN) || : {{charlist|sc=Hani|庈}}
|-
| '''戈人大'''|| (IOK) || : {{charlist|sc=Hani|矣}}
|-
| '''戈人中中'''|| (IOLL) || : {{charlist|sc=Hani|庎}}
|-
| '''戈人一日'''|| (IOMA) || : {{charlist|sc=Hani|廥}}
|-
| '''戈人一木'''|| (IOMD) || : {{charlist|sc=Hani|庩}}
|-
| '''戈人一弓'''|| (IOMN) || : {{charlist|sc=Hani|㢏}}
|-
| '''戈人一人'''|| (IOMO) || : {{charlist|sc=Hani|㢛}}
|-
| '''戈人一口'''|| (IOMR) || : {{charlist|sc=Hani|𢈈}}
|-
| '''戈人一女弓'''|| (IOMVN) || : {{charlist|sc=Hani|瓷}}
|-
| '''戈人弓'''|| (ION) || : {{charlist|sc=Hani|乲}}
|-
| '''戈人弓弓'''|| (IONN) || : {{charlist|sc=Hani|㢋}}
|-
| '''戈人人土'''|| (IOOG) || : {{charlist|sc=Hani|座䧹}}
|-
| '''戈人人戈女'''|| (IOOIV) || : {{charlist|sc=Hani|餈}}
|-
| '''戈人心'''|| (IOP) || : {{charlist|sc=Hani|恣}}
|-
| '''戈人心卜一'''|| (IOPYM) || : {{charlist|sc=Hani|鹒}}
|-
| '''戈人口'''|| (IOR) || : {{charlist|sc=Hani|咨}}
|-
| '''戈人口木'''|| (IORD) || : {{charlist|sc=Hani|楶}}
|-
| '''戈人尸'''|| (IOS) || : {{charlist|sc=Hani|㡸}}
|-
| '''戈人廿火'''|| (IOTF) || : {{charlist|sc=Hani|廡}}
|-
| '''戈人女'''|| (IOV) || : {{charlist|sc=Hani|姿}}
|-
| '''戈人女戈火'''|| (IOVIF) || : {{charlist|sc=Hani|䌠}}
|}
==戈心 (IP)==
{| lang="zh"
|-
| '''戈心'''|| (IP) || : {{charlist|sc=Hani|庀弋}}
|-
| '''戈心月一'''|| (IPBM) || : {{charlist|sc=Hani|麆}}
|-
| '''戈心月山金'''|| (IPBUC) || : {{charlist|sc=Hani|貣}}
|-
| '''戈心金'''|| (IPC) || : {{charlist|sc=Hani|鏖}}
|-
| '''戈心木'''|| (IPD) || : {{charlist|sc=Hani|㭍䴢}}
|-
| '''戈心火'''|| (IPF) || : {{charlist|sc=Hani|熊麃}}
|-
| '''戈心火木'''|| (IPFD) || : {{charlist|sc=Hani|麋}}
|-
| '''戈心火木手'''|| (IPFDQ) || : {{charlist|sc=Hani|麟}}
|-
| '''戈心土'''|| (IPG) || : {{charlist|sc=Hani|塵}}
|-
| '''戈心竹日火'''|| (IPHAF) || : {{charlist|sc=Hani|鳶𪈠}}
|-
| '''戈心竹木'''|| (IPHD) || : {{charlist|sc=Hani|麇}}
|-
| '''戈心竹木日'''|| (IPHDA) || : {{charlist|sc=Hani|麘}}
|-
| '''戈心竹木女'''|| (IPHDV) || : {{charlist|sc=Hani|䴧}}
|-
| '''戈心竹水口'''|| (IPHER) || : {{charlist|sc=Hani|𪊲}}
|-
| '''戈心竹火木'''|| (IPHFD) || : {{charlist|sc=Hani|䴣}}
|-
| '''戈心竹竹戈'''|| (IPHHI) || : {{charlist|sc=Hani|麝}}
|-
| '''戈心竹大'''|| (IPHK) || : {{charlist|sc=Hani|䴠}}
|-
| '''戈心竹弓'''|| (IPHN) || : {{charlist|sc=Hani|麂}}
|-
| '''戈心竹弓戈'''|| (IPHNI) || : {{charlist|sc=Hani|䴟}}
|-
| '''戈心竹人口'''|| (IPHOR) || : {{charlist|sc=Hani|麔}}
|-
| '''戈心竹手一'''|| (IPHQM) || : {{charlist|sc=Hani|䴤𪊟}}
|-
| '''戈心竹難山'''|| (IPHXU) || : {{charlist|sc=Hani|麑}}
|-
| '''戈心戈金水'''|| (IPICE) || : {{charlist|sc=Hani|𪊴}}
|-
| '''戈心戈竹口'''|| (IPIHR) || : {{charlist|sc=Hani|麙}}
|-
| '''戈心戈弓水'''|| (IPINE) || : {{charlist|sc=Hani|䴪}}
|-
| '''戈心戈心心'''|| (IPIPP) || : {{charlist|sc=Hani|麤}}
|-
| '''戈心大尸口'''|| (IPKSR) || : {{charlist|sc=Hani|䴥}}
|-
| '''戈心中戈戈'''|| (IPLII) || : {{charlist|sc=Hani|䘅}}
|-
| '''戈心中一戈'''|| (IPLMI) || : {{charlist|sc=Hani|螚}}
|-
| '''戈心一'''|| (IPM) || : {{charlist|sc=Hani|弌式}}
|-
| '''戈心一月金'''|| (IPMBC) || : {{charlist|sc=Hani|䫲}}
|-
| '''戈心一月戈'''|| (IPMBI) || : {{charlist|sc=Hani|䴫}}
|-
| '''戈心一月口'''|| (IPMBR) || : {{charlist|sc=Hani|麢}}
|-
| '''戈心一金'''|| (IPMC) || : {{charlist|sc=Hani|廎}}
|-
| '''戈心一土'''|| (IPMG) || : {{charlist|sc=Hani|䶭}}
|-
| '''戈心一竹火'''|| (IPMHF) || : {{charlist|sc=Hani|䴨}}
|-
| '''戈心一大'''|| (IPMK) || : {{charlist|sc=Hani|䶮}}
|-
| '''戈心一一'''|| (IPMM) || : {{charlist|sc=Hani|弍}}
|-
| '''戈心一一金'''|| (IPMMC) || : {{charlist|sc=Hani|貳}}
|-
| '''戈心一一一'''|| (IPMMM) || : {{charlist|sc=Hani|弎}}
|-
| '''戈心一一人'''|| (IPMMO) || : {{charlist|sc=Hani|贰}}
|-
| '''戈心一一女'''|| (IPMMV) || : {{charlist|sc=Hani|麎}}
|-
| '''戈心一人'''|| (IPMO) || : {{charlist|sc=Hani|庼}}
|-
| '''戈心一口'''|| (IPMR) || : {{charlist|sc=Hani|砻}}
|-
| '''戈心一女弓'''|| (IPMVN) || : {{charlist|sc=Hani|㼾}}
|-
| '''戈心一田木'''|| (IPMWD) || : {{charlist|sc=Hani|麜}}
|-
| '''戈心一田火'''|| (IPMWF) || : {{charlist|sc=Hani|䴩}}
|-
| '''戈心一田一'''|| (IPMWM) || : {{charlist|sc=Hani|麠}}
|-
| '''戈心弓大土'''|| (IPNKG) || : {{charlist|sc=Hani|𪊶}}
|-
| '''戈心弓中'''|| (IPNL) || : {{charlist|sc=Hani|鄜}}
|-
| '''戈心弓尸十'''|| (IPNSJ) || : {{charlist|sc=Hani|麛}}
|-
| '''戈心人土'''|| (IPOG) || : {{charlist|sc=Hani|隿}}
|-
| '''戈心人戈女'''|| (IPOIV) || : {{charlist|sc=Hani|䬥}}
|-
| '''戈心人心'''|| (IPOP) || : {{charlist|sc=Hani|㓒}}
|-
| '''戈心心'''|| (IPP) || : {{charlist|sc=Hani|庇忒態麀}}
|-
| '''戈心心口山'''|| (IPPRU) || : {{charlist|sc=Hani|麅}}
|-
| '''戈心心卜一'''|| (IPPYM) || : {{charlist|sc=Hani|鸢}}
|-
| '''戈心口口大'''|| (IPRRK) || : {{charlist|sc=Hani|麣}}
|-
| '''戈心口山'''|| (IPRU) || : {{charlist|sc=Hani|庖}}
|-
| '''戈心口女大'''|| (IPRVK) || : {{charlist|sc=Hani|麌}}
|-
| '''戈心口卜水'''|| (IPRYE) || : {{charlist|sc=Hani|麚}}
|-
| '''戈心尸十'''|| (IPSJ) || : {{charlist|sc=Hani|聋}}
|-
| '''戈心尸大口'''|| (IPSKR) || : {{charlist|sc=Hani|麏}}
|-
| '''戈心廿金'''|| (IPTC) || : {{charlist|sc=Hani|龚}}
|-
| '''戈心廿一'''|| (IPTM) || : {{charlist|sc=Hani|甙}}
|-
| '''戈心廿一金'''|| (IPTMC) || : {{charlist|sc=Hani|麒}}
|-
| '''戈心山'''|| (IPU) || : {{charlist|sc=Hani|庉}}
|-
| '''戈心田木'''|| (IPWD) || : {{charlist|sc=Hani|𪊽}}
|-
| '''戈心田竹木'''|| (IPWHD) || : {{charlist|sc=Hani|麕}}
|-
| '''戈心卜土'''|| (IPYG) || : {{charlist|sc=Hani|麈}}
|-
| '''戈心卜竹女'''|| (IPYHV) || : {{charlist|sc=Hani|袭}}
|-
| '''戈心卜戈山'''|| (IPYIU) || : {{charlist|sc=Hani|麍}}
|-
| '''戈心卜大'''|| (IPYK) || : {{charlist|sc=Hani|𪊓}}
|-
| '''戈心卜大口'''|| (IPYKR) || : {{charlist|sc=Hani|麐𪊺}}
|-
| '''戈心卜一口'''|| (IPYMR) || : {{charlist|sc=Hani|詟䴦}}
|-
| '''戈心卜口火'''|| (IPYRF) || : {{charlist|sc=Hani|麖}}
|-
| '''戈心卜廿十'''|| (IPYTJ) || : {{charlist|sc=Hani|麞𪋟}}
|-
| '''戈心卜難'''|| (IPYX) || : {{charlist|sc=Hani|麡}}
|}
==戈手 (IQ)==
{| lang="zh"
|-
| '''戈手'''|| (IQ) || : {{charlist|sc=Hani|㦮}}
|-
| '''戈手竹日火'''|| (IQHAF) || : {{charlist|sc=Hani|鴾}}
|-
| '''戈手竹火'''|| (IQHF) || : {{charlist|sc=Hani|緳}}
|-
| '''戈手十水'''|| (IQJE) || : {{charlist|sc=Hani|庪}}
|-
| '''戈手大尸'''|| (IQKS) || : {{charlist|sc=Hani|劺}}
|}
==戈口 (IR)==
{| lang="zh"
|-
| '''戈口'''|| (IR) || : {{charlist|sc=Hani|台}}
|-
| '''戈口金'''|| (IRC) || : {{charlist|sc=Hani|㡶}}
|-
| '''戈口木'''|| (IRD) || : {{charlist|sc=Hani|枲}}
|-
| '''戈口火'''|| (IRF) || : {{charlist|sc=Hani|炱}}
|-
| '''戈口竹日火'''|| (IRHAF) || : {{charlist|sc=Hani|鶶}}
|-
| '''戈口竹竹竹'''|| (IRHHH) || : {{charlist|sc=Hani|㣍}}
|-
| '''戈口竹手山'''|| (IRHQU) || : {{charlist|sc=Hani|㲥}}
|-
| '''戈口中弓'''|| (IRLN) || : {{charlist|sc=Hani|刣}}
|-
| '''戈口一'''|| (IRM) || : {{charlist|sc=Hani|或}}
|-
| '''戈口一月金'''|| (IRMBC) || : {{charlist|sc=Hani|顑}}
|-
| '''戈口一土'''|| (IRMG) || : {{charlist|sc=Hani|戜}}
|-
| '''戈口一女弓'''|| (IRMVN) || : {{charlist|sc=Hani|瓵㼺}}
|-
| '''戈口弓月土'''|| (IRNBG) || : {{charlist|sc=Hani|觱}}
|-
| '''戈口弓中'''|| (IRNL) || : {{charlist|sc=Hani|邰}}
|-
| '''戈口弓人'''|| (IRNO) || : {{charlist|sc=Hani|㰧㰹}}
|-
| '''戈口心'''|| (IRP) || : {{charlist|sc=Hani|怠感}}
|-
| '''戈口山'''|| (IRU) || : {{charlist|sc=Hani|乨}}
|-
| '''戈口卜一山'''|| (IRYMU) || : {{charlist|sc=Hani|䶠}}
|-
| '''戈口卜廿十'''|| (IRYTJ) || : {{charlist|sc=Hani|辝}}
|}
==戈尸 (IS)==
{| lang="zh"
|-
| '''戈尸'''|| (IS) || : {{charlist|sc=Hani|户}}
|-
| '''戈尸日'''|| (ISA) || : {{charlist|sc=Hani|间}}
|-
| '''戈尸月廿'''|| (ISBT) || : {{charlist|sc=Hani|盛}}
|-
| '''戈尸木'''|| (ISD) || : {{charlist|sc=Hani|㦿}}
|-
| '''戈尸土戈'''|| (ISGI) || : {{charlist|sc=Hani|㧁}}
|-
| '''戈尸土心'''|| (ISGP) || : {{charlist|sc=Hani|廳}}
|-
| '''戈尸竹日火'''|| (ISHAF) || : {{charlist|sc=Hani|鳸}}
|-
| '''戈尸竹月口'''|| (ISHBR) || : {{charlist|sc=Hani|扄}}
|-
| '''戈尸竹弓'''|| (ISHN) || : {{charlist|sc=Hani|𠙖}}
|-
| '''戈尸十日'''|| (ISJA) || : {{charlist|sc=Hani|廜}}
|-
| '''戈尸十心'''|| (ISJP) || : {{charlist|sc=Hani|廰}}
|-
| '''戈尸中月'''|| (ISLB) || : {{charlist|sc=Hani|帍}}
|-
| '''戈尸中手'''|| (ISLQ) || : {{charlist|sc=Hani|肁}}
|-
| '''戈尸一月金'''|| (ISMBC) || : {{charlist|sc=Hani|䫆}}
|-
| '''戈尸一金'''|| (ISMC) || : {{charlist|sc=Hani|㢞}}
|-
| '''戈尸一竹'''|| (ISMH) || : {{charlist|sc=Hani|廖}}
|-
| '''戈尸一女弓'''|| (ISMVN) || : {{charlist|sc=Hani|㼩}}
|-
| '''戈尸弓'''|| (ISN) || : {{charlist|sc=Hani|戹}}
|-
| '''戈尸弓竹水'''|| (ISNHE) || : {{charlist|sc=Hani|㧀}}
|-
| '''戈尸弓戈弓'''|| (ISNIN) || : {{charlist|sc=Hani|扅}}
|-
| '''戈尸弓中'''|| (ISNL) || : {{charlist|sc=Hani|郕}}
|-
| '''戈尸人大'''|| (ISOK) || : {{charlist|sc=Hani|敷}}
|-
| '''戈尸口'''|| (ISR) || : {{charlist|sc=Hani|启}}
|-
| '''戈尸口十'''|| (ISRJ) || : {{charlist|sc=Hani|廦}}
|-
| '''戈尸女戈火'''|| (ISVIF) || : {{charlist|sc=Hani|䋀}}
|}
==戈廿 (IT)==
{| lang="zh"
|-
| '''戈廿'''|| (IT) || : {{charlist|sc=Hani|弁戒}}
|-
| '''戈廿日'''|| (ITA) || : {{charlist|sc=Hani|庴}}
|-
| '''戈廿金中'''|| (ITCL) || : {{charlist|sc=Hani|廝}}
|-
| '''戈廿水'''|| (ITE) || : {{charlist|sc=Hani|度}}
|-
| '''戈廿火'''|| (ITF) || : {{charlist|sc=Hani|庶}}
|-
| '''戈廿火戈'''|| (ITFI) || : {{charlist|sc=Hani|䗪}}
|-
| '''戈廿竹日火'''|| (ITHAF) || : {{charlist|sc=Hani|鴘}}
|-
| '''戈廿中月'''|| (ITLB) || : {{charlist|sc=Hani|席}}
|-
| '''戈廿中大'''|| (ITLK) || : {{charlist|sc=Hani|㢍}}
|-
| '''戈廿中一'''|| (ITLM) || : {{charlist|sc=Hani|廑}}
|-
| '''戈廿一月金'''|| (ITMBC) || : {{charlist|sc=Hani|䪻}}
|-
| '''戈廿一金'''|| (ITMC) || : {{charlist|sc=Hani|廣}}
|-
| '''戈廿一心'''|| (ITMP) || : {{charlist|sc=Hani|懬}}
|-
| '''戈廿一尸'''|| (ITMS) || : {{charlist|sc=Hani|㢙}}
|-
| '''戈廿人人'''|| (ITOO) || : {{charlist|sc=Hani|庻}}
|-
| '''戈廿心'''|| (ITP) || : {{charlist|sc=Hani|慿}}
|-
| '''戈廿手'''|| (ITQ) || : {{charlist|sc=Hani|庠}}
|-
| '''戈廿尸人'''|| (ITSO) || : {{charlist|sc=Hani|庹}}
|-
| '''戈廿廿'''|| (ITT) || : {{charlist|sc=Hani|庰}}
|-
| '''戈廿山'''|| (ITU) || : {{charlist|sc=Hani|㡿}}
|-
| '''戈廿田'''|| (ITW) || : {{charlist|sc=Hani|庿}}
|-
| '''戈廿田心'''|| (ITWP) || : {{charlist|sc=Hani|㢜}}
|-
| '''戈廿難金'''|| (ITXC) || : {{charlist|sc=Hani|廉}}
|-
| '''戈廿難火'''|| (ITXF) || : {{charlist|sc=Hani|㢘}}
|}
==戈山 (IU)==
{| lang="zh"
|-
| '''戈山竹竹竹'''|| (IUHHH) || : {{charlist|sc=Hani|尨}}
|}
==戈女 (IV)==
{| lang="zh"
|-
| '''戈女'''|| (IV) || : {{charlist|sc=Hani|戉}}
|-
| '''戈女日心女'''|| (IVAPV) || : {{charlist|sc=Hani|谒}}
|-
| '''戈女日田水'''|| (IVAWE) || : {{charlist|sc=Hani|谩}}
|-
| '''戈女月土口'''|| (IVBGR) || : {{charlist|sc=Hani|调}}
|-
| '''戈女月大手'''|| (IVBKQ) || : {{charlist|sc=Hani|诨}}
|-
| '''戈女月一'''|| (IVBM) || : {{charlist|sc=Hani|诅}}
|-
| '''戈女月一水'''|| (IVBME) || : {{charlist|sc=Hani|谖}}
|-
| '''戈女月人山'''|| (IVBOU) || : {{charlist|sc=Hani|谣}}
|-
| '''戈女月口'''|| (IVBR) || : {{charlist|sc=Hani|诇}}
|-
| '''戈女金戈'''|| (IVCI) || : {{charlist|sc=Hani|讼}}
|-
| '''戈女金口山'''|| (IVCRU) || : {{charlist|sc=Hani|说}}
|-
| '''戈女木竹水'''|| (IVDHE) || : {{charlist|sc=Hani|诐}}
|-
| '''戈女木戈'''|| (IVDI) || : {{charlist|sc=Hani|讨}}
|-
| '''戈女木大'''|| (IVDK) || : {{charlist|sc=Hani|诀}}
|-
| '''戈女木田火'''|| (IVDWF) || : {{charlist|sc=Hani|谏}}
|-
| '''戈女水手'''|| (IVEQ) || : {{charlist|sc=Hani|译}}
|-
| '''戈女火月'''|| (IVFB) || : {{charlist|sc=Hani|诮}}
|-
| '''戈女火月山'''|| (IVFBU) || : {{charlist|sc=Hani|谠}}
|-
| '''戈女火火'''|| (IVFF) || : {{charlist|sc=Hani|谈}}
|-
| '''戈女土木戈'''|| (IVGDI) || : {{charlist|sc=Hani|诗}}
|-
| '''戈女土土'''|| (IVGG) || : {{charlist|sc=Hani|诖}}
|-
| '''戈女土口'''|| (IVGR) || : {{charlist|sc=Hani|诘}}
|-
| '''戈女竹木尸'''|| (IVHDS) || : {{charlist|sc=Hani|诱}}
|-
| '''戈女竹木女'''|| (IVHDV) || : {{charlist|sc=Hani|诿}}
|-
| '''戈女竹土'''|| (IVHG) || : {{charlist|sc=Hani|㢕}}
|-
| '''戈女竹土口'''|| (IVHGR) || : {{charlist|sc=Hani|诰}}
|-
| '''戈女竹土山'''|| (IVHGU) || : {{charlist|sc=Hani|诜}}
|-
| '''戈女竹竹戈'''|| (IVHHI) || : {{charlist|sc=Hani|谢}}
|-
| '''戈女竹十木'''|| (IVHJD) || : {{charlist|sc=Hani|诛}}
|-
| '''戈女竹十口'''|| (IVHJR) || : {{charlist|sc=Hani|话}}
|-
| '''戈女竹一中'''|| (IVHML) || : {{charlist|sc=Hani|䜣}}
|-
| '''戈女竹一口'''|| (IVHMR) || : {{charlist|sc=Hani|诟}}
|-
| '''戈女竹一卜'''|| (IVHMY) || : {{charlist|sc=Hani|诉}}
|-
| '''戈女竹弓'''|| (IVHN) || : {{charlist|sc=Hani|讥}}
|-
| '''戈女竹弓水'''|| (IVHNE) || : {{charlist|sc=Hani|设}}
|-
| '''戈女竹弓大'''|| (IVHNK) || : {{charlist|sc=Hani|讽}}
|-
| '''戈女竹心'''|| (IVHP) || : {{charlist|sc=Hani|讬}}
|-
| '''戈女竹女戈'''|| (IVHVI) || : {{charlist|sc=Hani|诋}}
|-
| '''戈女竹難人'''|| (IVHXO) || : {{charlist|sc=Hani|谀}}
|-
| '''戈女戈竹尸'''|| (IVIHS) || : {{charlist|sc=Hani|诚}}
|-
| '''戈女戈大'''|| (IVIK) || : {{charlist|sc=Hani|议}}
|-
| '''戈女戈人大'''|| (IVIOK) || : {{charlist|sc=Hani|诶}}
|-
| '''戈女戈人口'''|| (IVIOR) || : {{charlist|sc=Hani|谘}}
|-
| '''戈女戈心一'''|| (IVIPM) || : {{charlist|sc=Hani|试}}
|-
| '''戈女戈口'''|| (IVIR) || : {{charlist|sc=Hani|诒}}
|-
| '''戈女戈尸月'''|| (IVISB) || : {{charlist|sc=Hani|谝}}
|-
| '''戈女戈廿'''|| (IVIT) || : {{charlist|sc=Hani|诫}}
|-
| '''戈女十'''|| (IVJ) || : {{charlist|sc=Hani|计}}
|-
| '''戈女十月大'''|| (IVJBK) || : {{charlist|sc=Hani|谳}}
|-
| '''戈女十月一'''|| (IVJBM) || : {{charlist|sc=Hani|谊}}
|-
| '''戈女十竹心'''|| (IVJHP) || : {{charlist|sc=Hani|诧}}
|-
| '''戈女十大日'''|| (IVJKA) || : {{charlist|sc=Hani|诸}}
|-
| '''戈女十中中'''|| (IVJLL) || : {{charlist|sc=Hani|谉}}
|-
| '''戈女十弓大'''|| (IVJNK) || : {{charlist|sc=Hani|读}}
|-
| '''戈女十口'''|| (IVJR) || : {{charlist|sc=Hani|诂}}
|-
| '''戈女大火'''|| (IVKF) || : {{charlist|sc=Hani|诙}}
|-
| '''戈女大竹土'''|| (IVKHG) || : {{charlist|sc=Hani|诳}}
|-
| '''戈女大尸'''|| (IVKS) || : {{charlist|sc=Hani|勆}}
|-
| '''戈女中中中'''|| (IVLLL) || : {{charlist|sc=Hani|训}}
|-
| '''戈女中中心'''|| (IVLLP) || : {{charlist|sc=Hani|䜨}}
|-
| '''戈女中一卜'''|| (IVLMY) || : {{charlist|sc=Hani|诽}}
|-
| '''戈女中尸田'''|| (IVLSW) || : {{charlist|sc=Hani|谰}}
|-
| '''戈女一'''|| (IVM) || : {{charlist|sc=Hani|讧}}
|-
| '''戈女一火十'''|| (IVMFJ) || : {{charlist|sc=Hani|评}}
|-
| '''戈女一十'''|| (IVMJ) || : {{charlist|sc=Hani|讦}}
|-
| '''戈女一一口'''|| (IVMMR) || : {{charlist|sc=Hani|语}}
|-
| '''戈女一弓'''|| (IVMN) || : {{charlist|sc=Hani|订}}
|-
| '''戈女一弓口'''|| (IVMNR) || : {{charlist|sc=Hani|诃}}
|-
| '''戈女一人人'''|| (IVMOO) || : {{charlist|sc=Hani|诬}}
|-
| '''戈女一尸人'''|| (IVMSO) || : {{charlist|sc=Hani|诼}}
|-
| '''戈女一山日'''|| (IVMUA) || : {{charlist|sc=Hani|谮}}
|-
| '''戈女一女竹'''|| (IVMVH) || : {{charlist|sc=Hani|讶}}
|-
| '''戈女一田十'''|| (IVMWJ) || : {{charlist|sc=Hani|谭}}
|-
| '''戈女一卜一'''|| (IVMYM) || : {{charlist|sc=Hani|证}}
|-
| '''戈女弓金口'''|| (IVNCR) || : {{charlist|sc=Hani|谵}}
|-
| '''戈女弓竹月'''|| (IVNHB) || : {{charlist|sc=Hani|谲}}
|-
| '''戈女弓竹難'''|| (IVNHX) || : {{charlist|sc=Hani|谄}}
|-
| '''戈女弓戈月'''|| (IVNIB) || : {{charlist|sc=Hani|诵}}
|-
| '''戈女弓十'''|| (IVNJ) || : {{charlist|sc=Hani|讯}}
|-
| '''戈女弓大一'''|| (IVNKM) || : {{charlist|sc=Hani|䜥}}
|-
| '''戈女弓大女'''|| (IVNKV) || : {{charlist|sc=Hani|诞}}
|-
| '''戈女弓中'''|| (IVNL) || : {{charlist|sc=Hani|郎郞}}
|-
| '''戈女弓一山'''|| (IVNMU) || : {{charlist|sc=Hani|诡}}
|-
| '''戈女弓人月'''|| (IVNOB) || : {{charlist|sc=Hani|谞}}
|-
| '''戈女弓尸木'''|| (IVNSD) || : {{charlist|sc=Hani|诤}}
|-
| '''戈女弓尸一'''|| (IVNSM) || : {{charlist|sc=Hani|诌}}
|-
| '''戈女弓山卜'''|| (IVNUY) || : {{charlist|sc=Hani|谗}}
|-
| '''戈女人'''|| (IVO) || : {{charlist|sc=Hani|认}}
|-
| '''戈女人月'''|| (IVOB) || : {{charlist|sc=Hani|讷}}
|-
| '''戈女人土'''|| (IVOG) || : {{charlist|sc=Hani|谁}}
|-
| '''戈女人土火'''|| (IVOGF) || : {{charlist|sc=Hani|谯}}
|-
| '''戈女人竹竹'''|| (IVOHH) || : {{charlist|sc=Hani|诊}}
|-
| '''戈女人戈一'''|| (IVOIM) || : {{charlist|sc=Hani|谶}}
|-
| '''戈女人戈心'''|| (IVOIP) || : {{charlist|sc=Hani|谂}}
|-
| '''戈女人十'''|| (IVOJ) || : {{charlist|sc=Hani|许}}
|-
| '''戈女人一土'''|| (IVOMG) || : {{charlist|sc=Hani|诠}}
|-
| '''戈女人一弓'''|| (IVOMN) || : {{charlist|sc=Hani|谕}}
|-
| '''戈女人弓'''|| (IVON) || : {{charlist|sc=Hani|讫}}
|-
| '''戈女人心'''|| (IVOP) || : {{charlist|sc=Hani|论}}
|-
| '''戈女人尸'''|| (IVOS) || : {{charlist|sc=Hani|诈}}
|-
| '''戈女人田卜'''|| (IVOWY) || : {{charlist|sc=Hani|诲}}
|-
| '''戈女心日'''|| (IVPA) || : {{charlist|sc=Hani|询}}
|-
| '''戈女心竹廿'''|| (IVPHT) || : {{charlist|sc=Hani|谧}}
|-
| '''戈女心心日'''|| (IVPPA) || : {{charlist|sc=Hani|谐}}
|-
| '''戈女心廿木'''|| (IVPTD) || : {{charlist|sc=Hani|谍}}
|-
| '''戈女手木'''|| (IVQD) || : {{charlist|sc=Hani|诔}}
|-
| '''戈女手大戈'''|| (IVQKI) || : {{charlist|sc=Hani|诪}}
|-
| '''戈女手一月'''|| (IVQMB) || : {{charlist|sc=Hani|请}}
|-
| '''戈女手尸'''|| (IVQS) || : {{charlist|sc=Hani|讳}}
|-
| '''戈女口金'''|| (IVRC) || : {{charlist|sc=Hani|识}}
|-
| '''戈女口一大'''|| (IVRMK) || : {{charlist|sc=Hani|误}}
|-
| '''戈女口口尸'''|| (IVRRS) || : {{charlist|sc=Hani|谔}}
|-
| '''戈女尸竹'''|| (IVSH) || : {{charlist|sc=Hani|㓪}}
|-
| '''戈女尸竹戈'''|| (IVSHI) || : {{charlist|sc=Hani|讱}}
|-
| '''戈女尸竹口'''|| (IVSHR) || : {{charlist|sc=Hani|诏}}
|-
| '''戈女尸戈一'''|| (IVSIM) || : {{charlist|sc=Hani|䜧}}
|-
| '''戈女尸十水'''|| (IVSJE) || : {{charlist|sc=Hani|诹}}
|-
| '''戈女尸大'''|| (IVSK) || : {{charlist|sc=Hani|讴}}
|-
| '''戈女尸一土'''|| (IVSMG) || : {{charlist|sc=Hani|诓}}
|-
| '''戈女尸一竹'''|| (IVSMH) || : {{charlist|sc=Hani|谬}}
|-
| '''戈女尸一一'''|| (IVSMM) || : {{charlist|sc=Hani|诩}}
|-
| '''戈女尸一口'''|| (IVSMR) || : {{charlist|sc=Hani|词}}
|-
| '''戈女尸尸'''|| (IVSS) || : {{charlist|sc=Hani|讵}}
|-
| '''戈女尸山'''|| (IVSU) || : {{charlist|sc=Hani|记}}
|-
| '''戈女廿日大'''|| (IVTAK) || : {{charlist|sc=Hani|谟}}
|-
| '''戈女廿月竹'''|| (IVTBH) || : {{charlist|sc=Hani|谫}}
|-
| '''戈女廿金'''|| (IVTC) || : {{charlist|sc=Hani|䜤}}
|-
| '''戈女廿金日'''|| (IVTCA) || : {{charlist|sc=Hani|谱}}
|-
| '''戈女廿金廿'''|| (IVTCT) || : {{charlist|sc=Hani|谥}}
|-
| '''戈女廿大口'''|| (IVTKR) || : {{charlist|sc=Hani|诺}}
|-
| '''戈女廿中火'''|| (IVTLF) || : {{charlist|sc=Hani|䜩}}
|-
| '''戈女廿中一'''|| (IVTLM) || : {{charlist|sc=Hani|谨}}
|-
| '''戈女廿一木'''|| (IVTMD) || : {{charlist|sc=Hani|谋}}
|-
| '''戈女廿一女'''|| (IVTMV) || : {{charlist|sc=Hani|谌}}
|-
| '''戈女廿心日'''|| (IVTPA) || : {{charlist|sc=Hani|䜦}}
|-
| '''戈女廿手'''|| (IVTQ) || : {{charlist|sc=Hani|详}}
|-
| '''戈女廿廿'''|| (IVTT) || : {{charlist|sc=Hani|讲}}
|-
| '''戈女廿卜山'''|| (IVTYU) || : {{charlist|sc=Hani|谎}}
|-
| '''戈女廿難金'''|| (IVTXC) || : {{charlist|sc=Hani|谦}}
|-
| '''戈女山'''|| (IVU) || : {{charlist|sc=Hani|讪}}
|-
| '''戈女山土'''|| (IVUG) || : {{charlist|sc=Hani|廱}}
|-
| '''戈女山大'''|| (IVUK) || : {{charlist|sc=Hani|讻}}
|-
| '''戈女山山'''|| (IVUU) || : {{charlist|sc=Hani|诎}}
|-
| '''戈女田月'''|| (IVWB) || : {{charlist|sc=Hani|谓}}
|-
| '''戈女田金水'''|| (IVWCE) || : {{charlist|sc=Hani|谡}}
|-
| '''戈女田木'''|| (IVWD) || : {{charlist|sc=Hani|课}}
|-
| '''戈女卜'''|| (IVY) || : {{charlist|sc=Hani|讣}}
|-
| '''戈女卜月月'''|| (IVYBB) || : {{charlist|sc=Hani|谛}}
|-
| '''戈女卜月尸'''|| (IVYBS) || : {{charlist|sc=Hani|谤}}
|-
| '''戈女卜金月'''|| (IVYCB) || : {{charlist|sc=Hani|谪}}
|-
| '''戈女卜火木'''|| (IVYFD) || : {{charlist|sc=Hani|谜}}
|-
| '''戈女卜竹竹'''|| (IVYHH) || : {{charlist|sc=Hani|谚}}
|-
| '''戈女卜竹尸'''|| (IVYHS) || : {{charlist|sc=Hani|访}}
|-
| '''戈女卜中口'''|| (IVYLR) || : {{charlist|sc=Hani|谴}}
|-
| '''戈女卜一'''|| (IVYM) || : {{charlist|sc=Hani|让}}
|-
| '''戈女卜人十'''|| (IVYOJ) || : {{charlist|sc=Hani|谇}}
|-
| '''戈女卜心一'''|| (IVYPM) || : {{charlist|sc=Hani|谑}}
|-
| '''戈女卜口木'''|| (IVYRD) || : {{charlist|sc=Hani|谆}}
|-
| '''戈女卜口火'''|| (IVYRF) || : {{charlist|sc=Hani|谅}}
|-
| '''戈女卜廿日'''|| (IVYTA) || : {{charlist|sc=Hani|谙}}
|-
| '''戈女卜女人'''|| (IVYVO) || : {{charlist|sc=Hani|该}}
|}
==戈田 (IW)==
{| lang="zh"
|-
| '''戈田金土'''|| (IWCG) || : {{charlist|sc=Hani|廛}}
|-
| '''戈田土'''|| (IWG) || : {{charlist|sc=Hani|㢆}}
|-
| '''戈田中'''|| (IWL) || : {{charlist|sc=Hani|庘}}
|-
| '''戈田中月'''|| (IWLB) || : {{charlist|sc=Hani|庽}}
|-
| '''戈田廿金'''|| (IWTC) || : {{charlist|sc=Hani|廙}}
|}
==戈卜 (IY)==
{| lang="zh"
|-
| '''戈卜月心'''|| (IYBP) || : {{charlist|sc=Hani|龐}}
|-
| '''戈卜木中'''|| (IYDL) || : {{charlist|sc=Hani|廓}}
|-
| '''戈卜竹女'''|| (IYHV) || : {{charlist|sc=Hani|庡}}
|-
| '''戈卜中弓'''|| (IYLN) || : {{charlist|sc=Hani|劘}}
|-
| '''戈卜一心'''|| (IYMP) || : {{charlist|sc=Hani|庛}}
|-
| '''戈卜一口'''|| (IYMR) || : {{charlist|sc=Hani|㢇}}
|-
| '''戈卜心一'''|| (IYPM) || : {{charlist|sc=Hani|㢒}}
|-
| '''戈卜心尸'''|| (IYPS) || : {{charlist|sc=Hani|㢚}}
|-
| '''戈卜心廿'''|| (IYPT) || : {{charlist|sc=Hani|廬}}
|-
| '''戈卜口'''|| (IYR) || : {{charlist|sc=Hani|店}}
|-
| '''戈卜口中'''|| (IYRL) || : {{charlist|sc=Hani|廍}}
|-
| '''戈卜廿'''|| (IYT) || : {{charlist|sc=Hani|㡴}}
|-
| '''戈卜廿十'''|| (IYTJ) || : {{charlist|sc=Hani|㢓}}
|-
| '''戈卜田木'''|| (IYWD) || : {{charlist|sc=Hani|廩}}
|-
| '''戈卜田火'''|| (IYWF) || : {{charlist|sc=Hani|廪}}
|-
| '''戈卜難'''|| (IYX) || : {{charlist|sc=Hani|𪗆}}
|}
==戈難 (IX)==
{| lang="zh"
|-
| '''戈難水'''|| (IXE) || : {{charlist|sc=Hani|慶}}
|-
| '''戈難火'''|| (IXF) || : {{charlist|sc=Hani|廌}}
|-
| '''戈難心'''|| (IXP) || : {{charlist|sc=Hani|鹿}}
|}
[[Thể loại:Phụ lục Chữ Hán|Cangjie I]]
reup7pjrwpi7clgju7axbmu11v55aoj
ကွန်ကရစ်
0
418490
2567220
2026-09-29T00:53:35Z
Hiyuune
50834
/* */ + my
2567220
wikitext
text/x-wiki
=={{langname|my}}==
==={{section|etym}}===
Từ {{bor|my|en|concrete|t=bê tông}}.
==={{section|pron}}===
* {{my-IPA|ကွန်+က'*ရစ်}}
==={{section|n}}===
{{my-noun}}
# [[bê tông]].
==={{section|further}}===
* {{R:my:MED}}
c6cqs03b3p5t0g8zlsv0m8k39pu3020
Bản mẫu:R:sq:Topalli:2017
10
418491
2567223
2026-09-29T03:26:40Z
Hiyuune
50834
Trang mới: “{{#invoke:quote|call_template |template=cite-book |sq |first=Kolec|last=Topalli|authorlink=sq:Kolec Topalli |entry={{lang|sq|{{{head|{{{1|{{pagename}}}}}}}}}} |title=Fjalor Etimologjik i Gjuhës Shqipe |trans-title=Từ điển từ nguyên tiếng Albania |location=Durrës, Albania |publisher=Jozef |year=2017 |pageparam=page |allowparams=head,1 }}<noinclude>{{refcat}}</noinclude>”
2567223
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|sq
|first=Kolec|last=Topalli|authorlink=sq:Kolec Topalli
|entry={{lang|sq|{{{head|{{{1|{{pagename}}}}}}}}}}
|title=Fjalor Etimologjik i Gjuhës Shqipe
|trans-title=Từ điển từ nguyên tiếng Albania
|location=Durrës, Albania
|publisher=Jozef
|year=2017
|pageparam=page
|allowparams=head,1
}}<noinclude>{{refcat}}</noinclude>
jnjg7f6p5if01kk3od3tbl05dhrofmz
Bản mẫu:R:sq:Topalli
10
418492
2567224
2026-09-29T03:26:55Z
Hiyuune
50834
Đổi hướng đến [[Bản mẫu:R:sq:Topalli:2017]]
2567224
wikitext
text/x-wiki
#redirect [[Bản mẫu:R:sq:Topalli:2017]]
cda3ca36sz832hvmifbzuqiydu0e6ct
장수풍뎅이
0
418493
2567225
2026-09-29T03:31:26Z
Hiyuune
50834
Trang mới: “=={{langname|ko}}== {{wp|ko:}} ==={{section|etym}}=== {{af|ko|장수(將帥)|풍뎅이}} ==={{section|pron}}=== {{ko-IPA|l=y}} ==={{section|n}}=== {{ko-noun}} # {{w|Bọ hung sừng chữ Y}} ({{taxlink|Trypoxylus dichotomus|loài}}). #: {{syn|ko|투구벌레}} {{c|ko|Bộ Cánh cứng}}”
2567225
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{section|etym}}===
{{af|ko|장수(將帥)|풍뎅이}}
==={{section|pron}}===
{{ko-IPA|l=y}}
==={{section|n}}===
{{ko-noun}}
# {{w|Bọ hung sừng chữ Y}} ({{taxlink|Trypoxylus dichotomus|loài}}).
#: {{syn|ko|투구벌레}}
{{c|ko|Bộ Cánh cứng}}
oju9ihridg1f84zu4h4zuu9o64wyy8x
투구벌레
0
418494
2567226
2026-09-29T03:35:11Z
Hiyuune
50834
Trang mới: “=={{langname|ko}}== ==={{section|etym}}=== {{af|ko|투구|벌레}} ==={{section|pron}}=== {{ko-IPA}} ==={{section|n}}=== {{ko-noun}} # {{w|Bọ hung sừng chữ Y}} ({{taxlink|Trypoxylus dichotomus|loài}}). #: {{syn|ko|장수풍뎅이}} {{c|ko|Bộ Cánh cứng}}”
2567226
wikitext
text/x-wiki
=={{langname|ko}}==
==={{section|etym}}===
{{af|ko|투구|벌레}}
==={{section|pron}}===
{{ko-IPA}}
==={{section|n}}===
{{ko-noun}}
# {{w|Bọ hung sừng chữ Y}} ({{taxlink|Trypoxylus dichotomus|loài}}).
#: {{syn|ko|장수풍뎅이}}
{{c|ko|Bộ Cánh cứng}}
ryh4r1fw5pd9z2hp8q90igbyv13656g
Citrus maxima
0
418495
2567231
2026-09-29T03:50:50Z
Hiyuune
50834
Trang mới: “=={{langname|mul}}== [[File:Citrus maxima in Vietnam.jpg|thumb|'''''Citrus maxima''''' ([[pomelo]])]] ==={{section|pr-noun}}=== {{taxoninfl|head=[[Citrus]] {{epinew|maximus|maxima|la}}|i=1|g=f}} # {{taxon|loài|họ|Rutaceae}}. ===={{section|hyper}}==== * {{sense|loài}} {{taxfmt|Sapindales|bộ}} - bộ; {{taxfmt|Rutaceae|họ}} - họ; {{taxfmt|Aurantioideae|phân họ}} - phân họ; {{taxfmt|Aurantieae|tông}} - tông; {{taxfmt|Citrinae|tông}}&…”
2567231
wikitext
text/x-wiki
=={{langname|mul}}==
[[File:Citrus maxima in Vietnam.jpg|thumb|'''''Citrus maxima''''' ([[pomelo]])]]
==={{section|pr-noun}}===
{{taxoninfl|head=[[Citrus]] {{epinew|maximus|maxima|la}}|i=1|g=f}}
# {{taxon|loài|họ|Rutaceae}}.
===={{section|hyper}}====
* {{sense|loài}} {{taxfmt|Sapindales|bộ}} - bộ; {{taxfmt|Rutaceae|họ}} - họ; {{taxfmt|Aurantioideae|phân họ}} - phân họ; {{taxfmt|Aurantieae|tông}} - tông; {{taxfmt|Citrinae|tông}} - phân tông; {{taxfmt|Citrus|chi}} - chi
==={{section|ref}}===
* {{pedia|i=1}}
* {{specieslite|i=1}}
* {{comcatlite|i=1}}
* {{R:NCBI|37334}}
* {{R:EOL|488254}}
* {{R:ITIS|501574}}
* {{R:USDA Plants|CIMA5}}
* {{R:GRIN|taxonomydetail|10744}}
* {{R:Tropicos|28100003}}
* {{R:POWO|30075266-2}}
qlf9e163ocm16r9hgc0ojd1lfv50xpk
2567232
2567231
2026-09-29T03:50:59Z
Hiyuune
50834
/* Danh từ riêng */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2567232
wikitext
text/x-wiki
=={{langname|mul}}==
[[File:Citrus maxima in Vietnam.jpg|thumb|'''''Citrus maxima''''' ([[pomelo]])]]
==={{section|pr-noun}}===
{{taxoninfl|head=[[Citrus]] {{epinew|maximus|maxima|la}}|i=1|g=f}}
# {{taxon|loài|họ|Rutaceae}}
===={{section|hyper}}====
* {{sense|loài}} {{taxfmt|Sapindales|bộ}} - bộ; {{taxfmt|Rutaceae|họ}} - họ; {{taxfmt|Aurantioideae|phân họ}} - phân họ; {{taxfmt|Aurantieae|tông}} - tông; {{taxfmt|Citrinae|tông}} - phân tông; {{taxfmt|Citrus|chi}} - chi
==={{section|ref}}===
* {{pedia|i=1}}
* {{specieslite|i=1}}
* {{comcatlite|i=1}}
* {{R:NCBI|37334}}
* {{R:EOL|488254}}
* {{R:ITIS|501574}}
* {{R:USDA Plants|CIMA5}}
* {{R:GRIN|taxonomydetail|10744}}
* {{R:Tropicos|28100003}}
* {{R:POWO|30075266-2}}
t41ii4h41a3l8hhibemiauvt26t6ufi
2567275
2567232
2026-09-29T11:04:26Z
TheHighFighter2
42988
/* Đa ngữ */
2567275
wikitext
text/x-wiki
=={{langname|mul}}==
[[File:Citrus maxima in Vietnam.jpg|thumb|'''''Citrus maxima''''' ([[bưởi]])]]
==={{section|pr-noun}}===
{{taxoninfl|head=[[Citrus]] {{epinew|maximus|maxima|la}}|i=1|g=f}}
# {{taxon|loài|họ|Rutaceae|[[bưởi]]}}
===={{section|hyper}}====
* {{sense|loài}} {{taxfmt|Sapindales|bộ}} - bộ; {{taxfmt|Rutaceae|họ}} - họ; {{taxfmt|Aurantioideae|phân họ}} - phân họ; {{taxfmt|Aurantieae|tông}} - tông; {{taxfmt|Citrinae|phân tông}} - phân tông; {{taxfmt|Citrus|chi}} - chi
==={{section|ref}}===
* {{pedia|i=1}}
* {{specieslite|i=1}}
* {{comcatlite|i=1}}
* {{R:NCBI|37334}}
* {{R:EOL|488254}}
* {{R:ITIS|501574}}
* {{R:USDA Plants|CIMA5}}
* {{R:GRIN|taxonomydetail|10744}}
* {{R:Tropicos|28100003}}
* {{R:POWO|30075266-2}}
lx889mzlvqc8codqobasxz9vix4rqfs
Bản mẫu:sh-adj form
10
418496
2567244
2026-09-29T06:27:47Z
Hiyuune
50834
Trang mới: “{{#invoke:sh-headword|show|Biến thể hình thái tính từ}}<noinclude>{{tài liệu}}</noinclude>”
2567244
wikitext
text/x-wiki
{{#invoke:sh-headword|show|Biến thể hình thái tính từ}}<noinclude>{{tài liệu}}</noinclude>
4bghou2kbtvm1hqlqogwpul8ni8wjmg
disketa
0
418497
2567246
2026-09-29T06:33:15Z
Hiyuune
50834
Trang mới: “=={{langname|cs}}== {{wp|cs:}} ==={{section|pron}}=== * {{cs-IPA|[dy]}} ==={{section|n}}=== {{cs-noun|f}} # [[ổ đĩa|Ổ đĩa]] [[mềm]]. ===={{section|decl}}==== {{cs-ndecl|f}} ==={{section|further}}=== * {{R:cs:PSJC}} * {{R:cs:IJP}}”
2567246
wikitext
text/x-wiki
=={{langname|cs}}==
{{wp|cs:}}
==={{section|pron}}===
* {{cs-IPA|[dy]}}
==={{section|n}}===
{{cs-noun|f}}
# [[ổ đĩa|Ổ đĩa]] [[mềm]].
===={{section|decl}}====
{{cs-ndecl|f}}
==={{section|further}}===
* {{R:cs:PSJC}}
* {{R:cs:IJP}}
jbz3q4nmd0582lcuiz16z17f9oc5cw3
pružný
0
418498
2567247
2026-09-29T06:37:39Z
Hiyuune
50834
+ cs, sk
2567247
wikitext
text/x-wiki
=={{langname|cs}}==
==={{section|pron}}===
* {{cs-IPA}}
* {{audio|cs|Cs-pružný.ogg}}
==={{section|adj}}===
{{cs-adj|pružnější|adv=pružně,pružno}}
# [[co dãn|Co dãn]]; [[đàn hồi]]; [[mềm dẻo]].
===={{section|decl}}====
{{cs-adecl}}
===={{section|drv}}====
{{col|cs
|pružnost<g:f>
}}
===={{section|rel}}====
{{col|cs
|pružit
|pružina<g:f>
}}
==={{section|further}}===
* {{R:cs:PSJC}}
* {{R:cs:SSJC}}
* {{R:cs:IJP}}
=={{langname|sk}}==
==={{section|pron}}===
* {{sk-IPA}}
==={{section|adj}}===
{{sk-adj|pružnejší|adv=pružne}}
# [[co dãn|Co dãn]]; [[đàn hồi]]; [[mềm dẻo]].
===={{section|decl}}====
{{sk-adecl}}
===={{section|rel}}====
* {{l|sk|pružiť}}
* {{l|sk|pružina|g=f}}
==={{section|further}}===
* {{R:sk:SDK}}
jsdroye9jqpmcuihq4hyjmb67zerklz
elastic sides
0
418499
2567248
2026-09-29T06:39:02Z
Hiyuune
50834
+ en
2567248
wikitext
text/x-wiki
{{also|elastic-sides}}
=={{langname|en}}==
==={{section|alt}}===
* {{l|en|elastic-sides}}
==={{section|pron}}===
* {{audio|en|EN-AU ck1 elastic sides.ogg|a=AU}}
==={{section|n}}===
{{en-noun|p}}
# {{label|en|Australia|New Zealand}} [[giày|Giày]] [[cao]] [[cổ]] có cạnh [[chun]].
0grirylugjik2w12qh8xfzs90ovwsbx
kisagy
0
418500
2567256
2026-09-29T08:16:49Z
Hiyuune
50834
Trang mới: “=={{langname|hu}}== {{swp|hu:}} [[File:Cerebellum_animation_small.gif|thumb|250px|'''kisagy''']] ==={{section|etym}}=== {{af|hu|kis|agy|t1=nhỏ|t2=não|pos=Danh từ}} ==={{section|pron}}=== * {{hu-IPA}} * {{hyphenation|hu|kis|agy}} * {{rhymes|hu|ɒɟ|s=2}} {{rfap|hu}} ==={{section|n}}=== {{hu-noun|ak}} # [[tiểu não|Tiễu não]]. ===={{section|decl}}==== {{hu-infl-nom|kisagya|o}}{{hu-pos-atok|kisagy||ai}} ==={{section|further}}=== * {{R:ErtSz}} {{topics|hu|Gi…”
2567256
wikitext
text/x-wiki
=={{langname|hu}}==
{{swp|hu:}}
[[File:Cerebellum_animation_small.gif|thumb|250px|'''kisagy''']]
==={{section|etym}}===
{{af|hu|kis|agy|t1=nhỏ|t2=não|pos=Danh từ}}
==={{section|pron}}===
* {{hu-IPA}}
* {{hyphenation|hu|kis|agy}}
* {{rhymes|hu|ɒɟ|s=2}}
{{rfap|hu}}
==={{section|n}}===
{{hu-noun|ak}}
# [[tiểu não|Tiễu não]].
===={{section|decl}}====
{{hu-infl-nom|kisagya|o}}{{hu-pos-atok|kisagy||ai}}
==={{section|further}}===
* {{R:ErtSz}}
{{topics|hu|Giải phẫu thần kinh|Não}}
tvt3r2ka54tonh4x2c308tdui9thw3s
Thể loại:Mô đun tiếng Do Thái
14
418501
2567262
2026-09-29T08:47:16Z
Hiyuune
50834
Trang mới: “{{auto cat}}”
2567262
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Mô đun:chemical element list/data/he
828
418502
2567264
2026-09-29T08:49:52Z
Hiyuune
50834
Trang mới: “local export = {} export.elements = { [1] = { name = "מֵימָן<tr:meimán>" }, [2] = { name = "הֶלְיוּם<tr:hélyum>" }, [3] = { name = { "לִיתְיוּם<tr:lityúm>" , "אַבְנָן<tr:avnán>" } }, [4] = { name = "בֵּרִילְיוּם<tr:berílyum>" }, [5] = { name = "בּוֹר<tr:bor>" }, [6] = { name = "פַּחְמָן<tr:pakhmán>" }, [7] = { name = "חַנְקָן<tr:khankán>" }, [8] = { name = "חַמְצָן<tr:khamtsán>" }, [9]…”
2567264
Scribunto
text/plain
local export = {}
export.elements = {
[1] = { name = "מֵימָן<tr:meimán>" },
[2] = { name = "הֶלְיוּם<tr:hélyum>" },
[3] = { name = { "לִיתְיוּם<tr:lityúm>" , "אַבְנָן<tr:avnán>" } },
[4] = { name = "בֵּרִילְיוּם<tr:berílyum>" },
[5] = { name = "בּוֹר<tr:bor>" },
[6] = { name = "פַּחְמָן<tr:pakhmán>" },
[7] = { name = "חַנְקָן<tr:khankán>" },
[8] = { name = "חַמְצָן<tr:khamtsán>" },
[9] = { name = "פְלוּאוֹר<tr:fluor>" },
[10] = { name = "ניאון<alt:ניאון / נֵאוֹן><tr:né'on>" },
[11] = { name = "נַתְרָן<tr:natrán>" },
[12] = { name = "מַגְנֶזְיוּם<tr:magnézium>" },
[13] = { name = "אָלוּמִינְיוּם<tr:alumínyum>" },
[14] = { name = {"צורן<alt: צורן / צֹרָן><tr:tsorán>", "סִילִיקוֹן<tr:sílikon>"} },
[15] = { name = "זַרְחָן<tr:zarkhán>" },
[16] = { name = "גופרית<alt:גופרית / גׇּפְרִית><tr:gofrít>" },
[17] = { name = "כְּלוֹר<tr:klor>" },
[18] = { name = "אַרְגּוֹן<tr:argón>" },
[19] = { name = "אַשְׁלְגָן<tr:ashlegán>" },
[20] = { name = "סִידָן<tr:sidán>" },
[21] = { name = "סְקַנְדְּיוּם<tr:skándyum>" },
[22] = { name = "טִיטַנְיוּם<tr:titányum>" },
[23] = { name = "וָנַדְיוּם<tr:vanádium>" },
[24] = { name = "כְּרוֹם<tr:krom>" },
[25] = { name = "מַנְגָּן<tr:mangán>" },
[26] = { name = "בַּרְזֶל<tr:barzél>" },
[27] = { name = "קוֹבַּלְט<tr:kóbalt>" },
[28] = { name = "נִיקֶל<tr:níkel>" },
[29] = { name = "נחושת<alt:נחושת / נְחֹשֶׁת><tr:n'khóshet>" },
[30] = { name = "אָבָץ<tr:aváts>" },
[31] = { name = "גַּלְיוּם<tr:galyúm>" },
[32] = { name = "גֶּרְמַנְיוּם<tr:germányum>" },
[33] = { name = "אַרְסֶן<tr:arsén>" },
[34] = { name = "סֵלֶנְיוּם<tr:selényum>" },
[35] = { name = "בְּרוֹם<tr:brom>" },
[36] = { name = "קְרִיפְּטוֹן<tr:kriptón>" },
[37] = { name = "רוּבִּידְיוּם<tr:rubídium>" },
[38] = { name = {"סְטְרוֹנְצְיוּם<tr:stróntsyum>","סְטְרוֹנְטִיּוּם<tr:stróntiyum>"} },
[39] = { name = "אִיטְרִיּוּם<tr:itriyúm>" },
[40] = { name = "זִירְקוֹנְיוּם<tr:zirkónyum>" },
[41] = { name = "נִיאוֹבִּיּוּם<tr:ni'obyúm>" },
[42] = { name = "מוֹלִיבְּדֵּן<tr:molibdén>" },
[43] = { name = "טֶכְנַצְיוּם" },
[44] = { name = "רוּתֶנְיוּם" },
[45] = { name = "רוֹדְיוּם<tr:ródyum>" },
[46] = { name = "פָּלַדְיוּם<tr:paládyum>" },
[47] = { name = "כֶּסֶף<tr:késef>" },
[48] = { name = "קַדְמִיּוּם<tr:kádmium>" },
[49] = { name = "אִינְדְּיוּם<tr:indyúm>" },
[50] = { name = "בְּדִיל<tr:bdil>" },
[51] = { name = "אַנְטִימוֹן<tr:antímon>" },
[52] = { name = {"טֵלוּר<tr:télur>", "טֵלוּרְיוּם"} },
[53] = { name = "יוֹד<tr:yod>" },
[54] = { name = "קְסֵנוֹן<tr:ksénon>" },
[55] = { name = {"צֶסְיוּם<tr:tsésyum>", "צֶזְיוּם<tr:tsézyum>" }},
[56] = { name = "בַּרְיוּם<tr:báryom>" },
[57] = { name = "לַנְתָּן<tr:lantán>" },
[58] = { name = "צֶרְיוּם<tr:tséryum>" },
[59] = { name = "פְּרָסֵאוֹדִימְיוּם" },
[60] = { name = "נֵאוֹדִימְיוּם" },
[61] = { name = "פְּרוֹמֶתְיוּם" },
[62] = { name = "סָמַרְיוּם" },
[63] = { name = "אֵירוֹפְּיוּם" },
[64] = { name = "גָּדוֹלִינְיוּם" },
[65] = { name = "טֶרְבִּיּוּם" },
[66] = { name = "דִּיסְפְּרוֹסְיוּם" },
[67] = { name = "הוֹלְמִיּוּם" },
[68] = { name = "אֶרְבִּיּוּם" },
[69] = { name = "תּוּלְיוּם<tr:túlyum>" },
[70] = { name = "אִיטֶרְבִּיּוּם" },
[71] = { name = {"לוּטֶטְיוּם<tr:lutetyúm>", "לוּטֶצְיּוּם<tr:lutetsyúm>"} },
[72] = { name = "הַפְנִיּוּם" },
[73] = { name = "טַנְטָלוּם" },
[74] = { name = "טוּנְגְּסְטֶן<tr:túngsten>" },
[75] = { name = "רֶנְיוּם" },
[76] = { name = "אוֹסְמִיּוּם" },
[77] = { name = "אִירִידְיוּם" },
[78] = { name = "פְּלָטִינָה<tr:plátina>" },
[79] = { name = "זָהָב<tr:zaháv>" },
[80] = { name = "כַּסְפִּית<tr:kaspít>" },
[81] = { name = "תַּלְיוּם<tr:tályum>" },
[82] = { name = "עוֹפֶרֶת<tr:'oféret>" },
[83] = { name = { "בִּיסְמוּט" , "בִּיסְמוּת" } },
[84] = { name = "פּוֹלוֹנְיוּם<tr:polónyum>" },
[85] = { name = "אסטטין" },
[86] = { name = "רָדוֹן" },
[87] = { name = {"פְרַנְצִיּוּם", "פְרַנְסִיּוּם"} },
[88] = { name = "רַדְיוּם" },
[89] = { name = "אקטיניום" },
[90] = { name = "תּוֹרְיוּם<tr:tóryum>" },
[91] = { name = "פרוטקטיניום" },
[92] = { name = "אוּרַנְיוּם<tr:urányum>" },
[93] = { name = "נפטוניום" },
[94] = { name = "פלוטוניום" },
[95] = { name = "אָמֶרִיצְיוּם<tr:amerítsyum>" },
[96] = { name = "קוריום" },
[97] = { name = "ברקליום" },
[98] = { name = "קליפורניום" },
[99] = { name = "איינשטייניום" },
[100] = { name = "פרמיום" },
[101] = { name = "מנדלביום" },
[102] = { name = "נובליום" },
[103] = { name = "לורנציום" },
[104] = { name = "רתרפורדיום" },
[105] = { name = "דובניום" },
[106] = { name = "סיבורגיום" },
[107] = { name = "בוהריום" },
[108] = { name = "האסיום" },
[109] = { name = "מייטנריום" },
[110] = { name = "דרמשטאדטיום" },
[111] = { name = "רנטגניום" },
[112] = { name = "קופרניקיום" },
[113] = { name = "ניהוניום" },
[114] = { name = "פלרוביום" },
[115] = { name = "מוסקוביום" },
[116] = { name = "ליברמוריום" },
[117] = { name = "טנסין" },
[118] = { name = "אוגאנסון" },
}
return export
42u0u0t42uxcg50bt8whwy8vktr9bw3
Judaeo-Lusitanic
0
418503
2567265
2026-09-29T09:24:14Z
Hiyuune
50834
Trang mới: “=={{langname|en}}== ==={{section|pr-noun}}=== {{en-prop|head=[[Judaeo-]][[Lusitanic]]}} # {{syn of|en|Judaeo-Portuguese}}”
2567265
wikitext
text/x-wiki
=={{langname|en}}==
==={{section|pr-noun}}===
{{en-prop|head=[[Judaeo-]][[Lusitanic]]}}
# {{syn of|en|Judaeo-Portuguese}}
bgtdblmcxiamvpbaiexgqll7lfvbph7
kraks
0
418504
2567266
2026-09-29T09:24:53Z
Hiyuune
50834
+ fr
2567266
wikitext
text/x-wiki
=={{langname|fr}}==
==={{section|n}}===
{{head|fr|Biến thể hình thái danh từ}}
# {{plural of|fr|krak}}
duzjsv6gsy9dz7oytfhes11ec2ucpz1
सदातन
0
418505
2567273
2026-09-29T09:36:24Z
Hiyuune
50834
Trang mới: “=={{langname|sa}}== ==={{section|alternative script}}=== {{sa-alt}} ==={{section|etym}}=== Từ {{af|sa|सदा|-तन}}. ==={{section|pron}}=== {{sa-IPA|nv=1}} ==={{section|adj}}=== {{sa-adj}} # [[liên tục|Liên tục]], [[vĩnh cửu]], [[không ngừng]] ({{sa-a|Bhaṭṭ}}, {{sa-a|Kusum}}) ===={{section|decl}}==== {{sa-decl-adj||sadātanī|nv=1}} ===={{section|drv}}==== * {{l|sa|सदातनत्व}} ==={{section|pr-noun}}=== {{sa-prop|m}} # Tên g…”
2567273
wikitext
text/x-wiki
=={{langname|sa}}==
==={{section|alternative script}}===
{{sa-alt}}
==={{section|etym}}===
Từ {{af|sa|सदा|-तन}}.
==={{section|pron}}===
{{sa-IPA|nv=1}}
==={{section|adj}}===
{{sa-adj}}
# [[liên tục|Liên tục]], [[vĩnh cửu]], [[không ngừng]] ({{sa-a|Bhaṭṭ}}, {{sa-a|Kusum}})
===={{section|decl}}====
{{sa-decl-adj||sadātanī|nv=1}}
===={{section|drv}}====
* {{l|sa|सदातनत्व}}
==={{section|pr-noun}}===
{{sa-prop|m}}
# Tên gọi của thần [[Vishnu]] ({{sa-a|L}})
===={{section|decl}}====
{{sa-decl-noun-m|nv=1}}
==={{section|ref}}===
* {{R:MW|165|col=3}}
* {{R:DCS}}
k0r5h1nskrktkxx7supunhthlit4jj2