Wiktionary
viwiktionary
https://vi.wiktionary.org/wiki/Wiktionary:Trang_Ch%C3%ADnh
MediaWiki 1.47.0-wmf.14
case-sensitive
Phương tiện
Đặc biệt
Thảo luận
Thành viên
Thảo luận Thành viên
Wiktionary
Thảo luận Wiktionary
Tập tin
Thảo luận Tập tin
MediaWiki
Thảo luận MediaWiki
Bản mẫu
Thảo luận Bản mẫu
Trợ giúp
Thảo luận Trợ giúp
Thể loại
Thảo luận Thể loại
Phụ lục
Thảo luận Phụ lục
TimedText
TimedText talk
Mô đun
Thảo luận Mô đun
Event
Event talk
Wiktionary:IPA
4
26798
2512162
2368822
2026-08-07T15:24:10Z
TheHighFighter2
42988
/* */
2512162
wikitext
text/x-wiki
{{-info-|Bảng mẫu tự ngữ âm quốc tế}}
'''[[w:Bảng mẫu tự ngữ âm quốc tế|Bảng mẫu tự ngữ âm quốc tế]]''' (IPA) là một hệ thống ký hiệu ngữ âm do các nhà ngôn ngữ học nghĩ ra để thể hiện chính xác và độc đáo từng loại âm thanh (giọng điệu hoặc âm vị) được sử dụng trong ngôn ngữ nói của con người. Nó được dùng như một tiêu chuẩn ký hiệu để biểu diễn ngữ âm và ngữ âm của tất cả các ngôn ngữ nói. Tại Wiktionary, Bảng mẫu tự phiên âm quốc tế (IPA) cho việc phát âm từ ngữ có thể tuân theo một số quy ước nhất định.
Việc nghĩ ra cách phiên âm có phần mơ hồ. Tất cả các ngôn ngữ (nhất là tiếng Anh) có nhiều phương ngữ và giọng điệu, và ngay cả một người nào đó thường phát âm một âm vị bằng nhiều cách khác nhau. Hơn nữa thường có nhiều nét trong cách phát âm không thật quan trọng. Ví dụ bằng tiếng Việt từ “''[[ong#Tiếng Việt|ong]]''” được phát âm như {{IPAchar|[ʔawŋm͡]}} (tại Hà Nội), nhưng {{IPAchar|/ɔŋ/}} là cách phiên âm thích đáng. Tất nhiên, cũng có thể viết phiên âm là {{IPAchar|/ʔaʊ̯ŋ/}}, hoặc {{IPAchar|/ɔŋm͡/}}, và nhiều cách khác – và tất cả các cách này đều đủ để miêu tả cách phát âm một cách đúng đắn.
Trang này cung cấp tổng quan chung về các ký hiệu được sử dụng trong IPA. Vì nó được sử dụng cho tất cả các ngôn ngữ, sẽ không thực tế nếu giải thích cho người nói tiếng Anh hay tiếng Việt cách phát âm tất cả các âm. Do đó, các ký hiệu được nhóm lại dựa trên các đặc điểm mà chúng có, hoặc các bộ phận của miệng được sử dụng để phát âm chúng. Ví dụ, một phụ âm răng được phát âm bằng cách sử dụng răng, trong khi phụ âm song ngữ sử dụng cả hai môi.
==Tiếng Việt==
Các mục từ [[tiếng Việt]] trong Wiktionary phiên âm 6 giọng tiếng Việt có những thành phố tiêu biểu là Hà Nội, Huế, Sài Gòn, Vinh, Thanh Chương, và Hà Tĩnh. Các giọng địa phương có nhiều khác biệt về phụ âm và thanh điệu. Bảng này sử dụng các dấu thanh điệu chính thức của IPA:
{| class="wikitable"
|-
! Số !! Dấu !! Ý nghĩa
|-
| 5 || e˥ || Cao nhất
|-
| 4 || e˦ || Cao
|-
| 3 || e˧ || Vừa
|-
| 2 || e˨ || Thấp
|-
| 1 || e˩ || Thấp nhất
|}
Đa số các thiết bị hiện hành đều đã có font chữ hỗ trợ các dấu thanh này đầy đủ, và một loạt dấu thanh điệu sẽ hợp nhất thành một dòng lên xuống. Xem [[:Tập tin:Ipa-chart-suprasegmentals.png|thí dụ trên bảng IPA chính thức]]. Trong trường hợp không có font chữ nào hỗ trợ IPA đầy đủ, các thành viên đã đăng ký có thể bật font chữ đa năng “DejaVu Sans” tại [[Đặc biệt:Tùy chọn#preftab-8|trang Tùy chọn]]. Công cụ này cần một trình duyệt hiện đại như Internet Explorer 9 trở lên, Mozilla Firefox 3.5 trở lên, Google Chrome 4.0 trở lên, Safari 3.1 trở lên, hay Opera 10 trở lên. Cần lưu ý font DejaVu Sans không hỗ trợ các ký tự IPA mới nhất của Unicode (có trong [[:w:en:Latin Extended-F]] và [[:w:en:Latin Extended-G]]). Vui lòng chuyển đến [[Trợ giúp:Unicode]] và chọn font thứ hai cho các ký tự này.<ref group="ghi chú">Font chứa các ký tự Latin trong Unicode 14.0 dựa trên [https://software.sil.org/gentium/download/ Gentium], vì thế khi hiển thị cùng các font khác có thể sẽ không được đồng nhất.</ref>
==Tiếng Anh==
Wiktionary tiếng Việt thường bao gồm cách phát âm giọng Anh ở các [[:Thể loại:Mục từ tiếng Anh|mục từ tiếng Anh]].
== Tất cả các ngôn ngữ ==
===Phụ âm ([[pulmonic|xung]])===
{| border="0" cellspacing="2px" cellpadding="2px" style="font-family:'Lucida Sans Unicode'"
|-bgcolor="#BECFEB" valign=top align="center"
!
![[bilabial|Âm môi]]
![[labiodental|Âm môi răng]]
![[linguolabial|Âm môi lưỡi]]
![[dental|Âm răng]]
![[alveolar|Âm chân răng]]
![[postalveolar|Âm vòm-chân răng]]
![[retroflex|Âm quặt lưỡi]]
![[palatal|Âm vòm]]
![[velar|Âm vòm mềm]]
![[uvular|Âm lưỡi]]
!colspan="2"|[[pharyngeal|Âm họng]]/<br>[[epiglottal|Âm thanh quản]]
!colspan="2"|[[glottal|Âm thanh hầu]]
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[plosive|Âm tắc]]
|[[p]] [[b]]
|[[p̪]] [[b̪]]
|[[t̼]] [[d̼]]
|[[t̪]] [[d̪]]
|[[t]] [[d]]
|
|[[ʈ]] [[ɖ]]
|[[c]] [[ɟ]]
|[[k]] [[ɡ]]
|[[q]] [[ɢ]]
|[[ʡ]]
|bgcolor="#D4D4D4"|
|[[ʔ]]
|bgcolor="#D4D4D4"|
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[nasal|Âm mũi]]
|[[m]]
|[[ɱ]]
|[[n̼]]
|[[n̪]]
|[[n]]
|
|[[ɳ]]
|[[ɲ]]
|[[ŋ]]
|[[ɴ]]
|colspan="4" bgcolor="#D4D4D4"|
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[trill|Âm rung]]
|[[ʙ]]
|
|[[r̼]]
|[[r̪]]
|[[r]]
|
|[[ɽ͡r]]
|
|bgcolor="#D4D4D4"|
|[[ʀ]]
|colspan="2"|[[ʜ]] [[ʢ]]
|colspan="2" bgcolor="#D4D4D4"|
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[tap|Âm vỗ]] hoặc [[flap|Âm co]]
|[[ⱱ̟]]
|[[ⱱ]]
|[[ɾ̼]]
|[[ɾ̪]]
|[[ɾ]]
|
|[[ɽ]]
|
|bgcolor="#D4D4D4"|
|[[ɢ̆]]
|colspan="2"|
|colspan="2" bgcolor="#D4D4D4"|
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[lateral tap|Âm bên vỗ]] hoặc [[lateral flap|âm bên co]]
|colspan="2" bgcolor="#D4D4D4"|
|
|
|[[ɺ]]
|
|[[ɺ̢]]
|[[ʎ̯]]
|[[ʟ̆]]
|
|colspan="4" bgcolor="#D4D4D4"|
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[fricative|Âm xát]]
|[[ɸ]] [[β]]
|[[f]] [[v]]
|[[θ̼]] [[ð̼]]
|[[θ]] [[ð]]
|[[s]] [[z]]
|[[ʃ]] [[ʒ]]
|[[ʂ]] [[ʐ]]
|[[ç]] [[ʝ]]
|[[x]] [[ɣ]]
|[[χ]] [[ʁ]]
|colspan="2"|[[ħ]] [[ʕ]]
|colspan="2"|[[h]] [[ɦ]]
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[lateral fricative|Âm bên xát]]
|colspan="2" bgcolor="#D4D4D4"|
|
|
|[[ɬ]] [[ɮ]]
|
|[[ɬ̢]] [[ɮ̢]]
|
|
|
|colspan="4" bgcolor="#D4D4D4"|
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[approximant|Âm tiếp cận]]
|[[β̞]]
|[[ʋ]]
|
|[[ð̞]]
|[[ɹ]]
|
|[[ɻ]]
|[[j]]
|[[ɰ]]
|
|colspan="2"|
|colspan="2"|
|-bgcolor="#E7F5DE" valign=middle align="center"
!bgcolor="#BECFEB"|[[lateral approximant|Âm bên tiếp cận]]
|colspan="2" bgcolor="#D4D4D4"|
|[[l̼]]
|[[l̪]]
|[[l]]
|
|[[ɭ]]
|[[ʎ]]
|[[ʟ]]
|
|colspan="4" bgcolor="#D4D4D4"|
|}
*Trường hợp các ký hiệu xuất hiện theo từng cặp, ký hiệu ở bên phải đại diện cho một phụ âm hữu thanh.
*Các phần mờ biểu thị không có âm khớp nối phù hợp.
===Phụ âm (không xung)===
{| border="0" cellspacing="2px" cellpadding="2px" style="font-family:'Lucida Sans Unicode'"
|-bgcolor="#BECFEB" valign=top align="center"
|colspan="2"|Mút||colspan="2"|Âm hút vào||colspan="2"|Âm tống ra
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ʘ]]||Đôi môi||[[ɓ]]||Đôi môi||bgcolor="#D0EBBE"|[[ʼ]]||bgcolor="#D0EBBE"|''Ví dụ:''
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ǀ]]||Chân răng phiến lưỡi ("răng")||[[ɗ]]||Chân răng||pʼ||Đôi môi
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ǃ]]||Chân răng (sau) đầu lưỡi ("quặt lưỡi")||[[ᶑ]]||Vòm||tʼ||Chân răng
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ǂ]]||Chân răng sau phiến lưỡi ("vòm")||[[ʄ]]||Vòm mềm||kʼ||Vòm mềm
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ǃ̢]]||Chân răng (trước) đầu lưỡi ("quặt lưỡi")||[[ɠ]]||Lưỡi gà||sʼ||Xát chân răng
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ǁ]]||Lưỡi trước cạnh ("cạnh")||[[ʛ]]||Sau lưỡi gà||t͡ʃʼ||Vòm chân răng
|}
===Nguyên âm===
<div style="background: transparent;">
{| cellspacing="2px" style="text-align: center; background: transparent; font-family:'Lucida Sans Unicode';"
|- style="text-align: center; font-size: smaller; background: #becfeb;"
| style="width: 80px; text-align: right;" |
| style="width: 50px;" | '''Trước'''
| style="width: 50px;" | '''Gần trước'''
| style="width: 50px;" | '''Giữa'''
| style="width: 50px;" | '''Gần sau'''
| style="width: 50px;" | '''Sau'''
|-
| style="height: 28px; font-size: smaller; text-align: right; background: #becfeb;" | '''Đóng'''
| style="background: #e7f5de;" colspan=5 rowspan=7 | <div style="position: relative;">[[Image:Blank vowel trapezoid.svg|300px]]<div style="background: transparent; position: absolute; top: 0px; left: 0px;">
{| style="position: relative; width: 300px; height: 210px; text-align: center; background: transparent;"
|-
| style="width: 300px; height: 210px; text-align: center; background: transparent;" |
<!-- NGUYÊN ÂM ĐÓNG -->
<div style="position: absolute; left: 4%; width: 2em; top: 2%; height: 1.33em; font-size: 120%; background: #e7f5de;">
[[i]]•[[y]]</div>
<div style="position: absolute; left: 45%; width: 2.33em; top: 2%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɨ]]•[[ʉ]]</div>
<div style="position: absolute; left: 83%; width: 2.66em; top: 2%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɯ]]•[[u]]</div>
<!-- NGUYÊN ÂM GẦN ĐÓNG -->
<div style="position: absolute; left: 29%; width: 2.33em; top: 16%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɪ]]•[[ʏ]]</div>
<div style="position: absolute; left: 69%; width: 1em; top: 16%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ʊ]]</div>
<!-- NGUYÊN ÂM GẦN VỪA -->
<div style="position: absolute; left: 17%; width: 2.33em; top: 30%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[e]]•[[ø]]</div>
<div style="position: absolute; left: 51%; width: 2.33em; top: 30%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɘ]]•[[ɵ]]</div>
<div style="position: absolute; left: 84%; width: 2.33em; top: 30%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɤ]]•[[o]]</div>
<!-- NGUYÊN ÂM VỪA -->
<div style="position: absolute; left: 57%; width: 1em; top: 44%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ə]]</div>
<!-- NGUYÊN ÂM MỞ VỪA -->
<div style="position: absolute; left: 31%; width: 2.66em; top: 58%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɛ]]•[[œ]]</div>
<div style="position: absolute; left: 57%; width: 2.33em; top: 58%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɜ]]•[[ɞ]]</div>
<div style="position: absolute; left: 84%; width: 2.33em; top: 58%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ʌ]]•[[ɔ]]</div>
<!-- NGUYÊN ÂM GẦN MỞ -->
<div style="position: absolute; left: 33%; width: 1.33em; top: 73%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[æ]]</div>
<div style="position: absolute; left: 64%; width: 1em; top: 73%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɐ]]</div>
<!-- NGUYÊN ÂM MỞ -->
<div style="position: absolute; left: 44%; width: 2.66em; top: 86%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[a]]•[[ɶ]]</div>
<div style="position: absolute; left: 84%; width: 2.33em; top: 86%; height: 1.33em; font-size: 120%; background: #e7f5de;">[[ɑ]]•[[ɒ]]</div>
|}
</div></div>
|-
| style="height: 28px; font-size: smaller; text-align: right; background: #becfeb;" | '''Gần đóng'''
|-
| style="height: 28px; font-size: smaller; text-align: right; background: #becfeb;" | '''Gần vừa'''
|-
| style="height: 28px; font-size: smaller; text-align: right; background: #becfeb;" | '''Vừa'''
|-
| style="height: 28px; font-size: smaller; text-align: right; background: #becfeb;" | '''Mở vừa'''
|-
| style="height: 28px; font-size: smaller; text-align: right; background: #becfeb;" | '''Gần mở'''
|-
| style="height: 28px; font-size: smaller; text-align: right; background: #becfeb;" | '''Mở'''
|}
</div>
*Trong trường hợp các biểu tượng xuất hiện theo cặp, biểu tượng ở bên phải đại diện cho một nguyên âm tròn.
===Phụ âm khớp nối===
{| border="0" cellspacing="2px" cellpadding="2px" style="font-family:'Lucida Sans Unicode'"
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ʍ]]||Âm xát môi-vòm mềm vô thanh
|-bgcolor="#E7F5DE" valign=top align="center"
|[[w]]||Âm tiếp cận môi-vòm mềm hữu thanh
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ɥ]]||Âm tiếp cận môi-vòm hữu thanh
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ɕ]] [[ʑ]]||Những âm xát chân răng-vòm
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ɧ]]||Đồng thời âm '''ʃ''' và '''x'''
|}
*Các liên kết và khớp nối đôi có thể được biểu thị bằng hai ký hiệu được nối bằng thanh giằng nếu cần thiết: <div style="font-family:'Lucida Sans Unicode'">k͡p t͡s</div>
===Siêu đoạn===
{| border="0" cellspacing="2px" cellpadding="2px" style="font-family:'Lucida Sans Unicode'"
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[ˈ]]||Trọng âm thứ nhất (đánh dấu đằng trước âm)
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[ˌ]]||Trọng âm thứ hai (đánh dấu đằng trước âm)
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[ː]]||Dài
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[ˑ]]||Vừa
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[˘]]||Rất ngắn
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[Full_stop|.]]||Tách âm tiết
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[ǀ]]||Nhóm âm tiết nhỏ
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[ǁ]]||Nhóm âm tiết lớn
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[‿]]||Nối âm tiết
|}
===Các âm và trọng âm của từ===
{| border="0" cellspacing="2px" cellpadding="2px" style="font-family:'Lucida Sans Unicode'"
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[˥]] ||bgcolor="#CFEBBE"|[[꜒]]||Rất cao
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[˦]] ||bgcolor="#CFEBBE"|[[꜓]]||Cao
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[˧]] ||bgcolor="#CFEBBE"|[[꜔]]||Trung bình
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[˨]] ||bgcolor="#CFEBBE"|[[꜕]]||Thấp
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"|[[˩]] ||bgcolor="#CFEBBE"|[[꜖]]||Rất thấp
|-bgcolor="#E7F5DE" valign=top align="center"
|bgcolor="#CFEBBE"| [[ꜛ]] ||bgcolor="#CFEBBE"|[[ꜜ]]||[[upstep|Tăng]] và [[downstep|giảm]] độ cao âm
|}
Các chữ cái có thanh điệu có thể đứng trước hoặc sau một từ hoặc âm tiết. Trong ''Sổ tay IPA'', chúng được đứng trước để chỉ cao độ thuận âm trong tiếng Bồ Đào Nha và sau để biểu thị âm điệu từ vựng trong tiếng Quảng Đông.
Chúng cũng có thể quay sang trái hoặc phải. Toàn bộ các ký tự trong bảng trên được sử dụng cho [[tone sandhi]].
''Upstep'' và ''downstep'' luôn luôn đứng trước âm tiết.
===Dấu phụ===
Các dấu phụ có thể được đặt phía trên ký tự, ví dụ: <span style="font-family:'Lucida Sans Unicode'">ŋ̊</span>.
{| border="0" cellspacing="2px" cellpadding="2px" style="font-family:'Lucida Sans Unicode'"
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̥| ̥ ]]||Vô thanh||[[ ̤| ̤ ]]||Hữu thanh có hơi thở||[[ ̪| ̪ ]]||Răng
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̬| ̬ ]]||Hữu thanh||[[ ̰| ̰ ]]||Giọng kẽo kẹt||[[ ̺| ̺ ]]||Đầu lưỡi
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ʰ| ʰ ]]||Bật hơi||[[ ̼| ̼ ]]||Âm môi lưỡi||[[ ̻| ̻ ]]||Phiến lưỡi
|-bgcolor="#E7F5DE" valign=top align="center"
|[[˒| ˒ ]]||Làm tròn hơn||[[ʷ| ʷ ]]||Bị môi hóa||[[ ̃| ̃ ]]||Bị mũi hóa
|-bgcolor="#E7F5DE" valign=top align="center"
|[[˓| ˓ ]]||Ít làm tròn hơn||[[ʲ| ʲ ]]||Bị vòm hóa||[[ⁿ| ⁿ ]]||Thả mũi
|-bgcolor="#E7F5DE" valign=top align="center"
|[[˖| ˖ ]]||Nhích về phía trước||[[ˠ| ˠ ]]||Bị vòm mềm hóa||[[ˡ| ˡ ]]||Thả bên
|-bgcolor="#E7F5DE" valign=top align="center"
|[[˗| ˗ ]]||Lui về sau||[[ˁ| ˁ ]]||Bị họng hóa||[[ ̚| ̚ ]]||Không thả nào có thể nghe được
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̈| ̈ ]]||Giữa hóa||[[ ̴| ̴ ]]||colspan="3"|Vòm mềm hóa hoặc họng hóa
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̽| ̽ ]]||Chính giữa hóa||[[ ̝| ̝ ]]||colspan="3"|Nhích lên trên ('''ɹ̝''' = âm xát vòm mềm hữu thanh)
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̩| ̩ ]]||Âm tiết tính||[[ ̞| ̞ ]]||colspan="3"|Dịch xuống dưới ('''β̞''' = âm tiếp cận đôi môi hữu thanh)
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̯| ̯ ]]||Phi âm tiết tính||[[ ̘| ̘ ]]||colspan="3"|Gốc lưỡi nhích về trước
|-bgcolor="#E7F5DE" valign=top align="center"
|[[˞| ˞ ]]||Có tính R-hóa (phát âm có "r" đi sau nguyên âm)||[[ ̙| ̙ ]]||colspan="3"|Gốc lưỡi lùi về sau
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ͍| ͍ ]]||Môi tản||[[ ͈| ͈ ]]||Cấu âm mạnh||[[ ͊| ͊ ]]||Vô âm mũi
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ͆| ͆ ]]||Âm môi-răng||[[ ͉| ͉ ]]||Cấu âm yếu||[[ ͋| ͋ ]]||Âm mũi thoát
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̪͆| ̪͆ ]]||Âm đôi hàm/giao tế||[[\| \ ]]||Cấu âm lặp||[[ ͌| ͌ ]]||Ma sát họng-vòm mềm
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̳| ̳ ]]||Chân răng||[[ ͎| ͎ ]]||Cấu âm huýt||[[ ↓| ↓ ]]||Luồng khí đi vào
|-bgcolor="#E7F5DE" valign=top align="center"
|[[ ̼| ̼ ]]||Âm môi lưỡi||[[ ͢ | ͢ ]]||Cấu âm trượt||[[ ↑| ↑ ]]||Luồng khí đi ra
|}
==Xem thêm==
*[[:en:Wiktionary:IPA pronunciation key|Bảng giải thích IPA]] tại Wiktionary tiếng Anh
==Ghi chú==
<references group="ghi chú"/>
[[Thể loại:Trợ giúp|{{PAGENAME}}]]
[[Thể loại:Phát âm]]
s9skofhl7kt5ecg1dlryb7k9l09n6do
chloroplast
0
55881
2512146
2456396
2026-08-07T13:26:43Z
Kelly zhrm
58416
2512146
wikitext
text/x-wiki
{{also|Chloroplast}}
=={{langname|en}}==
{{wp|en:}}
==={{ĐM|etym}}===
Từ {{confix|en|chloro|plast}}.
==={{ĐM|pron}}===
* {{IPA|en|/ˈklɔːɹəʊˌplæst/}}
* {{audio|en|En-us-ncalif-chloroplast.ogg|a=Northern California}}
==={{ĐM|n}}===
{{en-noun}}
# {{lb|en|cytology}} [[lục lạp|Lục lạp]].
#: {{syn|en|chloroplastid<qq:cổ xưa>}}
===={{ĐM|hyper}}====
* {{l|en|plastid}}
===={{ĐM|mero}}====
* {{l|en|granum}}
===={{ĐM|coordinate}}====
* {{l|en|leucoplast}}, {{l|en|chromoplast}}
===={{ĐM|drv}}====
{{col|en|chloroplastal|chloroplastic|extrachloroplast|kleptochloroplast|macrochloroplast|nonchloroplast|subchloroplast|chloroplast DNA}}
==={{ĐM|see}}===
* {{l|en|chromoblast}}
* {{l|en|chromoplast}}
* {{l|en|mitochondrion}}
* {{l|en|hydrogenosome}}
==={{ĐM|ref}}===
{{R:FVDP|db=ev}}
* {{R:OneLook}}
* {{pedia|lang=en}}
=={{langname|pl}}==
{{wp|pl:}}
[[File:Bryum capillare leaf cells.jpg|thumb|chloroplasty]]
==={{ĐM|etym}}===
{{intnat|pl}}; so sánh với {{cog|en|chloroplast}}, {{cog|fr|chloroplaste}}, {{cog|de|Chloroplast}}.
==={{ĐM|pron}}===
{{pl-pr|a=LL-Q809 (pol)-Poemat-chloroplast.wav}}
==={{ĐM|n}}===
{{pl-noun|m-in|adj=chloroplastowy}}
# {{lb|pl|cytology}} [[lục lạp|Lục lạp]].
===={{ĐM|decl}}====
{{pl-decl-noun-m-in}}
===={{ĐM|rel}}====
{{col|pl|title=danh từ|chloroplastyna}}
==={{ĐM|further}}===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
* {{R:pl:PWN Encyclopedia}}
nrnvbicaz4rxpoy2luyts3rksbeozfk
2512225
2512146
2026-08-08T02:16:01Z
Hiyuune
50834
/* Cách phát âm */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512225
wikitext
text/x-wiki
{{also|Chloroplast}}
=={{langname|en}}==
{{wp|en:}}
==={{ĐM|etym}}===
Từ {{confix|en|chloro|plast}}.
==={{ĐM|pron}}===
* {{IPA|en|/ˈklɔːɹəʊˌplæst/}}
* {{audio|en|En-us-ncalif-chloroplast.ogg|a=Bắc California}}
==={{ĐM|n}}===
{{en-noun}}
# {{lb|en|cytology}} [[lục lạp|Lục lạp]].
#: {{syn|en|chloroplastid<qq:cổ xưa>}}
===={{ĐM|hyper}}====
* {{l|en|plastid}}
===={{ĐM|mero}}====
* {{l|en|granum}}
===={{ĐM|coordinate}}====
* {{l|en|leucoplast}}, {{l|en|chromoplast}}
===={{ĐM|drv}}====
{{col|en|chloroplastal|chloroplastic|extrachloroplast|kleptochloroplast|macrochloroplast|nonchloroplast|subchloroplast|chloroplast DNA}}
==={{ĐM|see}}===
* {{l|en|chromoblast}}
* {{l|en|chromoplast}}
* {{l|en|mitochondrion}}
* {{l|en|hydrogenosome}}
==={{ĐM|ref}}===
{{R:FVDP|db=ev}}
* {{R:OneLook}}
* {{pedia|lang=en}}
=={{langname|pl}}==
{{wp|pl:}}
[[File:Bryum capillare leaf cells.jpg|thumb|chloroplasty]]
==={{ĐM|etym}}===
{{intnat|pl}}; so sánh với {{cog|en|chloroplast}}, {{cog|fr|chloroplaste}}, {{cog|de|Chloroplast}}.
==={{ĐM|pron}}===
{{pl-pr|a=LL-Q809 (pol)-Poemat-chloroplast.wav}}
==={{ĐM|n}}===
{{pl-noun|m-in|adj=chloroplastowy}}
# {{lb|pl|cytology}} [[lục lạp|Lục lạp]].
===={{ĐM|decl}}====
{{pl-decl-noun-m-in}}
===={{ĐM|rel}}====
{{col|pl|title=danh từ|chloroplastyna}}
==={{ĐM|further}}===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
* {{R:pl:PWN Encyclopedia}}
ldkyod3v3t0tg31595g1ohvmaw4qq0b
chế
0
92048
2512249
2415571
2026-08-08T02:27:44Z
WhoAlone
40420
2512249
wikitext
text/x-wiki
{{-vie-}}
{{-pron-}}
{{vi-pron}}
{{-hanviet-}}
{{đầu}}
*[[𥮥]]: [[chế]]
*[[杉]]: [[chế]], [[sam]], [[am]]
*[[鯯]]: [[chế]], [[niềm]]
*[[晳]]: [[chẩn]], [[chế]], [[tích]], [[triết]]
*[[制]]: [[chế]]
{{mid}}
*[[猘]]: [[chệ]], [[chế]]
*[[製]]: [[chế]]
*[[㫼]]: [[chế]], [[triết]]
*[[狾]]: [[chế]]
{{cuối}}
{{-hanviet-t-}}
{{đầu}}
*[[猘]]: [[chế]]
*[[晳]]: [[chế]], [[triết]]
{{mid}}
*[[製]]: [[chế]]
*[[制]]: [[chế]]
{{cuối}}
{{-nôm-}}
{{đầu}}
*[[𨨪]]: [[chẻ]], [[chế]]
*[[鯯]]: [[chế]]
*[[吱]]: [[khi]], [[chi]], [[chế]], [[chê]]
*[[制]]: [[chơi]], [[choi]], [[xế]], [[chế]], [[xiết]], [[chóe]], [[chới]]
{{mid}}
*[[猘]]: [[chệ]], [[chế]]
*[[製]]: [[siết]], [[chẽ]], [[chế]], [[xiết]]
*[[𠶜]]: [[chơi]], [[chế]]
*[[狾]]: [[chế]]
{{cuối}}
{{-paro-}}
{{đầu}}
:* [[chẻ]]
:* [[che]]
:* [[chê]]
{{giữa}}
:* [[chè]]
:* [[ché]]
{{cuối}}
{{-noun-}}
{{vi-noun}}
# [[tang|Tang]].
#: ''Để '''chế'''.''
#: ''Khăn '''chế'''.''
# [[lời|Lời]] của [[vua]] [[phong]] [[thưởng]] cho [[công thần]], [[viết]] theo [[lối]] văn tứ lục [[biền]] [[ngẫu]], mỗi [[câu]] [[ngắt]] thành [[hai]] đoạn 4-6 hoặc 6-4 và có [[vế]] đối ở từng [[cặp]] [[câu]].
{{-verb-}}
{{vi-verb}}
# [[nhạo|Nhạo]] để làm cho [[xấu hổ]], e [[thẹn]].
#: ''Bị bạn '''chế'''.''
#: '''''Chế''' hai đứa lấy nhau.''
# [[rót|Rót]] thêm vào để [[phát huy]] [[tác dụng]].
#: '''''Chế''' thêm dầu.''
# [[làm ra|Làm ra]], [[tạo]] [[ra]].
#: '''''Chế''' ra một sản phẩm mới.''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
=={{langname|enc}}==
==={{ĐM|noun}}===
{{head|enc|Danh từ}}
# [[chị]].
{{-ref-}}
* Xuân Lam (5 tháng 12 năm 2021) [https://baocaobang.vn/Van-hoa/An-so-kho-tram-tich-van-hoa-nguoi-Nung-Ven-duy-nhat-o-Cao-Bang/85715.bcb “Ẩn số” kho trầm tích văn hóa người Nùng Vẻn duy nhất ở Cao Bằng]. ''Báo Cao Bằng điện tử''.
{{c|enc|Gia đình}}
e2d0rzlb5qume1mso1aidqclm0005qy
cố
0
92200
2512253
2415729
2026-08-08T02:28:10Z
WhoAlone
40420
2512253
wikitext
text/x-wiki
{{-vie-}}
{{-pron-}}
{{vi-pron}}
{{-hanviet-}}
{{đầu}}
*[[锢]]: [[cố]]
*[[故]]: [[cố]]
*[[顧]]: [[cố]]
*[[雇]]: [[cố]]
*[[堌]]: [[cố]]
*[[崮]]: [[cố]]
*[[僱]]: [[cố]], [[cổ]]
*[[估]]: [[cố]], [[cổ]], [[cô]]
*[[鮕]]: [[cố]], [[niêm]]
{{mid}}
*[[𠑹]]: [[cố]]
*[[錮]]: [[cố]]
*[[祻]]: [[cố]]
*[[固]]: [[cố]]
*[[㽽]]: [[cố]]
*[[痼]]: [[cố]], [[bễ]]
*[[牿]]: [[cố]], [[cốc]]
*[[顾]]: [[cố]]
{{cuối}}
{{-hanviet-t-}}
{{đầu}}
*[[故]]: [[cố]]
*[[顧]]: [[cố]]
*[[雇]]: [[cố]]
*[[錮]]: [[cố]]
{{mid}}
*[[僱]]: [[cố]]
*[[固]]: [[cố]]
*[[痼]]: [[cố]]
{{cuối}}
{{-nôm-}}
{{đầu}}
*[[姑]]: [[cố]], [[o]], [[co]], [[cô]], [[go]]
*[[]]: [[cố]], [[có]]
*[[锢]]: [[cố]]
*[[故]]: [[cớ]], [[cố]], [[cô]]
*[[顧]]: [[cố]]
*[[雇]]: [[cố]]
*[[堌]]: [[cố]]
*[[錮]]: [[cố]]
{{mid}}
*[[僱]]: [[cố]]
*[[估]]: [[cố]], [[cổ]], [[cô]]
*[[鮕]]: [[cố]], [[niêm]]
*[[祻]]: [[cố]]
*[[固]]: [[cố]], [[có]], [[cúa]]
*[[痼]]: [[cố]]
*[[顾]]: [[cố]]
{{cuối}}
{{-paro-}}
{{đầu}}
:* [[cò]]
:* [[co]]
:* [[có]]
:* [[cô]]
:* [[cỗ]]
:* [[cờ]]
:* [[cớ]]
{{giữa}}
:* [[Co]]
:* [[cỏ]]
:* [[cọ]]
:* [[cổ]]
:* [[cơ]]
:* [[cỡ]]
{{cuối}}
{{-noun-}}
'''cố'''
# [[người|Người]] [[sinh ra]] ông [[nội]] hoặc ông [[ngoại]], [[bà nội]] hoặc [[bà ngoại]].
#: '''''Cố''' tôi năm nay tròn một trăm tuổi.''
#: ''Con người có '''cố''', có ông, như cây có cội, như sông có nguồn. ([[ca dao]])''
# [[linh mục|Linh mục]] [[Thiên chúa giáo]].
#: '''''Cố''' Alexandre de Rhodes.''
# Đt. [[Từ]] [[tôn xưng]] [[người già]].
#: ''Em học sinh đưa một cụ '''cố''' qua đường.''
{{-adj-}}
'''cố'''
# [[tù|Tù]] đặt trước [[tên]] một [[chức vụ]] [[cao]] để chỉ [[người]] [[giữ]] [[chức vụ]] đó đã qua đời.
#: '''''Cố''' bộ trưởng Nguyễn Văn Huyên.''
# Đgt, [[trgt]]. {{like-entry|cố gắng}}.
#: '''''Cố''' lên.''
#: '''''Cố''' học cho giỏi.''
#: ''Làm '''cố''' cho xong.''
#: '''''Cố''' quá thì quá cố.''
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Danh từ tiếng Việt]]
[[Thể loại:Tính từ tiếng Việt]]
=={{langname|enc}}==
==={{ĐM|noun}}===
{{head|enc|Danh từ}}
# [[anh]].
{{-ref-}}
* Xuân Lam (5 tháng 12 năm 2021) [https://baocaobang.vn/Van-hoa/An-so-kho-tram-tich-van-hoa-nguoi-Nung-Ven-duy-nhat-o-Cao-Bang/85715.bcb “Ẩn số” kho trầm tích văn hóa người Nùng Vẻn duy nhất ở Cao Bằng]. ''Báo Cao Bằng điện tử''.
{{c|enc|Gia đình}}
a7yi85ltf4wsgjiwvlm2kfbay4kjm4t
mế
0
93652
2512251
2417077
2026-08-08T02:27:51Z
WhoAlone
40420
2512251
wikitext
text/x-wiki
{{-vie-}}
{{-pron-}}
{{vi-pron}}
{{-nôm-}}
{{đầu}}
*[[迷]]: [[mài]], [[muồi]], [[mê]], [[mơ]], [[me]], [[mế]]
{{cuối}}
{{-paro-}}
{{đầu}}
:* [[mễ]]
:* [[mê]]
:* [[mé]]
:* [[mẻ]]
:* [[mè]]
:* [[mệ]]
{{giữa}}
:* [[mề]]
:* [[mẹ]]
:* [[mẽ]]
:* [[Mè]]
:* [[me]]
{{cuối}}
{{-noun-}}
'''mế'''
# {{term|Đph}} .
# [[bà|Bà]] [[già]].
{{-ref-}}
{{R:FVDP}}
{{R:WinVNKey:Lê Sơn Thanh}}
[[Thể loại:Danh từ tiếng Việt]]
=={{langname|enc}}==
==={{ĐM|noun}}===
{{head|enc|Danh từ}}
# [[mẹ]].
{{-ref-}}
* Xuân Lam (5 tháng 12 năm 2021) [https://baocaobang.vn/Van-hoa/An-so-kho-tram-tich-van-hoa-nguoi-Nung-Ven-duy-nhat-o-Cao-Bang/85715.bcb “Ẩn số” kho trầm tích văn hóa người Nùng Vẻn duy nhất ở Cao Bằng]. ''Báo Cao Bằng điện tử''.
{{c|enc|Gia đình}}
=={{langname|tpo}}==
==={{ĐM|noun}}===
{{head|tpo|Danh từ}}
# [[mẹ]].
==={{ĐM|ref}}===
* ''Tài Liệu Học Chữ Thái Lai- Pao''.
{{c|tpo|Gia đình}}
j3bfgsikwtmp62f3xd2n8t1rbj20y7c
parable
0
102438
2512276
2505091
2026-08-08T03:27:27Z
Kateru Zakuro
34522
Hồi sửa về bản sửa đổi 1888085 của [[Special:Contributions/HydrizBot|HydrizBot]] ([[User talk:HydrizBot|talk]])
2512276
wikitext
text/x-wiki
{{-eng-}}
{{-pron-}}
* [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpæ.rə.bəl/}}
{{-noun-}}
'''parable''' {{IPA|/ˈpæ.rə.bəl/}}
# [[truyện|Truyện]] [[ngụ ngôn]].
# {{term|Từ cổ,nghĩa cổ}} [[lời nói|Lời nói]] [[bí]] ẩn.
# {{term|Từ cổ,nghĩa cổ}} [[tục ngữ|Tục ngữ]].
{{-expr-}}
* '''to take up one's parable''': {{term|Từ cổ,nghĩa cổ}} [[bắt đầu|Bắt đầu]] [[nói chuyện]], [[bắt đầu]] đàm [[luận]].
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Anh]]
s9110tsw5n2moyd3gzvswuls102ahx5
2512277
2512276
2026-08-08T03:27:41Z
Kateru Zakuro
34522
2512277
wikitext
text/x-wiki
{{-eng-}}
{{-pron-}}
* [[Wiktionary:IPA|IPA]]: {{IPA-old|/ˈpæ.rə.bəl/}}
{{-noun-}}
'''parable''' {{IPA-old|/ˈpæ.rə.bəl/}}
# [[truyện|Truyện]] [[ngụ ngôn]].
# {{term|Từ cổ,nghĩa cổ}} [[lời nói|Lời nói]] [[bí]] ẩn.
# {{term|Từ cổ,nghĩa cổ}} [[tục ngữ|Tục ngữ]].
{{-expr-}}
* '''to take up one's parable''': {{term|Từ cổ,nghĩa cổ}} [[bắt đầu|Bắt đầu]] [[nói chuyện]], [[bắt đầu]] đàm [[luận]].
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Anh]]
bvf5fouf22y8o4kfeh8ct6z46p64q8d
kin
0
153502
2512323
2485698
2026-08-08T10:04:09Z
Ducminhduongcb
60923
/* */ Tiếng Tày Sapa và tiếng Tày đều có nghĩa chung là ĂN
2512323
wikitext
text/x-wiki
{{-eng-}}
{{-pron-}}
* [[Wiktionary:IPA|IPA]]: {{IPA-old|/ˈkɪn/}}
{{pron-audio
|place=Hoa Kỳ <!-- Feel free to precise the city or the area -->
|file=En-us-kin.ogg
|pron=ˈkɪn}}
{{-noun-}}
'''kin''' {{IPA-old|/ˈkɪn/}}
# [[dòng dõi|Dòng dõi]], [[dòng họ]], [[gia]] đình.
#: ''to come of good '''kin''''' — sinh ra ở một gia đình tốt
# [[bà con|Bà con]] [[thân thiết]], [[họ hàng]].
#: ''to be near of '''kin''''' — là bà con gần
{{-adj-}}
'''kin''' vị ngữ {{IPA-old|/ˈkɪn/}}
# Có họ là [[bà con]] [[thân thích]].
#: ''we are '''kin''''' — chúng tôi có họ với nhau
#: ''to be '''kin''' to someone'' — có họ với ai, là bà con thân thích với ai
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Anh]]
[[Thể loại:Tính từ tiếng Anh]]
{{-zns-}}
{{-pron-}}
* {{IPA4|zns|[kīn]}}
{{-noun-}}
{{head|zns|Danh từ}}
# [[cung]] (vũ khí).
{{-ref-}}
* Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''.
{{-mlc-}}
{{-verb-}}
{{pn}}
# [[ăn]].
{{catname|Động từ|tiếng Sán Chay}}
{{-tys-}}
{{-verb-}}
{{pn}}
# [[ăn]].
{{catname|Động từ|tiếng Tày}}
6i89dawyzfew1ivy5w0d5os2qkdm1jf
2512324
2512323
2026-08-08T10:05:50Z
Ducminhduongcb
60923
/* */
2512324
wikitext
text/x-wiki
{{-eng-}}
{{-pron-}}
* [[Wiktionary:IPA|IPA]]: {{IPA-old|/ˈkɪn/}}
{{pron-audio
|place=Hoa Kỳ <!-- Feel free to precise the city or the area -->
|file=En-us-kin.ogg
|pron=ˈkɪn}}
{{-noun-}}
'''kin''' {{IPA-old|/ˈkɪn/}}
# [[dòng dõi|Dòng dõi]], [[dòng họ]], [[gia]] đình.
#: ''to come of good '''kin''''' — sinh ra ở một gia đình tốt
# [[bà con|Bà con]] [[thân thiết]], [[họ hàng]].
#: ''to be near of '''kin''''' — là bà con gần
{{-adj-}}
'''kin''' vị ngữ {{IPA-old|/ˈkɪn/}}
# Có họ là [[bà con]] [[thân thích]].
#: ''we are '''kin''''' — chúng tôi có họ với nhau
#: ''to be '''kin''' to someone'' — có họ với ai, là bà con thân thích với ai
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Anh]]
[[Thể loại:Tính từ tiếng Anh]]
{{-zns-}}
{{-pron-}}
* {{IPA4|zns|[kīn]}}
{{-noun-}}
{{head|zns|Danh từ}}
# [[cung]] (vũ khí).
{{-ref-}}
* Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''.
{{-mlc-}}
{{-verb-}}
{{pn}}
# [[ăn]].
{{catname|Động từ|tiếng Sán Chay}}
{{-tyz-}}
{{-verb-}}
{{pn}}
# [[ăn]].
{{catname|Động từ|tiếng Tày}}
omhpndvyfmgn12bjwh9h0l7cfnb7eur
2512329
2512324
2026-08-08T10:11:20Z
Higashizakura
36666
tiếng Tày Sa Pa (Tày Mường Bo) và tiếng Tày là 2 ngôn ngữ khác nhau
2512329
wikitext
text/x-wiki
{{-eng-}}
{{-pron-}}
* [[Wiktionary:IPA|IPA]]: {{IPA-old|/ˈkɪn/}}
{{pron-audio
|place=Hoa Kỳ <!-- Feel free to precise the city or the area -->
|file=En-us-kin.ogg
|pron=ˈkɪn}}
{{-noun-}}
'''kin''' {{IPA-old|/ˈkɪn/}}
# [[dòng dõi|Dòng dõi]], [[dòng họ]], [[gia]] đình.
#: ''to come of good '''kin''''' — sinh ra ở một gia đình tốt
# [[bà con|Bà con]] [[thân thiết]], [[họ hàng]].
#: ''to be near of '''kin''''' — là bà con gần
{{-adj-}}
'''kin''' vị ngữ {{IPA-old|/ˈkɪn/}}
# Có họ là [[bà con]] [[thân thích]].
#: ''we are '''kin''''' — chúng tôi có họ với nhau
#: ''to be '''kin''' to someone'' — có họ với ai, là bà con thân thích với ai
{{-ref-}}
{{R:FVDP}}
[[Thể loại:Danh từ tiếng Anh]]
[[Thể loại:Tính từ tiếng Anh]]
{{-zns-}}
{{-pron-}}
* {{IPA4|zns|[kīn]}}
{{-noun-}}
{{head|zns|Danh từ}}
# [[cung]] (vũ khí).
{{-ref-}}
* Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''.
{{-mlc-}}
{{-verb-}}
{{pn}}
# [[ăn]].
{{catname|Động từ|tiếng Sán Chay}}
{{-tys-}}
{{-verb-}}
{{pn}}
# [[ăn]].
{{catname|Động từ|tiếng Tày Sa Pa}}
mswy850udf454pcbxw6nwwexv7lwtih
2512349
2512329
2026-08-08T11:35:48Z
Hiyuune
50834
2512349
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "kin"}}
{{minitoc}}
=={{langname|mul}}==
==={{section|etym}}===
{{clip|mul|en:'''Kin'''yarwanda}} hoặc {{abbrev|mul|nocap=1|rw:I'''kin'''yarwanda}}.
==={{section|symbol}}===
{{mul-symbol}}
# {{ISO 639|2&3|rw|Kinyarwanda}}
=={{langname|af}}==
==={{section|etym}}===
Từ {{inh|af|nl|kin}}, từ {{inh|af|dum|kinne}}, từ {{inh|af|odt|kinni}}, từ {{inh|af|gem-pro|*kinnuz}}, từ {{inh|af|ine-pro|*ǵénus}}.
==={{section|pron}}===
* {{audio|af|LL-Q14196 (afr)-Oesjaar-kin.wav}}
==={{section|n}}===
{{af-noun|kinne}}
# {{alternative form of|af|ken}}
=={{langname|en}}==
==={{section|pron}}===
* {{enPR|kĭn}}, {{IPA4|en|/kɪn/|[k̟ʰɪn]}}
* {{audio|en|en-us-kin.ogg|a=US}}
* {{rhymes|en|ɪn|s=1}}
==={{section|etym}} 1===
{{root|en|ine-pro|*ǵenh₁-}}
Từ {{inh|en|enm|kyn}}, từ {{inh|en|ang|cynn}}, từ {{inh|en|gmw-pro|*kuni}}, từ {{inh|en|gem-pro|*kunją}}, từ {{inh|en|ine-pro||*ǵn̥h₁yom}}, từ {{mention|ine-pro|*ǵenh₁-}}.
{{etystub|en}}
===={{section|n}}====
{{en-noun|~|s|*}}
# [[dòng dõi|Dòng dõi]], [[dòng họ]], [[gia]] đình.
#: {{ux|en|To come of good '''kin'''.|Sinh ra ở một gia đình tốt.}}
# [[bà con|Bà con]] [[thân thiết]], [[họ hàng]].
#: {{ux|en|To be near of '''kin'''.|Là bà con gần.}}
====={{section|drv}}=====
{{col|en|kinsfolk|alkin|erfkin|kindom|king|Kinism|Kinist|kinless|kinly|kinomics|kinslayer|kinsperson|kinterm|kintype|mankind|nonkin
| fictive kin|kin selection|kin state|kissing kin|totem kin|akin
|kind
|kindred
|kinfolk
|kinhood
|kinship
|kinsman
|kinstate
|kinswoman
|kith and kin
|next of kin
|otakukin
|otherkin
}}
====={{section|see}}=====
* [[kith]]
* [[clan]]
====={{section|further}}=====
* {{R:OneLook}}
* {{R:Britannica 1911|Kin}}
===={{section|adj}}====
{{en-adj|-}}
# {{lb|en|uncommon}} Có họ là [[bà con]] [[thân thích]].
#: {{ux|en|We are '''kin'''.|Chúng tôi có họ với nhau.}}
#: {{ux|en|To be '''kin''' to someone.|Có họ với ai, là bà con thân thích với ai.}}
==={{section|etym}} 2===
===={{section|n}}====
{{en-noun}}
# {{alt form|en|qin|t=một nhạc cụ dây truyền thống của Trung Quốc}}.
==={{section|etym}} 3===
{{clipping|en|fictionkin}}.
===={{section|v}}====
{{en-verb}}
# {{lb|en|transitive|fandom}} [[đồng cảm|Đồng cảm]] với; kết nối về [[tinh thần]] với một nhân vật có thật hoặc [[hư cấu]].
===={{section|n}}====
{{en-noun|s|*}}
# {{lb|en|fandom}} Có sự kết nối về [[tinh thần]] với một nhân vật có thật hoặc [[hư cấu]].
==={{section|etym}} 4===
===={{section|n}}====
{{en-noun}}
# {{alternative form of|en|k'in}}.
==={{section|etym}} 5===
===={{section|v}}====
{{head|en|Động từ}}
# {{pronunciation spelling of|en|can}}.
==={{section|etym}} 6===
===={{section|n}}====
{{en-noun|-}}
# {{lb|en|colloquial}} {{clip of|en|kinesiology}}.
==={{section|ana}}===
* {{anagrams|en|a=ikn|-nik|Nik|ink}}
==={{section|ref}}===
* {{R:FVDP}}
{{cln|en|Từ 3 âm tiết}}
=={{langname|enm}}==
==={{section|n}}===
{{head|enm|Danh từ|altform=1}}
# {{alt form|enm|kyn}}
=={{langname|hu}}==
==={{section|etym}}===
{{affix|hu|ki|-n|id2=superessive|nocat=y}}
==={{section|pron}}===
* {{hu-IPA}}
==={{section|pronoun}}===
{{head|hu|Biến thể hình thái đại từ}}
# {{inflection of|hu|ki||spe|s}}
==={{section|see}}===
{{hu-suff-pron-table}}
=={{langname|io}}==
{{number box|io|5}}
==={{section|etym}}===
Từ {{der|io|fr|cinq}}, {{der|io|es|cinco}}, {{der|io|it|cinque}}, cuối cùng từ {{der|io|ine-pro|*pénkʷe}}.
==={{section|num}}===
{{head|io|Số từ}}
# Số [[năm]] (5)
{{cln|io|Số đếm}}.
=={{langname|kmr}}==
==={{section|adj}}===
{{head|kmr|Tính từ|so sánh hơn|kintir|so sánh nhất|herî kin}}
# [[ngắn|Ngắn]].
===={{section|syn}}====
* {{l|kmr|kurt}}
* {{l|kmr|qut}}
* {{l|kmr|quse}}
=={{langname|nan-hbl}}==
{{zh-see|斤|poj}}
=={{langname|zns}}==
==={{section|pron}}===
* {{IPA4|zns|[kīn]}}
==={{section|n}}===
{{head|zns|Danh từ}}
# [[cung|Cung]] (vũ khí).
==={{section|ref}}===
* Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''.
=={{langname|ja}}==
==={{section|rom}}===
{{ja-romaji}}
# {{ja-romanization of|きん}}
=={{langname|mlc}}==
==={{section|v}}===
{{head|mlc|Động từ}}
# [[ăn|Ăn]].
=={{langname|cs}}==
==={{section|pron}}===
* {{cs-IPA}}
* {{rhymes|cs|ɪn|s=1}}
==={{section|n}}===
{{head|cs|Biến thể hình thái danh từ}}
# {{infl of|cs|kino||gen|p}}
==={{section|ana}}===
* {{l|cs|nik}}
=={{langname|tys}}==
==={{section|v}}===
{{head|tys|Động từ}}
# [[ăn|Ăn]].
=={{langname|yol}}==
==={{section|n}}===
{{head|yol|Danh từ}}
# {{alt form|yol|ken}}
==={{section|ref}}===
* {{R:Poole 1867|page=49}}
9i5lh4dpqb63ks9lryik61i1418xa0j
装备
0
215515
2512167
1988337
2026-08-07T15:47:20Z
Hiyuune
50834
2512167
wikitext
text/x-wiki
{{also|装備}}
=={{langname|zh}}==
{{zh-see|裝備}}
j901hgavyq4zvu5bmq0yajos02ys9sp
tūkstantis
0
238781
2512200
2276650
2026-08-07T17:13:07Z
Hiyuune
50834
/* Tiếng Litva */
2512200
wikitext
text/x-wiki
=={{langname|lt}}==
{{wp|lt:}}
==={{section|etym}}===
Từ {{inh|lt|ine-bsl-pro|*tū́ˀsantis}}, từ {{inh|lt|ine-pro|*tuHsont-}}, {{m|ine-pro|*tuHsenti-}}. Giống với {{cog|lv|tūkstotis}}, {{cog|ru|ты́сяча}}, {{cog|pl|tysiąc}}, {{cog|en|thousand}}, {{cog|de|tausend}}, {{cog|got|𐌸𐌿𐍃𐌿𐌽𐌳𐌹|tr=þūsundi}}.
==={{section|pron}}===
{{lt-pr|tū́kstantis}}
==={{section|num}}===
{{head|lt|Số từ|head=tū́kstantis}}
# {{cln|lt|Số đếm}} [[nghìn|Nghìn]]; [[ngàn]].
===={{section|decl}}====
{{lt-noun-m-tis-1|tūkstan|tū́kstan}}
===={{section|see}}====
* {{sense|số thứ tự}} {{l|lt|tū́kstantas|t=thousandth}}
==={{section|further}}===
* {{R:LKZ}}
mqpdpdiq2kn2ym19mdel1ejw2j2xjae
2512201
2512200
2026-08-07T17:13:26Z
Hiyuune
50834
2512201
wikitext
text/x-wiki
=={{langname|lt}}==
{{wp|lt:}}
==={{section|etym}}===
Từ {{inh|lt|ine-bsl-pro|*tū́ˀsantis}}, từ {{inh|lt|ine-pro|*tuHsont-}}, {{m|ine-pro|*tuHsenti-}}. Giống với {{cog|lv|tūkstotis}}, {{cog|ru|ты́сяча}}, {{cog|pl|tysiąc}}, {{cog|en|thousand}}, {{cog|de|tausend}}, {{cog|got|𐌸𐌿𐍃𐌿𐌽𐌳𐌹|tr=þūsundi}}.
==={{section|pron}}===
{{lt-pr|tū́kstantis}}
==={{section|num}}===
{{head|lt|Số từ|head=tū́kstantis}}
# {{cln|lt|Số đếm}} [[nghìn|Nghìn]]; [[ngàn]].
===={{section|decl}}====
{{lt-noun-m-tis-1|tūkstan|tū́kstan}}
===={{section|see}}====
* {{sense|số thứ tự}} {{l|lt|tū́kstantas|t=thứ một nghìn}}
==={{section|further}}===
* {{R:LKZ}}
5odynuq838axtf8704llzad1qk722it
2512202
2512201
2026-08-07T17:35:35Z
Hiyuune
50834
2512202
wikitext
text/x-wiki
=={{langname|lt}}==
{{wp|lt:}}
==={{section|etym}}===
Từ {{inh|lt|ine-bsl-pro|*tū́ˀsantis}}, từ {{inh|lt|ine-pro|*tuHsont-}}, {{m|ine-pro|*tuHsenti-}}. Giống với {{cog|lv|tūkstotis}}, {{cog|ru|ты́сяча}}, {{cog|pl|tysiąc}}, {{cog|en|thousand}}, {{cog|de|tausend}}, {{cog|got|𐌸𐌿𐍃𐌿𐌽𐌳𐌹|tr=þūsundi}}.
==={{section|pron}}===
{{lt-pr|tū́kstantis}}
==={{section|num}}===
{{head|lt|Số từ|head=tū́kstantis}}
# {{cln|lt|Số đếm}} Một [[nghìn]]; một [[ngàn]].
===={{section|decl}}====
{{lt-noun-m-tis-1|tūkstan|tū́kstan}}
===={{section|see}}====
* {{sense|số thứ tự}} {{l|lt|tū́kstantas|t=thứ một nghìn}}
==={{section|further}}===
* {{R:LKZ}}
bjf9ddzeygdv8p96jndgwf5mx2yz39n
오리
0
246338
2512157
1989191
2026-08-07T14:56:20Z
Kelly zhrm
58416
2512157
wikitext
text/x-wiki
=={{langname|ko}}==
[[Hình:Anas platyrhynchos var. domesticus 01.jpg|nhỏ|phải|오리]]
==={{ĐM|etym}}===
{{ko-etym-native|ws|올〮히|yale=wólhì}} Bằng chứng phương ngữ cho thấy tiếng Triều Tiên cổ có âm {{IPAfont|/k/}} thay vì âm {{IPAfont|/h/}}; so sánh với {{cog|ko-gys|올기}} và {{mention|ko-gys|올개이}}.
==={{ĐM|pron}}===
{{ko-IPA|l=y|a=LL-Q9176 (kor)-HappyMidnight-오리.wav}}
==={{ĐM|n}}===
{{ko-noun}}
# Con [[vịt]].
===={{ĐM|drv}}====
{{col2|ko|오리걸음|오리고기|오리발|물오리|참솜깃오리|집오리|청둥오리|비오리|황오리|오리너구리|수오리|되강오리|검둥오리|알락오리|고방오리|쇠오리|혹부리오리|가창오리|흰줄박이오리|홍머리오리|청머리오리|흰뺨오리|미국오리}}
===={{ĐM|see}}====
* {{l|ko|거위|t=[[ngỗng]]}}
* {{l|ko|고니|t=[[thiên nga]]}}
{{C|ko|Vịt}}
h0zam5yu3imycmc6zrb23112lvabnjx
Mô đun:languages/data/2
828
256179
2512184
2479537
2026-08-07T16:14:51Z
Hiyuune
50834
2512184
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
-- Ideally, we want to move these into [[Module:languages/data]], but because (a) it's necessary to use require on that module, and (b) they're only used in this data module, it's less memory-efficient to do that at the moment. If it becomes possible to use mw.loadData, then these should be moved there.
s["de-Latn-sortkey"] = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove,
from = {"æ", "œ", "ß"},
to = {"ae", "oe", "ss"}
}
s["de-Latn-standardchars"] = "AaÄäBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsẞßTtUuÜüVvWwXxYyZz"
s["ka-entryname"] = {remove_diacritics = c.circ}
s["no-sortkey"] = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla,
remove_exceptions = {"å"},
from = {"æ", "ø", "å"},
to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]}
}
s["no-standardchars"] = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc
s["tg-entryname"] = {remove_diacritics = c.grave .. c.acute}
s["tk-entryname"] = {remove_diacritics = c.macron}
local m = {}
m["aa"] = {
"tiếng Afar",
27811,
"cus-eas",
"Latn, Ethi",
"Tiếng Afar",
"Afar",
entry_name = {Latn = {remove_diacritics = c.acute}},
}
m["ab"] = {
"tiếng Abkhaz",
5111,
"cau-abz",
"Cyrl, Geor, Latn",
"Tiếng Abkhaz",
"Abkhaz",
translit = {
Cyrl = "ab-translit",
Geor = "Geor-translit",
},
override_translit = true,
display_text = {Cyrl = s["cau-Cyrl-displaytext"]},
entry_name = {
Cyrl = s["cau-Cyrl-entryname"],
Latn = s["cau-Latn-entryname"],
},
sort_key = {
Cyrl = {
from = {
"х'ә", -- 3 chars
"гь", "гә", "ӷь", "ҕь", "ӷә", "ҕә", "дә", "ё", "жь", "жә", "ҙә", "ӡә", "ӡ'", "кь", "кә", "қь", "қә", "ҟь", "ҟә", "ҫә", "тә", "ҭә", "ф'", "хь", "хә", "х'", "ҳә", "ць", "цә", "ц'", "ҵә", "ҵ'", "шь", "шә", "џь", -- 2 chars
"ӷ", "ҕ", "ҙ", "ӡ", "қ", "ҟ", "ԥ", "ҧ", "ҫ", "ҭ", "ҳ", "ҵ", "ҷ", "ҽ", "ҿ", "ҩ", "џ", "ә" -- 1 char
},
to = {
"х" .. p[4],
"г" .. p[1], "г" .. p[2], "г" .. p[5], "г" .. p[6], "г" .. p[7], "г" .. p[8], "д" .. p[1], "е" .. p[1], "ж" .. p[1], "ж" .. p[2], "з" .. p[2], "з" .. p[4], "з" .. p[5], "к" .. p[1], "к" .. p[2], "к" .. p[4], "к" .. p[5], "к" .. p[7], "к" .. p[8], "с" .. p[2], "т" .. p[1], "т" .. p[3], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[6], "ц" .. p[1], "ц" .. p[2], "ц" .. p[3], "ц" .. p[5], "ц" .. p[6], "ш" .. p[1], "ш" .. p[2], "ы" .. p[3],
"г" .. p[3], "г" .. p[4], "з" .. p[1], "з" .. p[3], "к" .. p[3], "к" .. p[6], "п" .. p[1], "п" .. p[2], "с" .. p[1], "т" .. p[2], "х" .. p[5], "ц" .. p[4], "ч" .. p[1], "ч" .. p[2], "ч" .. p[3], "ы" .. p[1], "ы" .. p[2], "ь" .. p[1]
}
},
},
}
m["ae"] = {
"tiếng Avesta",
29572,
"ira-cen",
"Avst, Gujr",
"Tiếng Avesta",
"Avesta",
translit = {Avst = "Avst-translit"},
wikipedia_article = "Tiếng Avesta",
}
m["af"] = {
"tiếng Afrikaans",
14196,
"gmw-frk",
"Latn, Arab",
"Tiếng Afrikaans",
"Afrikaans",
ancestors = "nl",
sort_key = {
Latn = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'",
from = {"['ʼ]n"},
to = {"n" .. p[1]}
}
},
}
m["ak"] = {
"tiếng Akan",
28026,
"alv-ctn",
"Latn",
"Tiếng Akan",
"Akan",
}
m["am"] = {
"tiếng Amhara",
28244,
"sem-eth",
"Ethi",
"Tiếng Amhara",
"Amhara",
translit = "Ethi-translit",
}
m["an"] = {
"tiếng Aragon",
8765,
"roa-ibe",
"Latn",
"Tiếng Aragon",
"Aragon",
ancestors = "roa-oan",
}
m["ar"] = {
"tiếng Ả Rập",
13955,
"sem-arb",
"Arab, Hebr, Syrc, Brai, Nbat",
"Tiếng Ả Rập",
"Ả Rập",
translit = {
Arab = "ar-translit"
},
strip_diacritics = {
Arab = "ar-stripdiacritics",
},
-- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]]
}
m["as"] = {
"tiếng Assam",
29401,
"inc-eas",
"as-Beng",
"Tiếng Assam",
"Assam",
ancestors = "inc-mas",
translit = "as-translit",
}
m["av"] = {
"tiếng Avar",
29561,
"cau-ava",
"Cyrl, Latn, Arab",
"Tiếng Avar",
"Avar",
ancestors = "oav",
translit = {
Cyrl = "cau-nec-translit",
Arab = "ar-translit",
},
override_translit = true,
display_text = {Cyrl = s["cau-Cyrl-displaytext"]},
entry_name = {
Cyrl = s["cau-Cyrl-entryname"],
Latn = s["cau-Latn-entryname"],
},
sort_key = {
Cyrl = {
from = {"гъ", "гь", "гӏ", "ё", "кк", "къ", "кь", "кӏ", "лъ", "лӏ", "тӏ", "хх", "хъ", "хь", "хӏ", "цӏ", "чӏ"},
to = {"г" .. p[1], "г" .. p[2], "г" .. p[3], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "к" .. p[4], "л" .. p[1], "л" .. p[2], "т" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[4], "ц" .. p[1], "ч" .. p[1]}
},
},
}
m["ay"] = {
"tiếng Aymara",
4627,
"sai-aym",
"Latn",
"Tiếng Aymara",
"Aymara",
}
m["az"] = {
"tiếng Azerbaijan",
9292,
"trk-ogz",
"Latn, Cyrl, fa-Arab",
"Tiếng Azerbaijan",
"Azerbaijan",
ancestors = "trk-oat",
dotted_dotless_i = true,
entry_name = {
Latn = {
from = {"ʼ"},
to = {"'"},
},
["fa-Arab"] = {
module = "ar-entryname",
["from"] = {
"ۆ",
"ۇ",
"وْ",
"ڲ",
"ؽ",
},
["to"] = {
"و",
"و",
"و",
"گ",
"ی",
},
},
},
display_text = {
Latn = {
from = {"'"},
to = {"ʼ"}
}
},
sort_key = {
Latn = {
from = {
"i", -- Ensure "i" comes after "ı".
"ç", "ə", "ğ", "x", "ı", "q", "ö", "ş", "ü", "w"
},
to = {
"i" .. p[1],
"c" .. p[1], "e" .. p[1], "g" .. p[1], "h" .. p[1], "i", "k" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1]
}
},
Cyrl = {
from = {"ғ", "ә", "ы", "ј", "ҝ", "ө", "ү", "һ", "ҹ"},
to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "и" .. p[2], "к" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]}
},
},
}
m["ba"] = {
"tiếng Bashkir",
13389,
"trk-kbu",
"Cyrl",
"Tiếng Bashkir",
"Bashkir",
translit = "ba-translit",
override_translit = true,
sort_key = {
from = {"ғ", "ҙ", "ё", "ҡ", "ң", "ө", "ҫ", "ү", "һ", "ә"},
to = {"г" .. p[1], "д" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "с" .. p[1], "у" .. p[1], "х" .. p[1], "э" .. p[1]}
},
}
m["be"] = {
"tiếng Belarus",
9091,
"zle",
"Cyrl, Latn",
"Tiếng Belarus",
"Belarus",
ancestors = "zle-obe",
translit = {Cyrl = "be-translit"},
entry_name = {
remove_diacritics = c.grave .. c.acute,
remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"},
},
sort_key = {
Cyrl = {
from = {"ґ", "ё", "і", "ў"},
to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "у" .. p[1]}
},
Latn = {
from = {"ć", "č", "dz", "dź", "dž", "ch", "ł", "ń", "ś", "š", "ŭ", "ź", "ž"},
to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "d" .. p[3], "h" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]}
},
},
standardChars = {
Cyrl = "АаБбВвГгДдЕеЁёЖжЗзІіЙйКкЛлМмНнОоПпРрСсТтУуЎўФфХхЦцЧчШшЫыЬьЭэЮюЯя",
Latn = "AaBbCcĆćČčDdEeFfGgHhIiJjKkLlŁłMmNnŃńOoPpRrSsŚśŠšTtUuŬŭVvYyZzŹźŽž",
(c.punc:gsub("'", "")) -- Exclude apostrophe.
},
}
m["bg"] = {
"tiếng Bulgari",
7918,
"zls",
"Cyrl",
"Tiếng Bulgari",
"Bulgari",
ancestors = "cu-bgm",
translit = "bg-translit",
strip_diacritics = {
remove_diacritics = c.grave .. c.acute,
remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"},
},
sort_key = {
remove_diacritics = c.grave .. c.acute,
remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"},
},
standard_chars = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЬьЮюЯя" .. c.punc,
}
m["bh"] = {
"tiếng Bihari",
135305,
"inc-eas",
"Deva",
}
m["bi"] = {
"tiếng Bislama",
35452,
"crp",
"Latn",
"Tiếng Bislama",
"Bislama",
ancestors = "en",
}
m["bm"] = {
"tiếng Bambara",
33243,
"dmn-emn",
"Latn",
"Tiếng Bambara",
"Bambara",
sort_key = {
from = {"ɛ", "ɲ", "ŋ", "ɔ"},
to = {"e" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1]}
},
}
m["bn"] = {
"tiếng Bengal",
9610,
"inc-bas",
"Beng, Newa",
"Tiếng Bengal",
"Bengal",
ancestors = "inc-mbn,pra-mag",
translit = {Beng = "bn-translit"},
}
m["bo"] = {
"tiếng Tây Tạng",
34271,
"sit-tib",
"Tibt", -- sometimes Deva?
"Tiếng Tây Tạng",
"Tây Tạng",
ancestors = "xct",
translit = "Tibt-translit",
override_translit = true,
display_text = s["Tibt-displaytext"],
entry_name = s["Tibt-entryname"],
sort_key = "Tibt-sortkey",
}
m["br"] = {
"tiếng Breton",
12107,
"cel-brs",
"Latn",
"Tiếng Breton",
"Breton",
ancestors = "xbm",
sort_key = {
from = {"ch", "c['ʼ’]h"},
to = {"c" .. p[1], "c" .. p[2]}
},
}
m["ca"] = {
"tiếng Catalan",
7026,
"roa-ocr",
"Latn",
"Tiếng Catalan",
"Catalan",
ancestors = "roa-oca",
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla,
from = {"l·l"},
to = {"ll"}
},
standardChars = "AaÀàBbCcÇçDdEeÉéÈèFfGgHhIiÍíÏïJjLlMmNnOoÓóÒòPpQqRrSsTtUuÚúÜüVvXxYyZz·" .. c.punc,
}
m["ce"] = {
"tiếng Chechen",
33350,
"cau-vay",
"Cyrl, Latn, Arab",
"Tiếng Chechen",
"Chechen",
translit = {
Cyrl = "cau-nec-translit",
Arab = "ar-translit",
},
override_translit = true,
display_text = {Cyrl = s["cau-Cyrl-displaytext"]},
entry_name = {
Cyrl = s["cau-Cyrl-entryname"],
Latn = s["cau-Latn-entryname"],
},
sort_key = {
Cyrl = {
from = {"аь", "гӏ", "ё", "кх", "къ", "кӏ", "оь", "пӏ", "тӏ", "уь", "хь", "хӏ", "цӏ", "чӏ", "юь", "яь"},
to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "о" .. p[1], "п" .. p[1], "т" .. p[1], "у" .. p[1], "х" .. p[1], "х" .. p[2], "ц" .. p[1], "ч" .. p[1], "ю" .. p[1], "я" .. p[1]}
},
},
}
m["ch"] = {
"tiếng Chamorro",
33262,
"poz",
"Latn",
"Tiếng Chamorro",
"Chamorro",
sort_key = {
remove_diacritics = "'",
from = {"å", "ch", "ñ", "ng"},
to = {"a" .. p[1], "c" .. p[1], "n" .. p[1], "n" .. p[2]}
},
}
m["co"] = {
"tiếng Corse",
33111,
"roa-itd",
"Latn",
"Tiếng Corse",
"Corse",
sort_key = {
from = {"chj", "ghj", "sc", "sg"},
to = {"c" .. p[1], "g" .. p[1], "s" .. p[1], "s" .. p[2]}
},
standardChars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìÏïJjLlMmNnOoÒòPpQqRrSsTtUuÙùÜüVvZz" .. c.punc,
}
m["cr"] = {
"tiếng Cree",
33390,
"alg",
"Cans, Latn",
"Tiếng Cree",
"Cree",
translit = {Cans = "cr-translit"},
}
m["cs"] = {
"tiếng Séc",
9056,
"zlw",
"Latn",
"Tiếng Séc",
"Séc",
ancestors = "cs-ear",
sort_key = {
from = {"á", "č", "ď", "é", "ě", "ch", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý", "ž"},
to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "h" .. p[1], "i" .. p[1], "n" .. p[1], "o" .. p[1], "r" .. p[1], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "y" .. p[1], "z" .. p[1]}
},
standardChars = "AaÁáBbCcČčDdĎďEeÉéĚěFfGgHhIiÍíJjKkLlMmNnŇňOoÓóPpRrŘřSsŠšTtŤťUuÚúŮůVvYyÝýZzŽž" .. c.punc,
}
m["cu"] = {
"tiếng Slav Giáo hội cổ",
35499,
"zls",
"Cyrs, Glag",
"Tiếng Slav Giáo hội cổ",
"Slav Giáo hội cổ",
translit = {Cyrs = "Cyrs-translit", Glag = "Glag-translit"},
entry_name = {Cyrs = s["Cyrs-entryname"]},
sort_key = {Cyrs = s["Cyrs-sortkey"]},
}
m["cv"] = {
"tiếng Chuvash",
33348,
"trk-ogr",
"Cyrl",
"Tiếng Chuvash",
"Chuvash",
ancestors = "cv-mid",
translit = "cv-translit",
override_translit = true,
sort_key = {
from = {"ӑ", "ё", "ӗ", "ҫ", "ӳ"},
to = {"а" .. p[1], "е" .. p[1], "е" .. p[2], "с" .. p[1], "у" .. p[1]}
},
}
m["cy"] = {
"tiếng Wales",
9309,
"cel-brw",
"Latn",
"Tiếng Wales",
"Wales",
ancestors = "wlm",
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. "'",
from = {"ch", "dd", "ff", "ng", "ll", "ph", "rh", "th"},
to = {"c" .. p[1], "d" .. p[1], "f" .. p[1], "g" .. p[1], "l" .. p[1], "p" .. p[1], "r" .. p[1], "t" .. p[1]}
},
standardChars = "ÂâAaBbCcDdEeÊêFfGgHhIiÎîLlMmNnOoÔôPpRrSsTtUuÛûWwŴŵYyŶŷ" .. c.punc,
}
m["da"] = {
"tiếng Đan Mạch",
9035,
"gmq-eas",
"Latn",
"Tiếng Đan Mạch",
"Đan Mạch",
ancestors = "gmq-oda",
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla,
remove_exceptions = {"å"},
from = {"æ", "ø", "å"},
to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]}
},
standardChars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc,
}
m["de"] = {
"tiếng Đức",
188,
"gmw-hgm",
"Latn, Latf",
"Tiếng Đức",
"Đức",
ancestors = "gmh",
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove,
from = {"æ", "œ", "ß"},
to = {"ae", "oe", "ss"}
},
standardChars = "AaÄäBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsẞßTtUuÜüVvWwXxYyZz" .. c.punc,
}
m["dv"] = {
"tiếng Dhivehi",
32656,
"inc-ins",
"Thaa, Diak",
"Tiếng Dhivehi",
"Dhivehi",
translit = {
Thaa = "dv-translit",
Diak = "Diak-translit",
},
override_translit = true,
}
m["dz"] = {
"tiếng Dzongkha",
33081,
"sit-tib",
"Tibt",
"Tiếng Dzongkha",
"Dzongkha",
ancestors = "xct",
translit = "Tibt-translit",
override_translit = true,
display_text = s["Tibt-displaytext"],
entry_name = s["Tibt-entryname"],
sort_key = "Tibt-sortkey",
}
m["ee"] = {
"tiếng Ewe",
30005,
"alv-gbe",
"Latn",
"Tiếng Ewe",
"Ewe",
sort_key = {
remove_diacritics = c.tilde,
from = {"ɖ", "dz", "ɛ", "ƒ", "gb", "ɣ", "kp", "ny", "ŋ", "ɔ", "ts", "ʋ"},
to = {"d" .. p[1], "d" .. p[2], "e" .. p[1], "f" .. p[1], "g" .. p[1], "g" .. p[2], "k" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "t" .. p[1], "v" .. p[1]}
},
}
m["el"] = {
"tiếng Hy Lạp",
9129,
"grk",
"Grek, Polyt, Brai",
"Tiếng Hy Lạp",
"Hy Lạp",
ancestors = "el-kth",
translit = {
Grek = "el-translit",
Polyt = "grc-translit",
},
override_translit = true,
entry_name = {
Grek = {remove_diacritics = c.caron .. c.diaerbelow .. c.brevebelow},
Polyt = s["Polyt-entryname"],
},
sort_key = {
Grek = s["Grek-sortkey"],
Polyt = s["Grek-sortkey"],
},
standardChars = {
Grek = "΅·ͺ΄ΑαΆάΒβΓγΔδΕεέΈΖζΗηΉήΘθΙιΊίΪϊΐΚκΛλΜμΝνΞξΟοΌόΠπΡρΣσςΤτΥυΎύΫϋΰΦφΧχΨψΩωΏώ",
Brai = c.braille,
c.punc
},
}
m["en"] = {
"tiếng Anh",
1860,
"gmw-ang",
"Latn, Brai, Shaw, Dsrt", -- entries in Shaw or Dsrt might require prior discussion
"Tiếng Anh",
"Anh",
wikimedia_codes = "en, simple",
ancestors = "en-ear",
sort_key = {
Latn = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.ringabove .. c.caron .. c.cedilla .. "'%-%s",
from = {"æ", "œ"},
to = {"ae", "oe"}
},
},
standardChars = {
Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz",
Brai = c.braille,
c.punc
},
}
m["eo"] = {
"tiếng Quốc tế ngữ",
143,
"art",
"Latn",
"Tiếng Quốc tế ngữ",
"Quốc tế ngữ",
sort_key = {
remove_diacritics = c.grave .. c.acute,
from = {"ĉ", "ĝ", "ĥ", "ĵ", "ŝ", "ŭ"},
to = {"c" .. p[1], "g" .. p[1], "h" .. p[1], "j" .. p[1], "s" .. p[1], "u" .. p[1]}
},
standardChars = "AaBbCcĈĉDdEeFfGgĜĝHhĤĥIiJjĴĵKkLlMmNnOoPpRrSsŜŝTtUuŬŭVvZz" .. c.punc,
}
m["es"] = {
"tiếng Tây Ban Nha",
1321,
"roa-cas",
"Latn, Brai",
"Tiếng Tây Ban Nha",
"Tây Ban Nha",
ancestors = "osp",
sort_key = {
Latn = {
remove_diacritics = c.acute .. c.diaer .. c.cedilla,
from = {"ñ"},
to = {"n" .. p[1]}
},
},
standardChars = {
Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxYyZz",
Brai = c.braille,
c.punc
},
}
m["et"] = {
"tiếng Estonia",
9072,
"urj-fin",
"Latn",
"Tiếng Estonia",
"Estonia",
sort_key = {
from = {
"š", "ž", "õ", "ä", "ö", "ü", -- 2 chars
"z" -- 1 char
},
to = {
"s" .. p[1], "s" .. p[3], "w" .. p[1], "w" .. p[2], "w" .. p[3], "w" .. p[4],
"s" .. p[2]
}
},
standardChars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvÕõÄäÖöÜü" .. c.punc,
}
m["eu"] = {
"tiếng Basque",
8752,
"euq",
"Latn",
"Tiếng Basque",
"Basque",
sort_key = {
from = {"ç", "ñ"},
to = {"c" .. p[1], "n" .. p[1]}
},
standardChars = "AaBbDdEeFfGgHhIiJjKkLlMmNnÑñOoPpRrSsTtUuXxZz" .. c.punc,
}
m["fa"] = {
"tiếng Ba Tư",
9168,
"ira-swi",
"fa-Arab, Hebr",
"Tiếng Ba Tư",
"Ba Tư",
ancestors = "fa-cls",
entry_name = {
from = {"هٔ", "ٱ"}, -- character "ۂ" code U+06C2 to "ه"; hamzatu l-waṣli to a regular alif
to = {"ه", "ا"},
remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.kashida .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef,
},
-- put Judeo-Persian (Hebrew-script Persian) under the category header
-- U+FB21 HEBREW LETTER WIDE ALEF so that it sorts after Arabic script titles
sort_key = {
Hebr = {
from = {"^%f[" .. u(0x5D0) .. "-" .. u(0x5EA) .. "]"},
to = {u(0xFB21)},
},
},
}
m["ff"] = {
"tiếng Fula",
33454,
"alv-fwo",
"Latn, Adlm",
"Tiếng Fula",
"Fula",
}
m["fi"] = {
"tiếng Phần Lan",
1412,
"urj-fin",
"Latn",
"Tiếng Phần Lan",
"Phần Lan",
display_text = {
from = {"'"},
to = {"’"}
},
entry_name = { -- used to indicate gemination of the next consonant
remove_diacritics = "ˣ",
from = {"’"},
to = {"'"},
},
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla .. "':",
remove_exceptions = {"å"},
from = {"ø", "æ", "œ", "ß", "å", "aͤ", "oͤ", "(.)['%-]"},
to = {"o", "ae", "oe", "ss", "z" .. p[1], "ä", "ö", "%1"}
},
standardChars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÄäÖö" .. c.punc,
}
m["fj"] = {
"tiếng Fiji",
33295,
"poz-pcc",
"Latn",
"Tiếng Fiji",
"Fiji",
}
m["fo"] = {
"tiếng Faroe",
25258,
"gmq-ins",
"Latn",
"Tiếng Faroe",
"Faroe",
sort_key = {
from = {"á", "ð", "í", "ó", "ú", "ý", "æ", "ø"},
to = {"a" .. p[1], "d" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2]}
},
standardChars = "AaÁáBbDdÐðEeFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvYyÝýÆæØø" .. c.punc,
}
m["fr"] = {
"tiếng Pháp",
150,
"roa-oil",
"Latn, Brai",
"Tiếng Pháp",
"Pháp",
display_text = {
from = {"'"},
to = {"’"}
},
entry_name = {
from = {"’"},
to = {"'"},
},
ancestors = "frm",
sort_key = {Latn = s["roa-oil-sortkey"]},
standardChars = {
Latn = "AaÀàÂâBbCcÇçDdEeÉéÈèÊêËëFfGgHhIiÎîÏïJjLlMmNnOoÔôŒœPpQqRrSsTtUuÙùÛûÜüVvXxYyZz",
Brai = c.braille,
c.punc
},
}
m["fy"] = {
"tiếng Tây Frisia",
27175,
"gmw-fri",
"Latn",
"Tiếng Tây Frisia",
"Tây Frisia",
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer,
from = {"y"},
to = {"i"}
},
standardChars = "AaâäàÆæBbCcDdEeéêëèFfGgHhIiïìYyỳJjKkLlMmNnOoôöòPpRrSsTtUuúûüùVvWwZz" .. c.punc,
}
m["ga"] = {
"tiếng Ireland",
9142,
"cel-gae",
"Latn, Latg",
"Tiếng Ireland",
"Ireland",
ancestors = "mga",
sort_key = {
remove_diacritics = c.acute,
from = {"ḃ", "ċ", "ḋ", "ḟ", "ġ", "ṁ", "ṗ", "ṡ", "ṫ"},
to = {"bh", "ch", "dh", "fh", "gh", "mh", "ph", "sh", "th"}
},
standardChars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíLlMmNnOoÓóPpRrSsTtUuÚúVv" .. c.punc,
}
m["gd"] = {
"tiếng Gael Scotland",
9314,
"cel-gae",
"Latn, Latg",
"Tiếng Gael Scotland",
"Gael Scotland",
ancestors = "mga",
sort_key = {remove_diacritics = c.grave .. c.acute},
standardChars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìLlMmNnOoÒòPpRrSsTtUuÙù" .. c.punc,
}
m["gl"] = {
"tiếng Galicia",
9307,
"roa-ibe",
"Latn",
"Tiếng Galicia",
"Galicia",
ancestors = "roa-opt",
sort_key = {
remove_diacritics = c.acute,
from = {"ñ"},
to = {"n" .. p[1]}
},
standardChars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíÏïLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxZz" .. c.punc,
}
m["gn"] = {
"tiếng Guaraní",
35876,
"tup-gua",
"Latn",
"Tiếng Guaraní",
"Guaraní",
}
m["gu"] = {
"tiếng Gujarat",
5137,
"inc-wes",
"Arab, Gujr",
"Tiếng Gujarat",
"Gujarat",
ancestors = "inc-mgu,pra-sau",
translit = {
Gujr = "gu-translit",
},
entry_name = {
remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.kasra .. c.shadda .. c.sukun .. "઼"
},
}
m["gv"] = {
"tiếng Man",
12175,
"cel-gae",
"Latn",
"Tiếng Man",
"Man",
ancestors = "mga",
sort_key = {remove_diacritics = c.cedilla .. "-"},
standardChars = "AaBbCcÇçDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwYy" .. c.punc,
}
m["ha"] = {
"tiếng Hausa",
56475,
"cdc-wst",
"Latn, Arab",
"Tiếng Hausa",
"Hausa",
entry_name = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron}},
sort_key = {
Latn = {
from = {"ɓ", "b'", "ɗ", "d'", "ƙ", "k'", "sh", "ƴ", "'y"},
to = {"b" .. p[1], "b" .. p[2], "d" .. p[1], "d" .. p[2], "k" .. p[1], "k" .. p[2], "s" .. p[1], "y" .. p[1], "y" .. p[2]}
},
},
}
m["he"] = {
"tiếng Do Thái",
9288,
"sem-can",
"Hebr, Phnx, Brai",
"Tiếng Do Thái",
"Do Thái",
ancestors = "he-med",
entry_name = {Hebr = {remove_diacritics = u(0x0591) .. "-" .. u(0x05BD) .. u(0x05BF) .. "-" .. u(0x05C5) .. u(0x05C7) .. c.CGJ}},
}
m["hi"] = {
"tiếng Hindi",
1568,
"inc-hnd",
"Deva, Kthi, Newa",
"Tiếng Hindi",
"Hindi",
ancestors = "inc-apa,pra-sau,inc-ohi",
translit = {Deva = "hi-translit"},
standardChars = {
Deva = "अआइईउऊएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहत्रज्ञक्षक़ख़ग़ज़झ़ड़ढ़फ़काखागाघाङाचाछाजाझाञाटाठाडाढाणाताथादाधानापाफाबाभामायारालावाशाषासाहात्राज्ञाक्षाक़ाख़ाग़ाज़ाझ़ाड़ाढ़ाफ़ाकिखिगिघिङिचिछिजिझिञिटिठिडिढिणितिथिदिधिनिपिफिबिभिमियिरिलिविशिषिसिहित्रिज्ञिक्षिक़िख़िग़िज़िझ़िड़िढ़िफ़िकीखीगीघीङीचीछीजीझीञीटीठीडीढीणीतीथीदीधीनीपीफीबीभीमीयीरीलीवीशीषीसीहीत्रीज्ञीक्षीक़ीख़ीग़ीज़ीझ़ीड़ीढ़ीफ़ीकुखुगुघुङुचुछुजुझुञुटुठुडुढुणुतुथुदुधुनुपुफुबुभुमुयुरुलुवुशुषुसुहुत्रुज्ञुक्षुक़ुख़ुग़ुज़ुझ़ुड़ुढ़ुफ़ुकूखूगूघूङूचूछूजूझूञूटूठूडूढूणूतूथूदूधूनूपूफूबूभूमूयूरूलूवूशूषूसूहूत्रूज्ञूक्षूक़ूख़ूग़ूज़ूझ़ूड़ूढ़ूफ़ूकेखेगेघेङेचेछेजेझेञेटेठेडेढेणेतेथेदेधेनेपेफेबेभेमेयेरेलेवेशेषेसेहेत्रेज्ञेक्षेक़ेख़ेग़ेज़ेझ़ेड़ेढ़ेफ़ेकैखैगैघैङैचैछैजैझैञैटैठैडैढैणैतैथैदैधैनैपैफैबैभैमैयैरैलैवैशैषैसैहैत्रैज्ञैक्षैक़ैख़ैग़ैज़ैझ़ैड़ैढ़ैफ़ैकोखोगोघोङोचोछोजोझोञोटोठोडोढोणोतोथोदोधोनोपोफोबोभोमोयोरोलोवोशोषोसोहोत्रोज्ञोक्षोक़ोख़ोग़ोज़ोझ़ोड़ोढ़ोफ़ोकौखौगौघौङौचौछौजौझौञौटौठौडौढौणौतौथौदौधौनौपौफौबौभौमौयौरौलौवौशौषौसौहौत्रौज्ञौक्षौक़ौख़ौग़ौज़ौझ़ौड़ौढ़ौफ़ौक्ख्ग्घ्ङ्च्छ्ज्झ्ञ्ट्ठ्ड्ढ्ण्त्थ्द्ध्न्प्फ्ब्भ्म्य्र्ल्व्श्ष्स्ह्त्र्ज्ञ्क्ष्क़्ख़्ग़्ज़्झ़्ड़्ढ़्फ़्।॥०१२३४५६७८९॰",
c.punc
},
}
m["ho"] = {
"tiếng Hiri Motu",
33617,
"crp",
"Latn",
ancestors = "meu",
}
m["ht"] = {
"tiếng Creole Haiti",
33491,
"crp",
"Latn",
"Tiếng Creole Haiti",
ancestors = "ht-sdm",
sort_key = {
from = {
"oun", -- 3 chars
"an", "ch", "è", "en", "ng", "ò", "on", "ou", "ui" -- 2 chars
},
to = {
"o" .. p[4],
"a" .. p[1], "c" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "u" .. p[1]
}
},
}
m["hu"] = {
"tiếng Hungary",
9067,
"urj-ugr",
"Latn, Hung",
"Tiếng Hungary",
"Hungary",
ancestors = "ohu",
sort_key = {
Latn = {
from = {
"dzs", -- 3 chars
"á", "cs", "dz", "é", "gy", "í", "ly", "ny", "ó", "ö", "ő", "sz", "ty", "ú", "ü", "ű", "zs", -- 2 chars
},
to = {
"d" .. p[2],
"a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "u" .. p[3], "z" .. p[1],
}
},
},
standardChars = {
Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóÖöŐőPpQqRrSsTtUuÚúÜüŰűVvWwXxYyZz",
c.punc
},
}
m["hy"] = {
"tiếng Armenia",
8785,
"hyx",
"Armn, Brai",
"Tiếng Armenia",
"Armenia",
ancestors = "axm",
translit = {Armn = "Armn-translit"},
override_translit = true,
entry_name = {
Armn = {
remove_diacritics = "՛՜՞՟",
from = {"եւ", "<sup>յ</sup>", "<sup>ի</sup>", "<sup>է</sup>", "յ̵"},
to = {"և", "յ", "ի", "է", "ֈ"}
},
},
sort_key = {
Armn = {
from = {
"ու", "եւ", -- 2 chars
"և" -- 1 char
},
to = {
"ւ", "եվ",
"եվ"
}
},
},
}
m["hz"] = {
"tiếng Herero",
33315,
"bnt-swb",
"Latn",
"Tiếng Herero",
"Herero",
}
m["ia"] = {
"tiếng Bổ trợ Quốc tế",
35934,
"art",
"Latn",
"Tiếng Bổ trợ Quốc tế",
"Bổ trợ Quốc tế",
}
m["id"] = {
"tiếng Indonesia",
9240,
"poz-mly",
"Latn",
"Tiếng Indonesia",
"Indonesia",
ancestors = "ms",
standardChars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" .. c.punc,
}
m["ie"] = {
"tiếng Interlingue",
35850,
"art",
"Latn",
type = "appendix-constructed",
entry_name = {remove_diacritics = c.grave .. c.acute .. c.circ},
}
m["ig"] = {
"tiếng Igbo",
33578,
"alv-igb",
"Latn",
entry_name = {remove_diacritics = c.grave .. c.acute .. c.macron},
sort_key = {
from = {"gb", "gh", "gw", "ị", "kp", "kw", "ṅ", "nw", "ny", "ọ", "sh", "ụ"},
to = {"g" .. p[1], "g" .. p[2], "g" .. p[3], "i" .. p[1], "k" .. p[1], "k" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "o" .. p[1], "s" .. p[1], "u" .. p[1]}
},
}
m["ii"] = {
"tiếng Lô Lô",
34235,
"tbq-nlo",
"Yiii",
"Tiếng Lô Lô",
"Lô Lô",
translit = "ii-translit",
}
m["ik"] = {
"tiếng Inupiaq",
27183,
"esx-inu",
"Latn",
"Tiếng Inupiaq",
"Inupiaq",
sort_key = {
from = {
"ch", "ġ", "dj", "ḷ", "ł̣", "ñ", "ng", "r̂", "sr", "zr", -- 2 chars
"ł", "ŋ", "ʼ" -- 1 char
},
to = {
"c" .. p[1], "g" .. p[1], "h" .. p[1], "l" .. p[1], "l" .. p[3], "n" .. p[1], "n" .. p[2], "r" .. p[1], "s" .. p[1], "z" .. p[1],
"l" .. p[2], "n" .. p[2], "z" .. p[2]
}
},
}
m["io"] = {
"tiếng Ido",
35224,
"art",
"Latn",
"Tiếng Ido",
"Ido",
}
m["is"] = {
"tiếng Iceland",
294,
"gmq-ins",
"Latn",
"Tiếng Iceland",
"Iceland",
sort_key = {
from = {"á", "ð", "é", "í", "ó", "ú", "ý", "þ", "æ", "ö"},
to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2], "z" .. p[3]}
},
standardChars = "AaÁáBbDdÐðEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvXxYyÝýÞþÆæÖö" .. c.punc,
}
m["it"] = {
"tiếng Ý",
652,
"roa-itd",
"Latn",
"Tiếng Ý",
"Ý",
ancestors = "roa-oit",
sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove},
standardChars = "AaÀàBbCcDdEeÈèÉéFfGgHhIiÌìLlMmNnOoÒòPpQqRrSsTtUuÙùVvZz" .. c.punc,
}
m["iu"] = {
"tiếng Inuktitut",
29921,
"esx-inu",
"Cans, Latn",
"Tiếng Inuktitut",
"Inuktitut",
translit = {Cans = "cr-translit"},
override_translit = true,
}
m["ja"] = {
"tiếng Nhật",
5287,
"jpx",
"Jpan, Latn, Brai",
"Tiếng Nhật",
"Nhật",
ancestors = "ja-ear",
translit = s["jpx-translit"],
link_tr = true,
display_text = s["jpx-displaytext"],
entry_name = s["jpx-entryname"],
sort_key = s["jpx-sortkey"],
}
m["jv"] = {
"tiếng Java",
33549,
"poz",
"Latn, Java",
"Tiếng Java",
"Java",
ancestors = "kaw",
translit = {Java = "jv-translit"},
link_tr = true,
entry_name = {remove_diacritics = c.circ}, -- Modern jv don't use ê
sort_key = {
Latn = {
from = {"å", "dh", "é", "è", "ng", "ny", "th"},
to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "n" .. p[2], "t" .. p[1]}
},
},
}
m["ka"] = {
"tiếng Gruzia",
8108,
"ccs-gzn",
"Geor, Geok, Hebr", -- Hebr is used to write Judeo-Georgian
"Tiếng Gruzia",
"Gruzia",
ancestors = "ka-mid",
translit = {
Geor = "Geor-translit",
Geok = "Geok-translit",
},
override_translit = true,
entry_name = {remove_diacritics = c.circ},
}
m["kg"] = {
"tiếng Kongo",
33702,
"bnt-kng",
"Latn",
}
m["ki"] = {
"tiếng Gikuyu",
33587,
"bnt-kka",
"Latn",
"Tiếng Gikuyu",
"Gikuyu",
}
m["kj"] = {
"tiếng Kwanyama",
1405077,
"bnt-ova",
"Latn",
"Tiếng Kwanyama",
"Kwanyama",
}
m["kk"] = {
"tiếng Kazakh",
9252,
"trk-kno",
"Cyrl, Latn, kk-Arab",
"Tiếng Kazakh",
"Kazakh",
translit = {
Cyrl = {
from = {
"Ё", "ё", "Й", "й", "Нг", "нг", "Ӯ", "ӯ", -- 2 chars; are "Ӯ" and "ӯ" actually used?
"А", "а", "Ә", "ә", "Б", "б", "В", "в", "Г", "г", "Ғ", "ғ", "Д", "д", "Е", "е", "Ж", "ж", "З", "з", "И", "и", "К", "к", "Қ", "қ", "Л", "л", "М", "м", "Н", "н", "Ң", "ң", "О", "о", "Ө", "ө", "П", "п", "Р", "р", "С", "с", "Т", "т", "У", "у", "Ұ", "ұ", "Ү", "ү", "Ф", "ф", "Х", "х", "Һ", "һ", "Ц", "ц", "Ч", "ч", "Ш", "ш", "Щ", "щ", "Ъ", "ъ", "Ы", "ы", "І", "і", "Ь", "ь", "Э", "э", "Ю", "ю", "Я", "я", -- 1 char
},
to = {
"E", "e", "İ", "i", "Ñ", "ñ", "U", "u",
"A", "a", "Ä", "ä", "B", "b", "V", "v", "G", "g", "Ğ", "ğ", "D", "d", "E", "e", "J", "j", "Z", "z", "İ", "i", "K", "k", "Q", "q", "L", "l", "M", "m", "N", "n", "Ñ", "ñ", "O", "o", "Ö", "ö", "P", "p", "R", "r", "S", "s", "T", "t", "U", "u", "Ū", "ū", "Ü", "ü", "F", "f", "X", "x", "H", "h", "S", "s", "Ç", "ç", "Ş", "ş", "Ş", "ş", "", "", "Y", "y", "I", "ı", "", "", "É", "é", "Ü", "ü", "Ä", "ä",
}
}
},
-- override_translit = true,
sort_key = {
Cyrl = {
from = {"ә", "ғ", "ё", "қ", "ң", "ө", "ұ", "ү", "һ", "і"},
to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "у" .. p[2], "х" .. p[1], "ы" .. p[1]}
},
},
standardChars = {
Cyrl = "АаӘәБбВвГгҒғДдЕеЁёЖжЗзИиЙйКкҚқЛлМмНнҢңОоӨөПпРрСсТтУуҰұҮүФфХхҺһЦцЧчШшЩщЪъЫыІіЬьЭэЮюЯя",
c.punc
},
}
m["kl"] = {
"tiếng Greenland",
25355,
"esx-inu",
"Latn",
"Tiếng Greenland",
"Greenland",
sort_key = {
from = {"æ", "ø", "å"},
to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]}
}
}
m["km"] = {
"tiếng Khmer",
9205,
"mkh-kmr",
"Khmr",
"Tiếng Khmer",
"Khmer",
ancestors = "xhm",
translit = "km-translit",
}
m["kn"] = {
"tiếng Kannada",
33673,
"dra-kan",
"Knda, Tutg",
"Tiếng Kannada",
"Kannada",
ancestors = "dra-mkn",
translit = "kn-translit",
}
m["ko"] = {
"tiếng Triều Tiên",
9176,
"qfa-kor",
"Kore, Brai",
"Tiếng Triều Tiên",
"Triều Tiên",
ancestors = "ko-ear",
translit = {Kore = "ko-translit"},
entry_name = {Kore = s["Kore-entryname"]},
}
m["kr"] = {
"tiếng Kanuri",
36094,
"ssa-sah",
"Latn, Arab",
"Tiếng Kanuri",
"Kanuri",
entry_name = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.breve}}, -- the sortkey and entry_name are only for standard Kanuri; when dialectal entries get added, someone will have to work out how the dialects should be represented orthographically
sort_key = {
Latn = {
from = {"ǝ", "ny", "ɍ", "sh"},
to = {"e" .. p[1], "n" .. p[1], "r" .. p[1], "s" .. p[1]}
},
},
}
m["ks"] = {
"tiếng Kashmir",
33552,
"inc-kas",
"ks-Arab, Deva, Shrd, Latn",
"Tiếng Kashmir",
"Kashmir",
translit = {
["ks-Arab"] = "ks-Arab-translit",
Deva = "ks-Deva-translit",
Shrd = "Shrd-translit",
},
}
-- "kv" IS TREATED AS "koi", "kpv", SEE WT:LT
m["kw"] = {
"tiếng Cornwall",
25289,
"cel-brs",
"Latn",
"Tiếng Cornwall",
"Cornwall",
ancestors = "cnx",
sort_key = {
from = {"ch"},
to = {"c" .. p[1]}
},
}
m["ky"] = {
"tiếng Kyrgyz",
9255,
"trk-kkp",
"Cyrl, Latn, Arab",
"Tiếng Kyrgyz",
"Kyrgyz",
translit = {Cyrl = "ky-translit"},
override_translit = true,
sort_key = {
Cyrl = {
from = {"ё", "ң", "ө", "ү"},
to = {"е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]}
},
},
}
m["la"] = {
"tiếng Latinh",
397,
"itc",
"Latn, Ital",
"Tiếng Latinh",
"Latinh",
ancestors = "itc-ola",
entry_name = {Latn = {remove_diacritics = c.macron .. c.breve .. c.diaer .. c.dinvbreve}},
sort_key = {
Latn = {
from = {"æ", "œ"},
to = {"ae", "oe"}
},
},
standardChars = {
Latn = "AaBbCcDdEeFfGgHhIiLlMmNnOoPpQqRrSsTtUuVvXxZz",
c.punc
},
}
m["lb"] = {
"tiếng Luxembourg",
9051,
"gmw-hgm",
"Latn",
"Tiếng Luxembourg",
"Luxembourg",
ancestors = "gmw-cfr",
sort_key = {
from = {"ä", "ë", "é"},
to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]}
},
}
m["lg"] = {
"tiếng Luganda",
33368,
"bnt-nyg",
"Latn",
"Tiếng Luganda",
"Luganda",
entry_name = {remove_diacritics = c.acute .. c.circ},
sort_key = {
from = {"ŋ"},
to = {"n" .. p[1]}
},
}
m["li"] = {
"tiếng Limburg",
102172,
"gmw-frk",
"Latn",
"Tiếng Limburg",
"Limburg",
ancestors = "dum",
}
m["ln"] = {
"tiếng Lingala",
36217,
"bnt-bmo",
"Latn",
"Tiếng Lingala",
"Lingala",
sort_key = {
remove_diacritics = c.acute .. c.circ .. c.caron,
from = {"ɛ", "gb", "mb", "mp", "nd", "ng", "nk", "ns", "nt", "ny", "nz", "ɔ"},
to = {"e" .. p[1], "g" .. p[1], "m" .. p[1], "m" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "n" .. p[4], "n" .. p[5], "n" .. p[6], "n" .. p[7], "o" .. p[1]}
},
}
m["lo"] = {
"tiếng Lào",
9211,
"tai-swe",
"Laoo",
"Tiếng Lào",
"Lào",
translit = "lo-translit",
sort_key = "Laoo-sortkey",
standardChars = "0-9ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯ-ໝ" .. c.punc,
}
m["lt"] = {
"tiếng Litva",
9083,
"bat-eas",
"Latn",
"Tiếng Litva",
"Litva",
ancestors = "olt",
display_text = "lt-common",
strip_diacritics = "lt-common",
sort_key = "lt-common",
standard_chars = "AaĄąBbCcČčDdEeĘęĖėFfGgHhIiĮįYyJjKkLlMmNnOoPpRrSsŠšTtUuŲųŪūVvZzŽž" .. c.punc,
}
m["lu"] = {
"tiếng Luba-Katanga",
36157,
"bnt-lub",
"Latn",
}
m["lv"] = {
"tiếng Latvia",
9078,
"bat-eas",
"Latn",
"Tiếng Latvia",
"Latvia",
strip_diacritics = {
-- This attempts to convert vowels with tone marks to vowels either with or without macrons. Specifically, there should be no macrons if the vowel is part of a diphthong (including resonant diphthongs such pìrksts -> pirksts not #pīrksts). What we do is first convert the vowel + tone mark to a vowel + tilde in a decomposed fashion, then remove the tilde in diphthongs, then convert the remaining vowel + tilde sequences to macroned vowels, then delete any other tilde. We leave already-macroned vowels alone: Both e.g. ar and ār occur before consonants. FIXME: This still might not be sufficient.
from = {"([Ee])" .. c.cedilla, "[" .. c.grave .. c.circ .. c.tilde .."]", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .. "?([^aAeEiIoOuU])", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .."?$", "([iI])" .. c.tilde .. "?([eE])" .. c.tilde .. "?", "([aAeEiIuU])" .. c.tilde, c.tilde},
to = {"%1", c.tilde, "%1%2%3", "%1%2", "%1%2", "%1" .. c.macron}
},
sort_key = {
from = {"ā", "č", "ē", "ģ", "ī", "ķ", "ļ", "ņ", "š", "ū", "ž"},
to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1]}
},
standard_chars = "AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽž" .. c.punc,
}
m["mg"] = {
"tiếng Malagasy",
7930,
"poz-bre",
"Latn, Arab",
"Tiếng Malagasy",
"Malagasy",
}
m["mh"] = {
"tiếng Marshall",
36280,
"poz-mic",
"Latn",
"Tiếng Marshall",
"Marshall",
sort_key = {
from = {"ā", "ļ", "m̧", "ņ", "n̄", "o̧", "ō", "ū"},
to = {"a" .. p[1], "l" .. p[1], "m" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "u" .. p[1]}
},
}
m["mi"] = {
"tiếng Maori",
36451,
"poz-pep",
"Latn",
"Tiếng Maori",
"Maori",
sort_key = {
remove_diacritics = c.macron,
from = {"ng", "wh"},
to = {"z" .. p[1], "z" .. p[2]}
},
}
m["mk"] = {
"tiếng Macedonia",
9296,
"zls",
"Cyrl",
ancestors = "cu",
translit = "mk-translit",
entry_name = {
remove_diacritics = c.acute,
remove_exceptions = {"Ѓ", "ѓ", "Ќ", "ќ"}
},
sort_key = {
remove_diacritics = c.grave,
from = {"ѓ", "ѕ", "ј", "љ", "њ", "ќ", "џ"},
to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "т" .. p[1], "ч" .. p[1]}
},
standardChars = "АаБбВвГгДдЃѓЕеЖжЗзЅѕИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЌќУуФфХхЦцЧчЏџШш" .. c.punc,
}
m["ml"] = {
"tiếng Malayalam",
36236,
"dra",
"Mlym",
"Tiếng Malayalam",
"Malayalam",
translit = "ml-translit",
override_translit = true,
}
m["mn"] = {
"tiếng Mông Cổ",
9246,
"xgn-cen",
"Cyrl, Mong, Latn, Brai",
"Tiếng Mông Cổ",
"Mông Cổ",
ancestors = "cmg",
translit = {
Cyrl = "mn-translit",
Mong = "Mong-translit",
},
override_translit = true,
display_text = {Mong = s["Mong-displaytext"]},
entry_name = {
Cyrl = {remove_diacritics = c.grave .. c.acute},
Mong = s["Mong-entryname"],
},
sort_key = {
Cyrl = {
remove_diacritics = c.grave,
from = {"ё", "ө", "ү"},
to = {"е" .. p[1], "о" .. p[1], "у" .. p[1]}
},
},
standardChars = {
Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйЛлМмНнОоӨөРрСсТтУуҮүХхЦцЧчШшЫыЬьЭэЮюЯя—",
Brai = c.braille,
c.punc
},
}
-- "mo" IS TREATED AS "ro", SEE WT:LT
m["mr"] = {
"tiếng Marathi",
1571,
"inc-sou",
"Deva, Modi",
"Tiếng Marathi",
"Marathi",
ancestors = "omr",
translit = {
Deva = "mr-translit",
Modi = "mr-Modi-translit",
},
entry_name = {
Deva = {
from = {"च़", "ज़", "झ़"},
to = {"च", "ज", "झ"}
},
},
}
m["ms"] = {
"tiếng Mã Lai",
9237,
"poz-mly",
"Latn, ms-Arab",
"Tiếng Mã Lai",
"Mã Lai",
ancestors = "ms-cla",
standardChars = {
Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz",
c.punc
},
}
m["mt"] = {
"tiếng Malta",
9166,
"sem-arb",
"Latn",
"Tiếng Malta",
"Malta",
display_text = {
from = {"'"},
to = {"’"}
},
entry_name = {
from = {"’"},
to = {"'"},
},
ancestors = "sqr",
sort_key = {
from = {
"ċ", "ġ", "ż", -- Convert into PUA so that decomposed form does not get caught by the next step.
"([cgz])", -- Ensure "c" comes after "ċ", "g" comes after "ġ" and "z" comes after "ż".
"g" .. p[1] .. "ħ", -- "għ" after initial conversion of "g".
p[3], p[4], "ħ", "ie", p[5] -- Convert "ċ", "ġ", "ħ", "ie", "ż" into final output.
},
to = {
p[3], p[4], p[5],
"%1" .. p[1],
"g" .. p[2],
"c", "g", "h" .. p[1], "i" .. p[1], "z"
}
},
}
m["my"] = {
"tiếng Miến Điện",
9228,
"tbq-brm",
"Mymr",
"Tiếng Miến Điện",
"Miến Điện",
ancestors = "obr",
translit = "my-translit",
override_translit = true,
sort_key = {
from = {"ျ", "ြ", "ွ", "ှ", "ဿ"},
to = {"္ယ", "္ရ", "္ဝ", "္ဟ", "သ္သ"}
},
}
m["na"] = {
"tiếng Nauru",
13307,
"poz-mic",
"Latn",
"Tiếng Nauru",
"Nauru",
}
m["nb"] = {
"tiếng Na Uy (Bokmål)",
25167,
"gmq",
"Latn",
"Tiếng Na Uy (Bokmål)",
"Na Uy (Bokmål)",
wikimedia_codes = "no",
ancestors = "gmq-mno, da", -- da as an (but not the) ancestor of nb was agreed on - do not change without discussion
sort_key = s["no-sortkey"],
standardChars = s["no-standardchars"],
}
m["nd"] = {
"tiếng Bắc Ndebele",
35613,
"bnt-ngu",
"Latn",
"Tiếng Bắc Ndebele",
"Bắc Ndebele",
entry_name = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron},
}
m["ne"] = {
"tiếng Nepal",
33823,
"inc-pah",
"Deva, Newa",
"Tiếng Nepal",
"Nepal",
translit = {Deva = "ne-translit"},
}
m["ng"] = {
"tiếng Ndonga",
33900,
"bnt-ova",
"Latn",
"Tiếng Ndonga",
"Ndonga",
}
m["nl"] = {
"tiếng Hà Lan",
7411,
"gmw-frk",
"Latn, Brai",
"Tiếng Hà Lan",
"Hà Lan",
ancestors = "dum",
sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'"},
standardChars = {
Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz",
Brai = c.braille,
c.punc
},
}
m["nn"] = {
"tiếng Na Uy (Nynorsk)",
25164,
"gmq-wes",
"Latn",
"Tiếng Na Uy (Nynorsk)",
"Na Uy (Nynorsk)",
ancestors = "gmq-mno",
entry_name = {
remove_diacritics = c.grave .. c.acute,
},
sort_key = s["no-sortkey"],
standardChars = s["no-standardchars"],
}
m["no"] = {
"tiếng Na Uy",
9043,
"gmq-wes",
"Latn",
"Tiếng Na Uy",
"Na Uy",
ancestors = "gmq-mno",
sort_key = s["no-sortkey"],
standardChars = s["no-standardchars"],
}
m["nr"] = {
"tiếng Nam Ndebele",
36785,
"bnt-ngu",
"Latn",
"Tiếng Nam Ndebele",
"Nam Ndebele",
entry_name = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron},
}
m["nv"] = {
"tiếng Navajo",
13310,
"apa",
"Latn",
"Tiếng Navajo",
"Navajo",
sort_key = {
remove_diacritics = c.acute .. c.ogonek,
from = {
"chʼ", "tłʼ", "tsʼ", -- 3 chars
"ch", "dl", "dz", "gh", "hw", "kʼ", "kw", "sh", "tł", "ts", "zh", -- 2 chars
"ł", "ʼ" -- 1 char
},
to = {
"c" .. p[2], "t" .. p[2], "t" .. p[4],
"c" .. p[1], "d" .. p[1], "d" .. p[2], "g" .. p[1], "h" .. p[1], "k" .. p[1], "k" .. p[2], "s" .. p[1], "t" .. p[1], "t" .. p[3], "z" .. p[1],
"l" .. p[1], "z" .. p[2]
}
},
}
m["ny"] = {
"tiếng Chichewa",
33273,
"bnt-nys",
"Latn",
entry_name = {remove_diacritics = c.acute .. c.circ},
sort_key = {
from = {"ng'"},
to = {"ng"}
},
}
m["oc"] = {
"tiếng Occitan",
14185,
"roa-ocr",
"Latn, Hebr",
"Tiếng Occitan",
"Occitan",
ancestors = "pro",
sort_key = {
Latn = {
remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla,
from = {"([lns])·h"},
to = {"%1h"}
},
},
}
m["oj"] = {
"tiếng Ojibwe",
33875,
"alg",
"Cans, Latn",
"Tiếng Ojibwe",
"Ojibwe",
sort_key = {
Latn = {
from = {"aa", "ʼ", "ii", "oo", "sh", "zh"},
to = {"a" .. p[1], "h" .. p[1], "i" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1]}
},
},
}
m["om"] = {
"tiếng Oromo",
33864,
"cus-eas",
"Latn, Ethi",
"Tiếng Oromo",
"Oromo",
}
m["or"] = {
"tiếng Oriya",
33810,
"inc-eas",
"Orya",
"Tiếng Oriya",
"Oriya",
ancestors = "inc-mor",
translit = "or-translit",
}
m["os"] = {
"tiếng Ossetia",
33968,
"xsc",
"Cyrl, Geor, Latn",
"Tiếng Ossetia",
"Ossetia",
ancestors = "oos",
translit = {
Cyrl = "os-translit",
Geor = "Geor-translit",
},
override_translit = true,
display_text = {
Cyrl = {
from = {"æ"},
to = {"ӕ"}
},
Latn = {
from = {"ӕ"},
to = {"æ"}
},
},
entry_name = {
Cyrl = {
remove_diacritics = c.grave .. c.acute,
from = {"æ"},
to = {"ӕ"}
},
Latn = {
from = {"ӕ"},
to = {"æ"}
},
},
sort_key = {
Cyrl = {
from = {"ӕ", "гъ", "дж", "дз", "ё", "къ", "пъ", "тъ", "хъ", "цъ", "чъ"},
to = {"а" .. p[1], "г" .. p[1], "д" .. p[1], "д" .. p[2], "е" .. p[1], "к" .. p[1], "п" .. p[1], "т" .. p[1], "х" .. p[1], "ц" .. p[1], "ч" .. p[1]}
},
},
}
m["pa"] = {
"tiếng Punjab",
58635,
"inc-pan",
"Guru, pa-Arab",
"Tiếng Punjab",
"Punjab",
ancestors = "pra",
translit = {
Guru = "Guru-translit",
["pa-Arab"] = "pa-Arab-translit",
},
entry_name = {
["pa-Arab"] = {
remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna,
from = {"ݨ", "ࣇ"},
to = {"ن", "ل"}
},
},
}
m["pi"] = {
"tiếng Pali",
36727,
"inc",
"Latn, Brah, Deva, Beng, Sinh, Mymr, Thai, Lana, Laoo, Khmr, Cakm",
"Tiếng Pali",
"Pali",
ancestors = "sa",
translit = {
Brah = "Brah-translit",
Deva = "sa-translit",
Beng = "pi-translit",
Sinh = "si-translit",
Mymr = "pi-translit",
Thai = "pi-translit",
Lana = "pi-translit",
Laoo = "pi-translit",
Khmr = "pi-translit",
Cakm = "Cakm-translit",
},
entry_name = {
Thai = {
from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here.
to = {"ิํ", "ฐ", "ญ"}
},
remove_diacritics = c.VS01
},
sort_key = { -- FIXME: This needs to be converted into the current standardized format.
from = {"ā", "ī", "ū", "ḍ", "ḷ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṭ", "([เโ])([ก-ฮ])", "([ເໂ])([ກ-ຮ])", "ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ", u(0xFE00), u(0x200D)},
to = {"a~", "i~", "u~", "d~", "l~", "m~", "n~", "n~~", "n~~~", "t~", "%2%1", "%2%1", "ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"}
},
}
m["pl"] = {
"tiếng Ba Lan",
809,
"zlw-lch",
"Latn",
"Tiếng Ba Lan",
"Ba Lan",
ancestors = "zlw-mpl",
sort_key = {
from = {"ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż"},
to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1], "z" .. p[2]}
},
standardChars = "AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnŃńOoÓóPpRrSsŚśTtUuWwYyZzŹźŻż" .. c.punc,
}
m["ps"] = {
"tiếng Pashtun",
58680,
"ira-pat",
"ps-Arab",
"Tiếng Pashtun",
"Pashtun",
entry_name = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef},
}
m["pt"] = {
"tiếng Bồ Đào Nha",
5146,
"roa-ibe",
"Latn, Brai",
"Tiếng Bồ Đào Nha",
"Bồ Đào Nha",
ancestors = "roa-opt",
sort_key = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.cedilla}},
standardChars = {
Latn = "AaÁáÂâÃãBbCcÇçDdEeÉéÊêFfGgHhIiÍíJjLlMmNnOoÓóÔôÕõPpQqRrSsTtUuÚúVvXxZz",
Brai = c.braille,
c.punc
},
}
m["qu"] = {
"tiếng Quechua",
5218,
"qwe",
"Latn",
"Tiếng Quechua",
"Quechua",
}
m["rm"] = {
"tiếng Romansh",
13199,
"roa-rhe",
"Latn",
"Tiếng Romansh",
"Romansh",
sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.small_e},
}
m["ro"] = {
"tiếng Rumani",
7913,
"roa-eas",
"Latn, Cyrl",
"Tiếng Rumani",
"Rumani",
translit = {Cyrl = "ro-translit"},
sort_key = {
Latn = {
remove_diacritics = c.grave .. c.acute,
from = {"ă", "â", "î", "ș", "ț"},
to = {"a" .. p[1], "a" .. p[2], "i" .. p[1], "s" .. p[1], "t" .. p[1]}
},
Cyrl = {
from = {"ӂ"},
to = {"ж" .. p[1]}
},
},
standardChars = {
Latn = "AaĂăÂâBbCcDdEeFfGgHhIiÎîJjLlMmNnOoPpRrSsȘșTtȚțUuVvXxZz",
Cyrl = "АаБбВвГгДдЕеЖжӁӂЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЫыЬьЭэЮюЯя",
c.punc
},
}
m["ru"] = {
"tiếng Nga",
7737,
"zle",
"Cyrl, Brai",
"Tiếng Nga",
"Nga",
ancestors = "zle-mru",
translit = {
Cyrl = "ru-translit"
},
display_text = {
Cyrl = {
from = {"'"},
to = {"’"}
},
},
strip_diacritics = {
Cyrl = {
remove_diacritics = c.grave .. c.acute .. c.diaer,
remove_exceptions = {"Ё", "ё", "Ѣ̈", "ѣ̈", "Я̈", "я̈"},
from = {"’"},
to = {"'"},
},
},
sort_key = {
Cyrl = {
remove_diacritics = c.grave .. c.acute .. c.diaer,
from = {
"і", "ѣ", "ѳ", "ѵ"
},
to = {
"и" .. p[1], "ь" .. p[1], "я" .. p[2], "я" .. p[3]
}
},
},
standard_chars = {
Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя—",
Brai = c.braille,
(c.punc:gsub("'", "")) -- Exclude apostrophe.
},
}
m["rw"] = {
"Rwanda-Rundi",
3217514,
"bnt-glb",
"Latn",
entry_name = {remove_diacritics = c.acute .. c.circ .. c.macron .. c.caron},
}
m["sa"] = {
"tiếng Phạn",
11059,
"inc",
"as-Beng, Bali, Beng, Bhks, Brah, Mymr, xwo-Mong, Deva, Gujr, Guru, Gran, Hani, Java, Kthi, Knda, Kawi, Khar, Khmr, Laoo, Mlym, mnc-Mong, Marc, Modi, Mong, Nand, Newa, Orya, Phag, Ranj, Saur, Shrd, Sidd, Sinh, Soyo, Lana, Takr, Taml, Tang, Telu, Thai, Tibt, Tutg, Tirh, Zanb", --and also Khom; script codes sorted by canonical name rather than code for [[MOD:sa-convert]]
"Tiếng Phạn",
"Phạn",
translit = {
Beng = "sa-Beng-translit",
["as-Beng"] = "sa-Beng-translit",
-- Brah translit in [[Module:scripts/data]]
Deva = "sa-translit",
Gujr = "sa-Gujr-translit",
Guru = "sa-Guru-translit",
Java = "sa-Java-translit",
Kthi = "sa-Kthi-translit",
Khmr = "pi-translit",
Knda = "sa-Knda-translit",
Lana = "pi-translit",
Laoo = "pi-translit",
Mlym = "sa-Mlym-translit",
Modi = "sa-Modi-translit",
-- Mong, mnc-Mong, xwo-Mong translit in [[Module:scripts/data]]
-- NOTE: Formerly used xal-translit for transliterating xwo-Mong but that only handles Cyrillic; it has
-- code to transliterate xwo-Mong but it's broken so I've replaced it with the default xwo-translit.
Mymr = "pi-translit",
Orya = "sa-Orya-translit",
-- Shrd translit in [[Module:scripts/data]]
-- Sidd translit in [[Module:scripts/data]]
Sinh = "si-translit",
Taml = "sa-Taml-translit",
Telu = "sa-Telu-translit",
Thai = "pi-translit",
-- Tibt translit in [[Module:scripts/data]]
},
-- Mong display_text and strip_diacritics in [[Module:scripts/data]]
-- Tibt display_text, strip_diacritics, sort_key in [[Module:scripts/data]]
strip_diacritics = {
Deva = s["sa-Deva-stripdiacritics"],
Mymr = {
remove_diacritics = c.VS01,
},
Thai = {
from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here.
to = {"ิํ", "ฐ", "ญ"}
},
},
sort_key = {
Deva = s["sa-Deva-stripdiacritics"], -- until we have a proper Sanskrit sorting algorithm.
Lana = { -- Tai Tham
from = {"ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ"},
to = {"ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"},
},
Laoo = "Laoo-sortkey",
Latn = {
from = {"ā", "ī", "ū", "ḍ", "ḷ", "ḹ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṛ", "ṝ", "ś", "ṣ", "ṭ"},
to = {"a~", "i~", "u~", "d~", "l~", "l~~", "m~", "n~", "n~~", "n~~~", "r~", "r~~", "s~", "s~~", "t~"},
},
Mymr = {
remove_diacritics = c.VS01,
},
Thai = "Thai-sortkey",
-- FIXME: The previous sort key which mixed all scripts removed ZWJ; I don't know which script(s) this was
-- intended for and there are no other languages which remove it in the sort key AFAIK. If it needs to be
-- removed, specify the script(s) it needs to be removed under or add handling for the "all" script that applies
-- regardless of script.
--all = {
-- remove_diacritics = c.ZWJ,
--},
},
}
m["sc"] = {
"tiếng Sardegna",
33976,
"roa",
"Latn",
"Tiếng Sardegna",
"Sardegna",
}
m["sd"] = {
"tiếng Sindh",
33997,
"inc-snd",
"sd-Arab, Deva, Sind, Khoj",
"Tiếng Sindh",
"Sindh",
ancestors = "pra",
translit = {
Sind = "Sind-translit",
["sd-Arab"] = "sd-Arab-translit"
},
strip_diacritics = {
["sd-Arab"] = {
remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef,
from = {"ٱ"},
to = {"ا"}
},
},
}
m["se"] = {
"tiếng Bắc Sami",
33947,
"smi",
"Latn",
"Tiếng Bắc Sami",
"Bắc Sami",
display_text = {
from = {"'"},
to = {"ˈ"}
},
strip_diacritics = {remove_diacritics = c.macron .. c.dotbelow .. "'ˈ"},
sort_key = {
from = {"á", "č", "đ", "ŋ", "š", "ŧ", "ž"},
to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "n" .. p[1], "s" .. p[1], "t" .. p[1], "z" .. p[1]}
},
standard_chars = "AaÁáBbCcČčDdĐđEeFfGgHhIiJjKkLlMmNnŊŋOoPpRrSsŠšTtŦŧUuVvZzŽž" .. c.punc,
}
m["sg"] = {
"tiếng Sango",
33954,
"crp",
"Latn",
ancestors = "ngb",
"Tiếng Sango",
"Sango",
}
m["sh"] = {
"tiếng Serbia-Croatia",
9301,
"zls",
"Latn, Cyrl, Glag, Arab",
ietf_subtag = "hbs", -- ISO 639-3 code, since "sh" is deprecated from ISO 639-1
wikimedia_codes = "sh, bs, hr, sr",
strip_diacritics = {
Latn = {
remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve,
remove_exceptions = {"Ć", "ć", "Ś", "ś", "Ź", "ź"}
},
Cyrl = {
remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve,
remove_exceptions = {"З́", "з́", "С́", "с́"}
},
},
sort_key = {
Latn = {
remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve,
remove_exceptions = {"ć", "ś", "ź"},
from = {"č", "ć", "dž", "đ", "lj", "nj", "š", "ś", "ž", "ź"},
to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "z" .. p[1], "z" .. p[2]}
},
Cyrl = {
remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve,
remove_exceptions = {"з́", "с́"},
from = {"ђ", "з́", "ј", "љ", "њ", "с́", "ћ", "џ"},
to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "с" .. p[1], "т" .. p[1], "ч" .. p[1]}
},
},
standard_chars = {
Latn = "AaBbCcČčĆćDdĐđEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž",
Cyrl = "АаБбВвГгДдЂђЕеЖжЗзИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЋћУуФфХхЦцЧчЏџШш",
c.punc
},
}
m["si"] = {
"tiếng Sinhala",
13267,
"inc-ins",
"Sinh",
"Tiếng Sinhala",
"Sinhala",
translit = "si-translit",
override_translit = true,
}
m["sk"] = {
"tiếng Slovak",
9058,
"zlw",
"Latn",
"Tiếng Slovak",
"Slovak",
ancestors = "zlw-osk,sla-pro",
sort_key = {remove_diacritics = c.acute .. c.circ .. c.diaer},
standardChars = "AaÁáÄäBbCcČčDdĎďEeFfGgHhIiÍíJjKkLlĹ弾MmNnŇňOoÔôPpRrŔŕSsŠšTtŤťUuÚúVvYyÝýZzŽž" .. c.punc,
}
m["sl"] = {
"tiếng Slovene",
9063,
"zls",
"Latn",
"Tiếng Slovene",
"Slovene",
strip_diacritics = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.dgrave .. c.invbreve .. c.dotbelow,
remove_exceptions = {"Ć", "ć", "Ǵ", "ǵ", "Ś", "ś", "Ź", "ź"},
from = {"Ə", "ə", "Ł", "ł"},
to = {"E", "e", "L", "l"},
},
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dotabove .. c.ringabove .. c.dgrave .. c.invbreve .. c.dotbelow .. c.ringbelow .. c.ogonek,
remove_exceptions = {"ć", "ǵ", "ś", "ź"},
from = {"ä", "č", "ć", "đ", "ə", "ë", "ǧ", "ǵ", "ï", "ł", "ö", "š", "ś", "ü", "ž", "ź"},
to = {"a" .. p[1], "c" .. p[1], "c" .. p[2], "d" .. p[1], "e", "e" .. p[1], "g" .. p[1], "g" .. p[2], "i" .. p[1], "l", "o" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]},
},
standard_chars = "AaBbCcČčDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž" .. c.punc,
}
m["sm"] = {
"tiếng Samoa",
34011,
"poz-pnp",
"Latn",
"Tiếng Samoa",
"Samoa",
}
m["sn"] = {
"tiếng Shona",
34004,
"bnt-sho",
"Latn",
"Tiếng Shona",
"Shona",
strip_diacritics = {remove_diacritics = c.acute},
}
m["so"] = {
"tiếng Somali",
13275,
"cus-som",
"Latn, Arab, Osma",
"Tiếng Somali",
"Somali",
strip_diacritics = {
Latn = {remove_diacritics = c.grave .. c.acute .. c.circ}
},
}
m["sq"] = {
"tiếng Albani",
8748,
"sqj",
"Latn, Grek, ota-Arab, Elba, Todr, Vith",
"Tiếng Albani",
"Albani",
translit = {Elba = "Elba-translit"},
entry_name = {Latn = {
remove_diacritics = c.acute,
from = {'^i (%w)', '^të (%w)'}, to = {'%1', '%1'},
}},
sort_key = {Latn = {
remove_diacritics = c.acute .. c.circ .. c.tilde .. c.breve .. c.caron,
from = {'ç', 'dh', 'ë', 'gj', 'll', 'nj', 'rr', 'sh', 'th', 'xh', 'zh'},
to = {'c'..p[1], 'd'..p[1], 'e'..p[1], 'g'..p[1], 'l'..p[1], 'n'..p[1], 'r'..p[1], 's'..p[1], 't'..p[1], 'x'..p[1], 'z'..p[1]},
}},
standardChars = "AaBbCcÇçDdEeËëFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxYyZz" .. c.punc,
}
m["ss"] = {
"tiếng Swazi",
34014,
"bnt-ngu",
"Latn",
"Tiếng Swazi",
"Swazi",
strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron},
}
m["st"] = {
"tiếng Sotho",
34340,
"bnt-sts",
"Latn",
"Tiếng Sotho",
"Sotho",
strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron},
}
m["su"] = {
"tiếng Sunda",
34002,
"poz-msa",
"Latn, Sund",
"Tiếng Sunda",
"Sunda",
ancestors = "osn",
translit = {Sund = "su-translit"},
}
m["sv"] = {
"tiếng Thụy Điển",
9027,
"gmq-eas",
"Latn",
"Tiếng Thụy Điển",
"Thụy Điển",
ancestors = "gmq-osw-lat",
sort_key = {
remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla .. "':",
remove_exceptions = {"å"},
from = {"ø", "æ", "œ", "ß", "å", "aͤ", "oͤ"},
to = {"o", "ae", "oe", "ss", "z" .. p[1], "ä", "ö"}
},
standardChars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvXxYyÅåÄäÖö" .. c.punc,
}
m["sw"] = {
"tiếng Swahili",
7838,
"bnt-swh",
"Latn, Arab",
"Tiếng Swahili",
"Swahili",
sort_key = {
Latn = {
from = {"ng'"},
to = {"ng" .. p[1]}
},
},
}
m["ta"] = {
"tiếng Tamil",
5885,
"dra-tam",
"Taml",
"Tiếng Tamil",
"Tamil",
ancestors = "ta-mid",
translit = "ta-translit",
override_translit = true,
}
m["te"] = {
"tiếng Telugu",
8097,
"dra-tel",
"Telu",
"Tiếng Telugu",
"Telugu",
translit = "te-translit",
override_translit = true,
}
m["tg"] = {
"tiếng Tajik",
9260,
"ira-swi",
"Cyrl, fa-Arab, Latn",
"Tiếng Tajik",
"Tajik",
ancestors = "fa-cls",
translit = {
Cyrl = "tg-translit"
},
override_translit = true,
strip_diacritics = {
Cyrl = s["tg-stripdiacritics"],
Latn = s["tg-stripdiacritics"],
},
sort_key = {
Cyrl = {
from = {"ғ", "ё", "ӣ", "қ", "ӯ", "ҳ", "ҷ"},
to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "к" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]}
},
},
}
m["th"] = {
"tiếng Thái",
9217,
"tai-swe",
"Thai, Khomt, Brai",
"Tiếng Thái",
"Thái",
translit = {
Thai = "th-translit"
},
sort_key = {
Thai = "Thai-sortkey"
},
}
m["ti"] = {
"tiếng Tigrinya",
34124,
"sem-eth",
"Ethi",
"Tiếng Tigrinya",
"Tigrinya",
translit = "Ethi-translit",
}
m["tk"] = {
"tiếng Turkmen",
9267,
"trk-ogz",
"Latn, Cyrl, Arab",
"Tiếng Turkmen",
"Turkmen",
strip_diacritics = {
Latn = s["tk-stripdiacritics"],
Cyrl = s["tk-stripdiacritics"],
},
sort_key = {
Latn = {
from = {"ç", "ä", "ž", "ň", "ö", "ş", "ü", "ý"},
to = {"c" .. p[1], "e" .. p[1], "j" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "y" .. p[1]}
},
Cyrl = {
from = {"ё", "җ", "ң", "ө", "ү", "ә"},
to = {"е" .. p[1], "ж" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "э" .. p[1]}
},
},
}
m["tl"] = {
"tiếng Tagalog",
34057,
"phi",
"Latn, Tglg",
"Tiếng Tagalog",
"Tagalog",
translit = {
Tglg = "tl-translit"
},
override_translit = true,
strip_diacritics = {
Latn = {remove_diacritics = c.grave .. c.acute .. c.circ}
},
standard_chars = {
Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy",
c.punc
},
sort_key = {
Latn = "tl-sortkey",
},
}
m["tn"] = {
"tiếng Tswana",
34137,
"bnt-sts",
"Latn",
"Tiếng Tswana",
"Tswana",
}
m["to"] = {
"tiếng Tonga",
34094,
"poz-pol",
"Latn",
"Tiếng Tonga",
"Tonga",
strip_diacritics = {remove_diacritics = c.acute},
sort_key = {remove_diacritics = c.macron},
}
m["tr"] = {
"tiếng Thổ Nhĩ Kỳ",
256,
"trk-ogz",
"Latn",
"Tiếng Thổ Nhĩ Kỳ",
"Thổ Nhĩ Kỳ",
ancestors = "ota",
dotted_dotless_i = true,
sort_key = {
from = {
-- Ignore circumflex, but account for capital Î wrongly becoming ı + circ due to dotted dotless I logic.
"ı" .. c.circ, c.circ,
"i", -- Ensure "i" comes after "ı".
"ç", "ğ", "ı", "ö", "ş", "ü"
},
to = {
"i", "",
"i" .. p[1],
"c" .. p[1], "g" .. p[1], "i", "o" .. p[1], "s" .. p[1], "u" .. p[1]
}
},
standard_chars = "AaÂâBbCcÇçDdEeFfGgĞğHhIıİiÎîJjKkLlMmNnOoÖöPpRrSsŞşTtUuÛûÜüVvYyZz" .. c.punc,
}
m["ts"] = {
"tiếng Tsonga",
34327,
"bnt-tsr",
"Latn",
"Tiếng Tsonga",
"Tsonga",
}
m["tt"] = {
"tiếng Tatar",
25285,
"trk-kbu",
"Cyrl, Latn, tt-Arab",
"Tiếng Tatar",
"Tatar",
translit = {
Cyrl = "tt-translit",
["tt-Arab"] = "tt-translit"
},
--override_translit = true, -- enable override until Module code can detect Russian loans such as [[аэропорт]]
dotted_dotless_i = true,
sort_key = {
Cyrl = {
from = {"ә", "ў", "ғ", "ё", "җ", "қ", "ң", "ө", "ү", "һ"},
to = {"а" .. p[1], "в" .. p[1], "г" .. p[1], "е" .. p[1], "ж" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1]}
},
Latn = {
from = {
"i", -- Ensure "i" comes after "ı".
"ä", "ə", "ç", "ğ", "ı", "ñ", "ŋ", "ö", "ɵ", "ş", "ü"
},
to = {
"i" .. p[1],
"a" .. p[1], "a" .. p[2], "c" .. p[1], "g" .. p[1], "i", "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "s" .. p[1], "u" .. p[1]
}
},
},
}
-- "tw" IS TREATED AS "ak", SEE WT:LT
m["ty"] = {
"tiếng Tahiti",
34128,
"poz-pep",
"Latn",
"Tiếng Tahiti",
"Tahiti",
}
m["ug"] = {
"tiếng Duy Ngô Nhĩ",
13263,
"trk-kar",
"ug-Arab, Latn, Cyrl",
"Tiếng Duy Ngô Nhĩ",
"Duy Ngô Nhĩ",
ancestors = "chg",
translit = {
["ug-Arab"] = "ug-translit",
Cyrl = "ug-translit",
},
override_translit = true,
}
m["uk"] = {
"tiếng Ukraina",
8798,
"zle",
"Cyrl",
"Tiếng Ukraina",
"Ukraina",
ancestors = "zle-ouk",
translit = "uk-translit",
strip_diacritics = {remove_diacritics = c.grave .. c.acute},
sort_key = {
remove_diacritics = c.grave .. c.acute,
from = {
"ї", -- 2 chars
"ґ", "є", "і" -- 1 char
},
to = {
"и" .. p[2],
"г" .. p[1], "е" .. p[1], "и" .. p[1]
}
},
standard_chars = "АаБбВвГгДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe.
}
m["ur"] = {
"tiếng Urdu",
1617,
"inc-hnd",
"ur-Arab",
"Tiếng Urdu",
"Urdu",
translit = {["ur-Arab"] = "ur-translit"},
entry_name = {
-- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif
from = {"هٔ", "ۂ", "ٱ"},
to = {"ہ", "ہ", "ا"},
remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef
},
-- put Judeo-Urdu (Hebrew-script Urdu) under the category header
-- U+FB21 HEBREW LETTER WIDE ALEF so that it sorts after Arabic script titles
sort_key = {
from = {"^%f[" .. u(0x5D0) .. "-" .. u(0x5EA) .. "]"},
to = {u(0xFB21)},
},
}
m["uz"] = {
"tiếng Uzbek",
9264,
"trk-kar",
"Latn, Cyrl, fa-Arab",
"Tiếng Uzbek",
"Uzbek",
ancestors = "chg",
translit = {
Cyrl = "uz-translit"
},
sort_key = {
Latn = {
from = {"oʻ", "gʻ", "sh", "ch", "ng"},
to = {"z" .. p[1], "z" .. p[2], "z" .. p[3], "z" .. p[4], "z" .. p[5]}
},
Cyrl = {
from = {"ё", "ў", "қ", "ғ", "ҳ"},
to = {"е" .. p[1], "я" .. p[1], "я" .. p[2], "я" .. p[3], "я" .. p[4]}
},
},
strip_diacritics = {
["fa-Arab"] = "ar-stripdiacritics",
},
}
m["ve"] = {
"tiếng Venda",
32704,
"bnt-bso",
"Latn",
"Tiếng Venda",
"Venda",
}
m["vi"] = {
"tiếng Việt",
9199,
"mkh-vie",
"Latn, Hani",
"Tiếng Việt",
"Việt",
ancestors = "mkh-mvi",
sort_key = {
Latn = "vi-sortkey",
Hani = "Hani-sortkey",
},
}
m["vo"] = {
"tiếng Volapük",
36986,
"art",
"Latn",
"Tiếng Volapük",
"Volapük",
}
m["wa"] = {
"tiếng Wallon",
34219,
"roa-oil",
"Latn",
"Tiếng Wallon",
"Wallon",
sort_key = s["roa-oil-sortkey"],
}
m["wo"] = {
"tiếng Wolof",
34257,
"alv-fwo",
"Latn, Arab, Gara",
"Tiếng Wolof",
"Wolof",
}
m["xh"] = {
"tiếng Xhosa",
13218,
"bnt-ngu",
"Latn",
"Tiếng Xhosa",
"Xhosa",
strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron},
}
m["yi"] = {
"tiếng Yiddish",
8641,
"gmw-hgm",
"Hebr",
"Tiếng Yiddish",
"Yiddish",
ancestors = "gmh",
translit = "yi-translit",
sort_key = {
from = {"א[ַָ]", "בּ", "ו[ֹּ]", "יִ", "ײַ", "פֿ"},
to = {"א", "ב", "ו", "י", "יי", "פ"}
},
}
m["yo"] = {
"tiếng Yoruba",
34311,
"alv-yor",
"Latn, Arab",
"Tiếng Yoruba",
"Yoruba",
strip_diacritics = {
Latn = {remove_diacritics = c.grave .. c.acute .. c.macron}
},
sort_key = {
Latn = {
from = {"ẹ", "ɛ", "gb", "ị", "kp", "ọ", "ɔ", "ṣ", "sh", "ụ"},
to = {"e" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "o" .. p[1], "o" .. p[1], "s" .. p[1], "s" .. p[1], "u" .. p[1]}
},
},
}
m["za"] = {
"tiếng Tráng",
13216,
"tai",
"Latn, Hani",
"Tiếng Tráng",
"Tráng",
sort_key = {
Latn = "za-sortkey",
Hani = "Hani-sortkey",
},
}
m["zh"] = {
"tiếng Trung Quốc",
7850,
"zhx",
"Hants, Latn, Bopo, Nshu, Brai",
"Tiếng Trung Quốc",
"Trung Quốc",
ancestors = "ltc",
generate_forms = "zh-generateforms",
translit = {
Hani = "zh-translit",
Bopo = "zh-translit",
},
sort_key = {Hani = "Hani-sortkey"},
}
m["zu"] = {
"tiếng Zulu",
10179,
"bnt-ngu",
"Latn",
"Tiếng Zulu",
"Zulu",
strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron},
}
return require("Module:languages").finalizeData(m, "language")
3a0f0votslya0gl721bey6dc8sg2t2l
Mô đun:affix/templates
828
256626
2512186
2480472
2026-08-07T16:19:40Z
Hiyuune
50834
2512186
Scribunto
text/plain
local export = {}
local m_affix = require("Module:affix")
local m_utilities = require("Module:utilities")
local en_utilities_module = "Module:en-utilities"
local parameter_utilities_module = "Module:parameter utilities"
local pseudo_loan_module = "Module:affix/pseudo-loan"
local insert = table.insert
local boolean_param = {type = "boolean"}
local function is_property_key(k)
return require(parameter_utilities_module).item_key_is_property(k)
end
local recognized_affix_types = {
prefix = "prefix",
pre = "prefix",
suffix = "suffix",
suf = "suffix",
interfix = "interfix",
inter = "interfix",
infix = "infix",
["in"] = "infix",
circumfix = "circumfix",
circum = "circumfix",
["non-affix"] = "non-affix",
naf = "non-affix",
root = "non-affix",
}
local function pre_normalize_affix_type(data)
local modtext = data.modtext
modtext = modtext:match("^<(.*)>$")
if not modtext then
error(("Internal error: Passed-in modifier isn't surrounded by angle brackets: %s"):format(data.modtext))
end
if recognized_affix_types[modtext] then
modtext = "type:" .. modtext
end
return "<" .. modtext .. ">"
end
-- Parse raw arguments. A single parameter `data` is passed in, with the following fields:
-- * `raw_args`: The raw arguments to parse, normally taken from `frame:getParent().args`.
-- * `extra_params`: An optional function of one argument that is called on the `params` structure before parsing; its
-- purpose is to specify additional allowed parameters or possibly disable parameters.
-- * `has_source`: There is a source-language parameter following 1= (which becomes the "destination" language
-- parameter) and preceding the terms. This is currently used for {{pseudo-loan}}.
-- * `ilang`: If given, it is a language object that serves as the default for the language. If specified, there is no
-- language code specified in 1=; instead the term parameters start directly at 1= (or at 2= if `has_source` is
-- given).
-- * `require_index_for_pos`: There is no separate |pos= parameter distinct from |pos1=, |pos2=, etc. Instead,
-- specifying |pos= results in an error.
-- * `dont_require_index`: Allow |foo= to be specified as a synonym for |foo1= (except for |lit=, which remains
-- distinct).
-- * `allow_type`: Allow |type1=, |type2=, etc. or inline <type:...> for the affix type, and allow a separate |type=
-- parameter for the etymology type (FIXME: this may be confusing; consider changing the etymology type to |etype=).
-- * `allow_semicolon_separator`: Allow semicolon as a separator, displaying as " or ". This requires changes in the
-- display of the output, to not always put a + between the items.
--
-- Note that all language parameters are allowed to be etymology-only languages.
--
-- Return five values ARGS, ITEMS, LANG_OBJ, SCRIPT_OBJ, SOURCE_LANG_OBJ where ARGS is a table of the parsed arguments;
-- ITEMS is the list of parsed items; LANG_OBJ is the language object corresponding to the language code specified in 1=
-- (or taken from `ilang` if given); SCRIPT_OBJ is the script object corresponding to sc= (if given, otherwise nil); and
-- SOURCE_LANG_OBJ is the language object corresponding to the source-language code specified in 2= (or 1= if `ilang` is
-- given) if `has_source` is specified (otherwise nil).
local function parse_args(data)
local raw_args = data.raw_args
local has_source = data.has_source
local ilang = data.ilang
if raw_args.lang then
error("The |lang= parameter is not used by this template. Place the language code in parameter 1 instead.")
end
local term_index = (ilang and 1 or 2) + (has_source and 1 or 0)
local params = {
[term_index] = {list = true, allow_holes = true},
["sort"] = {},
["nocap"] = boolean_param, -- always allow this even if not used, for use with {{surf}}, which adds it
}
if not ilang then
params[1] = {required = true, type = "language", default = "und"}
end
local source_index
if has_source then
source_index = term_index - 1
params[source_index] = {required = true, type = "language", default = "und"}
end
local m_param_utils = require(parameter_utilities_module)
local param_mod_source = {}
if not data.dont_require_index then
insert(param_mod_source,
-- We want to require an index for all params (or use separate_no_index, which also requires an index for the
-- param corresponding to the first item).
{default = true, require_index = true}
)
end
insert(param_mod_source, {group = {"link", "ref", "lang", "q", "l", "infl"}})
-- Override lit= to be separate from lit1=.
insert(param_mod_source, {param = "lit", separate_no_index = true})
if not data.dont_require_index and not data.require_index_for_pos then
-- Override pos= to be separate from pos1=.
insert(param_mod_source, {param = "pos", separate_no_index = true})
end
if data.allow_type then
insert(param_mod_source, {param = "type", separate_no_index = true})
end
local param_mods = m_param_utils.construct_param_mods(param_mod_source)
if data.extra_params then
data.extra_params(params)
end
local items, args = m_param_utils.parse_list_with_inline_modifiers_and_separate_params {
params = params,
param_mods = param_mods,
raw_args = raw_args,
termarg = term_index,
parse_lang_prefix = true,
track_module = "homophones",
-- the inclusion of ‎ is what [[Module:affix]] has always done
default_separator = data.allow_semicolon_separator and " +‎ " or nil,
special_separators = data.allow_semicolon_separator and {[";"] = " or "} or nil,
disallow_custom_separators = not data.allow_semicolon_separator,
-- For compatibility, we need to not skip completely unspecified items. It is common, for example, to do
-- {{suffix|lang||foo}} to generate "+ -foo".
dont_skip_items = true,
-- Allow e.g. <infix> to be specified in place of <type:infix>.
pre_normalize_modifiers = pre_normalize_affix_type,
-- Don't pass in `lang` or `sc`, as they will be used as defaults to initialize the items, which we don't want
-- (particularly for `lang`), as the code in [[Module:affix]] uses the presence of `lang` as an indicator that
-- a part-specific language was explicitly given.
}
local lang = ilang or args[1]
local source
if has_source then
source = args[source_index]
end
-- For compatibility with the prior code, we need to convert items without term or properties to nil.
for i = 1, #items do
local item = items[i]
local saw_item_property = item.term
if not saw_item_property then
for k, v in pairs(item) do
if is_property_key(k) then
saw_item_property = true
break
end
end
end
if not saw_item_property then
items[i] = nil
elseif item.type then
-- Validate and canonicalize affix types.
if not recognized_affix_types[item.type] then
local valid_types = {}
for k in pairs(recognized_affix_types) do
insert(valid_types, ("'%s'"):format(k))
end
table.sort(recognized_affix_types)
error(("Unrecognized affix type '%s' in item %s; valid values are %s"):format(
item.type, item.itemno, table.concat(valid_types, ", ")))
else
item.type = recognized_affix_types[item.type]
end
end
end
if args.type and args.type.default and not m_affix.etymology_types[args.type.default] then
error("Unrecognized etymology type: '" .. args.type.default .. "'")
end
return args, items, lang, args.sc.default, source
end
local function augment_affix_data(data, args, lang, sc)
data.lang = lang
data.sc = sc
data.pos = args.pos and args.pos.default
data.lit = args.lit and args.lit.default
data.sort_key = args.sort
data.type = args.type and args.type.default
data.nocap = args.nocap
data.notext = args.notext
data.nocat = args.nocat
data.force_cat = args.force_cat
data.l = args.l.default
data.ll = args.ll.default
data.q = args.q.default
data.qq = args.qq.default
data.infl = args.infl.default
return data
end
function export.affix(frame)
local function extra_params(params)
params.notext = boolean_param
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
allow_type = true,
allow_semicolon_separator = true,
}
-- There must be at least one part to display. If there are gaps, a term
-- request will be shown.
if not next(parts) and not args.type.default then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
parts = { {term = "prefix-"}, {term = "base"}, {term = "-suffix"} }
else
error("You must provide at least one part.")
end
end
return m_affix.show_affix(augment_affix_data({ parts = parts }, args, lang, sc))
end
function export.compound(frame)
local function extra_params(params)
params.notext = boolean_param
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
allow_type = true,
allow_semicolon_separator = true,
}
-- There must be at least one part to display. If there are gaps, a term
-- request will be shown.
if not next(parts) and not args.type.default then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
parts = { {term = "first"}, {separator = " +‎ ", term = "second"} }
else
error("You must provide at least one part of a compound.")
end
end
return m_affix.show_compound(augment_affix_data({ parts = parts }, args, lang, sc))
end
-- FIXME: Temporary for check in compound_like() below for old-style {{contraction}} parameters. Remove eventually.
local function ine(arg)
if arg == "" then
return nil
else
return arg
end
end
function export.compound_like(frame)
local iparams = {
["lang"] = {type = "language"},
["template"] = {},
["text"] = {},
["oftext"] = {},
["cat"] = {},
["noaffixcat"] = boolean_param,
["dont_require_index"] = boolean_param,
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local parent_args = frame:getParent().args
-- Error to catch most uses of old-style parameters for {{contraction}}. (FIXME: Remove eventually.)
local term_param = iargs.lang and 1 or 2
if ine(parent_args[term_param + 2]) and not ine(parent_args[term_param + 1]) and not ine(parent_args.tr2) and not ine(parent_args.ts2)
and not ine(parent_args.t2) and not ine(parent_args.gloss2) and not ine(parent_args.g2)
and not ine(parent_args.alt2) then
error(("You specified a term in %s= and not one in %s=. You probably meant to use t= to specify a gloss instead. "
.. "If you intended to specify two terms, put the second term in %s=."):format(term_param + 2, term_param + 1,
term_param + 1))
end
if not ine(parent_args[term_param + 1]) and not ine(parent_args.alt2) and not ine(parent_args.tr2) and not ine(parent_args.ts2)
and ine(parent_args.g2) then
error(("You specified a gender in g2= but no term in %s=. You were probably trying to specify two genders for "
.. "a single term. To do that, put both genders in g=, comma-separated."):format(term_param + 1))
end
local function extra_params(params)
params.notext = boolean_param
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = parent_args,
extra_params = extra_params,
ilang = iargs.lang,
dont_require_index = iargs.dont_require_index,
-- FIXME, why are we doing this? Formerly we had 'params.pos = nil' whose intention was to disable the overall
-- pos= while preserving posN=, which is equivalent to the following using the new syntax. But why is this
-- necessary?
require_index_for_pos = not iargs.dont_require_index,
allow_semicolon_separator = true,
}
local template = iargs.template
local nocat = args.nocat
local notext = args.notext
local text = not notext and iargs.text
local oftext = not notext and (iargs.oftext or text and "của")
local cat = not nocat and iargs.cat
local noaffixcat = nocat or iargs.noaffixcat
if not next(parts) then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
parts = { {term = "first"}, {separator = " +‎ ", term = "second"} }
end
end
return m_affix.show_compound_like(augment_affix_data({ parts = parts, text = text, oftext = oftext, cat = cat, noaffixcat = noaffixcat },
args, lang, sc))
end
function export.surface_analysis(frame)
local function ine(arg)
-- Since we're operating before calling [[Module:parameters]], we need to imitate how that module processes
-- arguments, including trimming since numbered arguments don't have automatic whitespace trimming.
if not arg then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
arg = nil
end
return arg
end
local parent_args = frame:getParent().args
local etymtext
local arg1 = ine(parent_args[1])
if not arg1 then
-- Allow omitted first argument to just display "By surface analysis".
etymtext = ""
elseif arg1:find("^%+") then
-- If the first argument (normally a language code) is prefixed with a +, it's a template name.
local template_name = arg1:sub(2)
local new_args = {}
for i, v in pairs(parent_args) do
if type(i) == "number" then
if i > 1 then
new_args[i - 1] = v
end
else
new_args[i] = v
end
end
new_args.nocap = true
etymtext = ", " .. frame:expandTemplate { title = template_name, args = new_args }
end
if etymtext then
return (ine(parent_args.nocap) and "t" or "T") .. "heo cách [[Phụ lục:Từ điển thuật ngữ#phân tích mặt chữ|phân tích mặt chữ]]" ..
etymtext
end
local function extra_params(params)
params.notext = boolean_param
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = parent_args,
extra_params = extra_params,
allow_type = true,
allow_semicolon_separator = true,
}
-- There must be at least one part to display. If there are gaps, a term
-- request will be shown.
if not next(parts) then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
parts = { {term = "first"}, {separator = " +‎ ", term = "second"} }
else
error("You must provide at least one part.")
end
end
return m_affix.show_surface_analysis(augment_affix_data({ parts = parts }, args, lang, sc))
end
local function check_max_items(items, max_allowed)
if #items > max_allowed then
local bad_item = items[max_allowed + 1]
if bad_item.term then
error(("At most %s terms can be specified but saw a term specified for term #%s")
:format(max_allowed, max_allowed + 1))
else
for k, v in pairs(bad_item) do
if is_property_key(k) then
error(("At most %s terms can be specified but saw a value for property '%s' of term #%s")
:format(max_allowed, k, max_allowed + 1))
end
end
end
error(("Internal error: Something wrong, %s items generated when there should be at most %s, but item #%s doesn't have a term or any properties")
:format(#items, max_allowed, max_allowed + 1))
end
end
function export.circumfix(frame)
local function extra_params(params)
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
}
check_max_items(parts, 3)
local prefix = parts[1]
local base = parts[2]
local suffix = parts[3]
-- Just to make sure someone didn't use the template in a silly way
if not (prefix and base and suffix) then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
prefix = {term = "circumfix", alt = "prefix"}
base = {term = "base"}
suffix = {term = "circumfix", alt = "suffix"}
else
error("You must specify a prefix part, a base term and a suffix part.")
end
end
return m_affix.show_circumfix(augment_affix_data({ prefix = prefix, base = base, suffix = suffix }, args, lang, sc))
end
function export.confix(frame)
local function extra_params(params)
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
}
check_max_items(parts, 3)
local prefix = parts[1]
local base = parts[3] and parts[2] or nil
local suffix = parts[3] or parts[2]
-- Just to make sure someone didn't use the template in a silly way
if not (prefix and suffix) then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
prefix = {term = "prefix"}
suffix = {term = "suffix"}
else
error("You must specify a prefix part, an optional base term and a suffix part.")
end
end
return m_affix.show_confix(augment_affix_data({ prefix = prefix, base = base, suffix = suffix }, args, lang, sc))
end
function export.pseudo_loan(frame)
local function extra_params(params)
params.notext = boolean_param
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc, source = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
has_source = true,
-- FIXME, why are we doing this? Formerly we had 'params.pos = nil' whose intention was to disable the overall
-- pos= while preserving posN=, which is equivalent to the following using the new syntax. But why is this
-- necessary?
require_index_for_pos = true,
allow_semicolon_separator = true,
}
return require(pseudo_loan_module).show_pseudo_loan(
augment_affix_data({ source = source, parts = parts }, args, lang, sc))
end
function export.infix(frame)
local function extra_params(params)
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
}
check_max_items(parts, 3)
local base = parts[1]
local infix = parts[2]
-- Just to make sure someone didn't use the template in a silly way
if not (base and infix) then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
base = {term = "base"}
infix = {term = "infix"}
else
error("You must provide a base term and an infix.")
end
end
return m_affix.show_infix(augment_affix_data({ base = base, infix = infix }, args, lang, sc))
end
function export.prefix(frame)
local function extra_params(params)
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
}
local prefixes = parts
local base = nil
local max_prefix = 0
for k, v in pairs(prefixes) do
max_prefix = math.max(k, max_prefix)
end
if max_prefix >= 2 then
base = prefixes[max_prefix]
prefixes[max_prefix] = nil
end
-- Just to make sure someone didn't use the template in a silly way
if not next(prefixes) then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
base = {term = "base"}
prefixes = { {term = "prefix"} }
else
error("You must provide at least one prefix.")
end
end
return m_affix.show_prefix(augment_affix_data({ prefixes = prefixes, base = base }, args, lang, sc))
end
function export.suffix(frame)
local function extra_params(params)
params.nocat = boolean_param
params.force_cat = boolean_param
end
local args, parts, lang, sc = parse_args {
raw_args = frame:getParent().args,
extra_params = extra_params,
}
local base = parts[1]
local suffixes = {}
for k, v in pairs(parts) do
suffixes[k - 1] = v
end
-- Just to make sure someone didn't use the template in a silly way
if not next(suffixes) then
if mw.title.getCurrentTitle().nsText == "Bản_mẫu" then
base = {term = "base"}
suffixes = { {term = "suffix"} }
else
error("You must provide at least one suffix.")
end
end
return m_affix.show_suffix(augment_affix_data({ base = base, suffixes = suffixes }, args, lang, sc))
end
function export.derivsee(frame)
local iargs = frame.args
local iparams = {
["derivtype"] = {},
}
local iargs = require("Module:parameters").process(frame.args, iparams)
local params = {
["head"] = {},
["id"] = {},
["sc"] = {type = "script"},
["pos"] = {},
}
local derivtype = iargs.derivtype
params[1] = {required = "true", type = "language", default = "und"}
params[2] = {}
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = args[1]
local term = args[2] or args.head
local id = args.id
local sc = args.sc
local pos = require(en_utilities_module).singularize(args.pos or "Từ")
if not term then
local SUBPAGE = mw.loadData("Module:headword/data").pagename
if lang:hasType("reconstructed") or mw.title.getCurrentTitle().nsText == "Reconstruction" then
term = "*" .. SUBPAGE
elseif lang:hasType("appendix-constructed") then
term = SUBPAGE
else
term = SUBPAGE
end
end
local category = nil
local langname = lang:getFullName()
if (derivtype == "compound" and pos == nil) then
category = langname .. " compounds with " .. term
elseif derivtype == "compound" and pos == "verbs" then
category = langname .. " compound " .. pos .. " formed with " .. term
elseif derivtype == "compound" then
category = langname .. " compound " .. pos .. " with " .. term
else
category = pos .. " có " .. derivtype .. " " .. term .. (id and " (" .. id .. ")" or "") .. " " .. langname
end
return require('Module:collapsible category tree').make{
lang = lang,
sc = sc,
category = category,
}
end
return export
hpr3pdlm5up2pnd0n5u1z5zjwrs8a83
amgueddfa
0
258882
2512347
2254114
2026-08-08T11:33:48Z
Kelly zhrm
58416
2512347
wikitext
text/x-wiki
=={{langname|cy}}==
==={{ĐM|etym}}===
Từ {{affix|cy|amguedd|gloss1=kho báu, của cải|-fa|alt2=-fa, -ma}}; {{coin|cy|William Owen Pughe|nocap=1}}.
==={{ĐM|pron}}===
* {{IPA4|cy|/ˌamɡɨ̞ˈɛðva/|a=cy-N}}
* {{IPA4|cy|/ˌamɡiˈɛðva/|q1=tiêu chuẩn|q2=thông tục|/ˌamˈɡjɛðva/|a=cy-S}}
* {{rhymes|cy|ɛðva|s=4}}
==={{ĐM|n}}===
{{cy-noun|f|amgueddfeydd|pl2=amgueddfâu|pl3=amgueddfaoedd}}
# [[viện bảo tàng|Viện bảo tàng]].
===={{ĐM|drv}}====
* {{l|cy|amgueddfaol|pos=tính từ|t=bảo tàng}}
==={{ĐM|mut}}===
{{cy-mut}}
==={{ĐM|ref}}===
* {{R:cy:GPC}}
{{C|cy|Tòa nhà}}
evt4zfgik2g3pberrmajdc4rmprvken
Bản mẫu:-symbol-
10
259209
2512307
2376022
2026-08-08T09:25:43Z
TheHighFighter2
42988
/* */ Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2512307
wikitext
text/x-wiki
{{-h3-def-|Ký hiệu|Mục từ dùng cấu trúc mục từ Wiktionary cũ/Ký hiệu đa ngữ}}
<noinclude>{{Tài liệu đề mục|2}}</noinclude>
grmo5c2u6deca2poyq7gr2k6f73yjiq
Thể loại:Ký hiệu tiền
14
259386
2512322
2361785
2026-08-08T10:03:01Z
TheHighFighter2
42988
đã dời [[Thể loại:Ký tự đa ngữ]]; đã thêm [[Thể loại:Ký hiệu đa ngữ]] dùng [[w:WP:HOTCAT|HotCat]]
2512322
wikitext
text/x-wiki
[[Thể loại:Ký hiệu đa ngữ]]
pbugqjaxx56cs6zurvh94ffsuy41or0
Mô đun:blt-pron
828
260081
2512152
2274712
2026-08-07T14:42:17Z
Hiyuune
50834
2512152
Scribunto
text/plain
local export = {}
local PAGENAME = mw.loadData("Module:headword/data").pagename
local find = mw.ustring.find
local gsub = mw.ustring.gsub
local rhyme
local pre = {
[1] = {"([ꪀ-ꪯ]ꪫ?)ꪚꪾ", "%1ꪰꪚ"}, -- no tone mark
[2] = {"([ꪀ-ꪯ]ꪫ?)ꪾꪚ", "%1ꪰꪚ"}, -- no tone mark
[3] = {"ꫛ", "ꪶꪁꪙ"},
[4] = {"ꫜ", "ꪙꪳ꪿ꪉ"},
[5] = {"([ꪵꪶꪹꪻꪼ])([ꪀ-ꪯ]ꪫ?)", "%2%1"}, -- for easier processing
[6] = {"(.*)([꪿꫁])(.*)", "%1%3%2"}, -- for easier processing
}
local initials = {
["ꪀ"] = "k", ["ꪁ"] = "k", ["ꪂ"] = "kʰ", ["ꪃ"] = "kʰ",
["ꪄ"] = "x", ["ꪅ"] = "x", ["ꪆ"] = "ɡ", ["ꪇ"] = "ɡ", ["ꪈ"] = "ŋ", ["ꪉ"] = "ŋ",
["ꪊ"] = "t͡ɕ", ["ꪋ"] = "t͡ɕ", ["ꪌ"] = "t͡ɕʰ", ["ꪍ"] = "t͡ɕʰ",
["ꪎ"] = "s", ["ꪏ"] = "s", ["ꪐ"] = "ɲ", ["ꪑ"] = "ɲ",
["ꪒ"] = "d", ["ꪓ"] = "d", ["ꪔ"] = "t", ["ꪕ"] = "t",
["ꪖ"] = "tʰ", ["ꪗ"] = "tʰ", ["ꪘ"] = "n", ["ꪙ"] = "n",
["ꪚ"] = "b", ["ꪛ"] = "b", ["ꪜ"] = "p", ["ꪝ"] = "p",
["ꪞ"] = "pʰ", ["ꪟ"] = "pʰ", ["ꪠ"] = "f", ["ꪡ"] = "f", ["ꪢ"] = "m", ["ꪣ"] = "m",
["ꪤ"] = "j", ["ꪥ"] = "j", ["ꪦ"] = "r", ["ꪧ"] = "r", ["ꪨ"] = "l", ["ꪩ"] = "l",
["ꪪ"] = "v", ["ꪫ"] = "v", ["ꪬ"] = "h", ["ꪭ"] = "h", ["ꪮ"] = "ʔ", ["ꪯ"] = "ʔ",
["ꪀꪫ"] = "kʷ", ["ꪁꪫ"] = "kʷ", ["ꪂꪫ"] = "kʷʰ", ["ꪃꪫ"] = "kʷʰ",
["ꪄꪫ"] = "xʷ", ["ꪅꪫ"] = "xʷ", ["ꪆꪫ"] = "ɡʷ", ["ꪇꪫ"] = "ɡʷ", ["ꪈꪫ"] = "ŋʷ", ["ꪉꪫ"] = "ŋʷ",
}
local vowels = {
["ꪰ"] = "a", ["ꪱ"] = "aː", ["ꪲ"] = "i", ["ꪳ"] = "ɨ", ["ꪴ"] = "u",
["ꪵ"] = "ɛ", ["ꪶ"] = "o", ["ꪮ"] = "ɔ", ["ꪷ"] = "ɔ",
["ꪸ"] = "iə̯", ["ꪹ"] = "ɨə̯", ["ꪺ"] = "uə̯",
["ꪻ"] = "aɰ", ["ꪼ"] = "aj", ["ꪽ"] = "an", ["ꪾ"] = "am",
["ꪹꪱ"] = "aw", ["ꪹꪷ"] = "ə", ["ꪹꪸ"] = "e", [""] = "#",
}
--/aɰ/ comes from Gedney's description of Tai Dam in Hudak's (2008) book (p. 12) (William J. Gedney’s comparative Tai source book) and also from Burusphat, S. (2017). Changes in Tai Dam vowels. JSEALS, 10(2). 10-22.
local finals = {
[""] = "", ["ꪀ"] = "ʔ", ["ꪒ"] = "t̚", ["ꪚ"] = "p̚",
["ꪉ"] = "ŋ", ["ꪙ"] = "n", ["ꪣ"] = "m", ["ꪥ"] = "j", ["ꪫ"] = "w",
["+ꪀ"] = "k̚", ["+ꪫ"] = "w", --force final -k and -w
}
-- Checked syllables have no tone mark
-- and they already sound like "mai ek"
-- per [http://www.amritas.com/141122.htm#11212354]
-- The tone letters including the glottalization ultimately come from Gedney's description of Tai Dam in Hudak's (2008) book (p. 12) (William J. Gedney’s comparative Tai source book).
local tones = {
[""] = {"˨", "˥"}, -- L 22, H 55
["꪿"] = {"˦˥", "˦"}, -- L 45, H 44
["꫁"] = {"˨˩ˀ", "˧˩ˀ"}, -- L 21, H 31
["ꫀ"] = {"˦˥", "˦"},
["ꫂ"] = {"˨˩ˀ", "˧˩ˀ"},
}
function export.show(frame)
local output = {}
table.insert(output, toIPA(frame))
-- reduced hyphenetion
table.insert(output, "* Tách từ: <span class='Tavt blt-reading' lang='blt'>" .. (frame:getParent().args[1] or PAGENAME) .. "</span>")
-- global var trick
table.insert(output, "* " .. frame:expandTemplate{title = "rhymes", args = {"blt", rhyme}})
return table.concat(output, "\n")
end
function toIPA(frame)
local args = frame:getParent().args
local text = args[1] or PAGENAME -- supports only one pronunciation
local debug = args["d"] or nil
local ipa = {}
for syl in mw.text.gsplit(text, "[ %.%-]") do
for _, v in ipairs(pre) do
syl = gsub(syl, v[1], v[2])
end
local i, v, f, t = mw.ustring.match(syl, "^([ꪀ-ꪯ]ꪫ?)([ꪰ-ꪾꪮ]*)(%+?[ꪀꪒꪚꪉꪙꪣꪥꪫ]?)([꪿ꫀ꫁ꫂ]?)$")
if find(i, "^([ꪀꪂꪄꪆꪈꪊꪌꪎꪐꪒꪔꪖꪘꪚꪜꪞꪠꪢꪤꪦꪨꪪꪬꪮ]ꪫ?)$") then --low class
tn = 1
else --high class
tn = 2
end
if find(f, "^(%+?[ꪀꪒꪚ])$") then --checked final
t = "ꫀ"
end
longer = (f == "" and find(vowels[v], "^([iɨuɛoɔəe])$")) -- if no final, make it longer
if debug then
table.insert(ipa, "["..(i or "-").."]["..(v or "-").."]["..(f or "-").."]["..(t or "-").."]")
else
table.insert(ipa, initials[i] .. vowels[v] .. (longer and "ː" or "") .. finals[f] .. tones[t][tn])
rhyme = vowels[v] .. (longer and "ː" or "") .. finals[f] -- It becomes rhyme after the last iteration
end
end
local ipa_final = table.concat(ipa, ".")
ipa_final = "[" .. ipa_final .. "]"
return "* " .. frame:expandTemplate{title = "IPA", args = {"blt", ipa_final}} .. (#ipa > 0 and "[[Thể loại:Từ " .. #ipa .. " âm tiết tiếng Thái Đen]]" or "")
end
return export
iapglu6te9smmag621wqydg82bm8f68
Mô đun:headword/data
828
261392
2512298
2471455
2026-08-08T06:32:27Z
TheHighFighter2
42988
2512298
Scribunto
text/plain
local headword_page_module = "Module:headword/page"
local list_to_set = require("Module:table").listToSet
local data = {}
------ 1. Lists which are converted into sets. ------
--[==[ var:
Large pages where we disable label tracking, red link checking and similar.
]==]
data.large_pages = list_to_set {
-- pages that consistently hit timeouts
"a",
-- pages that sometimes hit timeouts
"A",
"baba",
"de",
"e",
"i",
"lima",
"o",
"u",
"и",
"山",
"子",
"月",
"一",
"人",
}
--[==[ var:
Map from singular to plural, and from plural to itself, for recognized parts of speech with irregular plurals. Most of
these are invariable plurals, e.g. `kanji` is its own plural; but we also have `mora` plural `morae`.
]==]
data.irregular_plurals = list_to_set({
"cmavo",
"cmene",
"fu'ivla",
"gismu",
"Hán tự",
"Hanja",
"Việt bính",
"Kana",
"Kanji",
"lujvo",
"Từ điển đàm thoại",
"Bính âm Hán ngữ",
"rafsi",
}, function(_, item)
return item
end)
local irregular_plurals = data.irregular_plurals
-- Irregular non-zero plurals AND any regular plurals where the singular ends in "s",
-- because the module assumes that inputs ending in "s" are plurals. The singular and
-- plural both need to be added, as the module will generate a default plural if
-- the input doesn't match a key in this table.
for sg, pl in next, {
mora = "mora"
} do
irregular_plurals[sg], irregular_plurals[pl] = pl, pl
end
--[==[ var:
Recognized lemmas. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the category
'LANG lemmas' will automatically be added. If the part of speech is not a singular or plural lemma or non-lemma form and
is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added to various tracking
categories:
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANG]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS/LANG]]
]==]
data.lemmas = list_to_set{
"abbreviations",
"acronyms",
"Tính từ",
"Danh tính từ",
"adpositions",
"Phó từ",
"Phụ tố",
"ambipositions",
"Mạo từ",
"circumfixes",
"circumpositions",
"Loại từ",
"cmavo",
"cmavo clusters",
"cmene",
"combining forms",
"Liên từ",
"Lượng từ",
"Từ hạn định",
"Dấu phụ",
"digraphs",
"Tính từ cách bằng",
"fu'ivla",
"gismu",
"Hán tự",
"Hanja",
"ideophones",
"Thành ngữ",
"Trung tố",
"initialisms",
"iteration marks",
"interfixes",
"Thán từ",
"Kana",
"Kanji",
"Chữ cái",
"ligatures",
"Văn tự ngữ tố",
"lujvo",
"Mora",
"Hình vị",
"non-constituents",
"Danh từ",
"Số",
"Ký tự số",
"Số từ",
"Trợ từ",
"Cụm từ",
"Yếu tố sau",
"Cụm yếu tố sau",
"predicatives",
"Tiền tố",
"Cụm giới từ",
"Giới từ",
"preverbs",
"pronominal adverbs",
"Đại từ",
"Danh từ riêng",
"Tục ngữ",
"Dấu câu",
"relatives",
"Gốc từ",
"Thân từ",
"Hậu tố",
"syllables",
"Ký tự",
"Động từ",
}
--[==[ var:
Recognized non-lemma forms. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the
category 'LANG non-lemma forms' will automatically be added. If the part of speech is not a singular or plural lemma or
non-lemma form and is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added
to various tracking categories; see the documentation of `data.lemmas`.
]==]
data.nonlemmas = list_to_set{
"Biến thể hình thái phân từ chủ động",
"Phân từ chủ động",
"Tính phân từ",
"adjective case forms",
"Biến thể hình thái tính từ",
"adjective feminine forms",
"adjective plural forms",
"Biến thể hình thái phó từ",
"Phó phân từ",
"Phân từ tác nhân",
"Biến thể hình thái mạo từ",
"circumfix forms",
"combined forms",
"Biến thể hình thái tính từ so sánh hơn",
"Tính từ so sánh hơn",
"comparative adverb forms",
"comparative adverbs",
"conjunction forms",
"contractions",
"converbs",
"Biến thể hình thái từ hạn định so sánh hơn",
"Biến thể hình thái từ hạn định",
"Biến thể hình thái từ hạn định so sánh nhất",
"Danh từ giảm nhẹ",
"elative adjectives",
"equative adjective forms",
"equative adjectives",
"future participles",
"Động danh từ",
"Dạng nguyên mẫu",
"infinitives",
"interjection forms",
"Việt bính",
"Từ sai chính tả",
"Phân từ phủ định",
"nominal participles",
"noun case forms",
"noun dual forms",
"Biến thể hình thái danh từ",
"noun paucal forms",
"noun plural forms",
"noun possessive forms",
"noun singulative forms",
"Biến thể hình thái số từ",
"Phân từ",
"Biến thể hình thái phân từ",
"Biến thể hình thái trợ từ",
"Phân từ bị động",
"Phân tính từ bị động",
"Phân từ quá khứ chủ động",
"Phân phó từ quá khứ",
"Phân từ quá khứ",
"Biến thể hình thái phân từ quá khứ",
"Phân từ bị động quá khứ",
"Phân từ hoàn thành chủ động",
"Phân từ hoàn thành",
"Phân từ hoàn thành bị động",
"Bính âm Hán ngữ",
"Số nhiều",
"Biến thể hình thái yếu tố sau",
"Biến thể hình thái tiền tố",
"preposition contractions",
"preposition forms",
"prepositional pronouns",
"Phân từ hoàn thành",
"present adverbial participles",
"Phân từ hiện tại",
"Phân từ hiện tại chủ động",
"Phân từ hiện tại bị động",
"preverb forms",
"Biến thể hình thái đại từ",
"pronoun possessive forms",
"Biến thể hình thái danh từ riêng",
"proper noun plural forms",
"rafsi",
"Latinh hóa",
"root forms",
"singulatives",
"Biến thể hình thái hậu tố",
"Biến thể hình thái tính từ so sánh nhất",
"Tính từ so sánh nhất",
"Biến thể hình thái phó từ so sánh nhất",
"Phó từ so sánh nhất",
"Biến thể hình thái động từ",
"Danh động từ",
}
--[==[ var:
List of languages that will not have links to separate parts of the headword.
]==]
data.no_multiword_links = list_to_set{
"zh",
}
--[==[ var:
List of languages that will not have `LANG multiword terms` categories added. There are various reasons why languages
are in this list: (a) words are written without spaces between them; (b) syllables are written with spaces between them;
(c) variant reconstructions are notated with a tilde surrounded by spaces; (d) the language is a sign language, where
pagenames are multiword descriptions of the gesture(s) required to make an individual sign; (e) some other weirdnesses.
]==]
data.no_multiword_cat = list_to_set{
-------- Languages without spaces between words (sometimes spaces between phrases) --------
"blt", -- Tai Dam
"ja", -- Japanese
"khb", -- Lü
"km", -- Khmer
"lo", -- Lao
"mnw", -- Mon
"my", -- Burmese
"nan", -- Min Nan (some words in Latin script; hyphens between syllables)
"nan-hbl", -- Hokkien (some words in Latin script; hyphens between syllables)
"nod", -- Northern Thai
"ojp", -- Old Japanese
"shn", -- Shan
"sou", -- Southern Thai
"tdd", -- Tai Nüa
"th", -- Thai
"tts", -- Isan
"twh", -- Tai Dón
"txg", -- Tangut
"zh", -- Chinese (all varieties with Chinese characters)
"zkt", -- Khitan
-------- Languages with spaces between syllables --------
"ahk", -- Akha
"aou", -- A'ou
"atb", -- Zaiwa
"byk", -- Biao
"cdy", -- Chadong
--"duu", -- Drung; not sure
--"hmx-pro", -- Proto-Hmong-Mien
--"hnj", -- Green Hmong; not sure
"huq", -- Tsat
"ium", -- Iu Mien
--"lis", -- Lisu; not sure
"mtq", -- Muong
--"mww", -- White Hmong; not sure
"onb", -- Lingao
--"sit-gkh", -- Gokhy; not sure
--"swi", -- Sui; not sure
"tbq-lol-pro", -- Proto-Loloish
"tdh", -- Thulung
"ukk", -- Muak Sa-aak
"vi", -- Vietnamese
"yig", -- Wusa Nasu
"zng", -- Mang
-------- Languages with ~ with surrounding spaces used to separate variants --------
"mkh-ban-pro", -- Proto-Bahnaric
"sit-pro", -- Proto-Sino-Tibetan; listed above
-------- Other weirdnesses --------
"mul", -- Translingual; gestures, Morse code, etc.
"aot", -- Atong (India); bullet is a letter
-------- All sign languages --------
"ads",
"aed",
"aen",
"afg",
"ase",
"asf",
"asp",
"asq",
"asw",
"bfi",
"bfk",
"bog",
"bqn",
"bqy",
"bvl",
"bzs",
"cds",
"csc",
"csd",
"cse",
"csf",
"csg",
"csl",
"csn",
"csq",
"csr",
"doq",
"dse",
"dsl",
"ecs",
"esl",
"esn",
"eso",
"eth",
"fcs",
"fse",
"fsl",
"fss",
"gds",
"gse",
"gsg",
"gsm",
"gss",
"gus",
"hab",
"haf",
"hds",
"hks",
"hos",
"hps",
"hsh",
"hsl",
"icl",
"iks",
"ils",
"inl",
"ins",
"ise",
"isg",
"isr",
"jcs",
"jhs",
"jls",
"jos",
"jsl",
"jus",
"kgi",
"kvk",
"lbs",
"lls",
"lsl",
"lso",
"lsp",
"lst",
"lsy",
"lws",
"mdl",
"mfs",
"mre",
"msd",
"msr",
"mzc",
"mzg",
"mzy",
"nbs",
"ncs",
"nsi",
"nsl",
"nsp",
"nsr",
"nzs",
"okl",
"pgz",
"pks",
"prl",
"prz",
"psc",
"psd",
"psg",
"psl",
"pso",
"psp",
"psr",
"pys",
"rms",
"rsl",
"rsm",
"sdl",
"sfb",
"sfs",
"sgg",
"sgx",
"slf",
"sls",
"sqk",
"sqs",
"ssp",
"ssr",
"svk",
"swl",
"syy",
"tse",
"tsm",
"tsq",
"tss",
"tsy",
"tza",
"ugn",
"ugy",
"ukl",
"uks",
"vgt",
"vsi",
"vsl",
"vsv",
"xki",
"xml",
"xms",
"ygs",
"ysl",
"zib",
"zsl",
}
--[==[ var:
List of languages where a hyphen is not considered a word separator for the `LANG multiword terms` category. There are
numerous reasons why languages are in this list; by each language should be listed the reason for inclusion.
]==]
data.hyphen_not_multiword_sep = list_to_set{
"akk", -- Akkadian; hyphens between syllables
"akl", -- Aklanon; hyphens for mid-word glottal stops
"ber-pro", -- Proto-Berber; morphemes separated by hyphens
"ceb", -- Cebuano; hyphens for mid-word glottal stops
"cnk", -- Khumi Chin; hyphens used in single words
"cpi", -- Chinese Pidgin English; Chinese-derived words with hyphens between syllables
"de", -- German; too many false positives
"esx-esk-pro", -- hyphen used to separate morphemes
"fi", -- Finnish; hyphen used to separate components in compound words if the final and initial vowels match, respectively
"gd", -- Scottish Gaelic; too many false positives like [[a-chianaibh]], [[a-nìos]], [[an-dè]] and other adverbs in a- and an-
"hil", -- Hiligaynon; hyphens for mid-word glottal stops
"hnn", -- Hanunoo; too many false positives
"ilo", -- Ilocano; hyphens for mid-word glottal stops
"kne", -- Kankanaey; hyphens for mid-word glottal stops
"lcp", -- Western Lawa; dash as syllable joiner
"lwl", -- Eastern Lawa; dash as syllable joiner
"mfa", -- Pattani Malay in Thai script; dash as syllable joiner
"mkh-vie-pro", -- Proto-Vietic; morphemes separated by hyphens
"msb", -- Masbatenyo; too many false positives
"tl", -- Tagalog; too many false positives
"war", -- Waray-Waray; too many false positives
"yo", -- Yoruba; hyphens used to show lengthened nasal vowels
}
--[==[ var:
List of languages that will not have `LANG masculine nouns` and similar categories added. Generally, these languages are
lacking gender but use the gender field for other purposes. (This is a massive hack and should be changed.)
]==]
data.no_gender_cat = list_to_set{
-- Languages without gender but which use the gender field for other purposes
"ja",
"th",
}
--[==[ var:
List of languages where [[Module:headword]] should not attempt to generate a transliteration even if the term is written
in a non-Latin script. FIXME: Notate reasons why each language is in this list.
]==]
data.notranslit = list_to_set{
"ams",
"az",
"bbc",
"bug",
"cdo",
"cia",
"cjm",
"cjy",
"cmn",
"cnp",
"cpi",
"cpx",
"csp",
"czh",
"czo",
"gan",
"hak",
"hnm",
"hsn",
"ja",
"kzg",
"lad",
"ltc",
"luh",
"lzh",
"mnp",
"ms",
"mul",
"mvi",
"nan",
"nan-dat",
"nan-hbl",
"nan-hlh",
"nan-lnx",
"nan-tws",
"nan-zhe",
"nan-zsh",
"och",
"oj",
"okn",
"ryn",
"rys",
"ryu",
"sh",
"sjc",
"tgt",
"th",
"tkn",
"tly",
"txg",
"und",
"vi",
"wuu",
"xug",
"yoi",
"yox",
"yue",
"za",
"zh",
"zhx-sic",
"zhx-tai",
}
--[==[ var:
List of languages that will default to `sccat` being true, i.e. categories like `LANG POS in SCRIPT script` will
automatically be generated. This can be overridden using {{para|sccat|0}} in {{tl|head}} or setting `sccat` to
`false` in Lua.
]==]
data.default_sccat = list_to_set{
"inc-apa",
"inc-ash",
"kfr",
"ks",
"mr",
"mwr",
"inc-oaw",
"inc-ohi",
"omr",
"inc-opa",
"phr",
"pi",
"pra",
"sa",
"skr",
"sd",
}
--[==[ var:
List of script codes for which a script-tagged display title will be added.
]==]
data.toBeTagged = list_to_set{
"Ahom",
"Arab",
"fa-Arab",
"glk-Arab",
"kk-Arab",
"ks-Arab",
"ku-Arab",
"mzn-Arab",
"ms-Arab",
"ota-Arab",
"pa-Arab",
"ps-Arab",
"sd-Arab",
"tt-Arab",
"ug-Arab",
"ur-Arab",
"Armi",
"Armn",
"Avst",
"Bali",
"Bamu",
"Batk",
"Beng",
"as-Beng",
"Bopo",
"Brah",
"Brai",
"Bugi",
"Buhd",
"Cakm",
"Cans",
"Cari",
"Cham",
"Cher",
"Copt",
"Cprt",
"Cyrl",
"Cyrs",
"Deva",
"Dsrt",
"Egyd",
"Egyp",
"Ethi",
"Geok",
"Geor",
"Glag",
"Goth",
"Grek",
"Polyt",
"polytonic",
"Gujr",
"Guru",
"Hang",
"Hani",
"Hano",
"Hebr",
"Hira",
"Hluw",
"Ital",
"Java",
"Kali",
"Kana",
"Khar",
"Khmr",
"Knda",
"Kthi",
"Lana",
"Laoo",
"Latn",
"Latf",
"Latg",
"Latnx",
"Latinx",
"pjt-Latn",
"Lepc",
"Limb",
"Linb",
"Lisu",
"Lyci",
"Lydi",
"Mand",
"Mani",
"Marc",
"Merc",
"Mero",
"Mlym",
"Mong",
"mnc-Mong",
"sjo-Mong",
"xwo-Mong",
"Mtei",
"Mymr",
"Narb",
"Nkoo",
"Nshu",
"Ogam",
"Olck",
"Orkh",
"Orya",
"Osma",
"Ougr",
"Palm",
"Phag",
"Phli",
"Phlv",
"Phnx",
"Plrd",
"Prti",
"Rjng",
"Runr",
"Samr",
"Sarb",
"Saur",
"Sgnw",
"Shaw",
"Shrd",
"Sinh",
"Sora",
"Sund",
"Sylo",
"Syrc",
"Tagb",
"Tale",
"Talu",
"Taml",
"Tang",
"Tavt",
"Telu",
"Tfng",
"Tglg",
"Thaa",
"Thai",
"Tibt",
"Ugar",
"Vaii",
"Xpeo",
"Xsux",
"Yiii",
"Zmth",
"Zsym",
"Ipach",
"Music",
"Rumin",
}
--[==[ var:
Parts of speech which will not be categorised in categories like `English terms spelled with É` if the term is the
character in question (e.g. the letter entry for English [[é]]). This contrasts with entries like the French adjective
[[m̂]], which is a one-letter word spelled with the letter.
]==]
data.pos_not_spelled_with_self = list_to_set{
"diacritical marks",
"Ký tự chữ Hán",
"Hán tự",
"Hanja",
"iteration marks",
"Kana",
"Kanji",
"Chữ cái",
"ligatures",
"Văn tự ngữ tố",
"Mora",
"Ký tự số",
"Số",
"Dấu câu",
"syllables",
"Ký tự",
}
------ 2. Lists not converted into sets. ------
--[==[ var:
Recognized aliases for parts of speech (param 2=). Key is the short form and value is the canonical singular (not
pluralized) form. It is singular so the same table can be used in [[Module:form of]] for the {{para|p}}/{{para|POS}}
param and [[Module:links]] for the pos= param. Note that any part of speech, abbreviated or not, can be suffixed with
`f` to generate the corresponding non-lemma form part of speech, such as `adjf`, `af` or `adjectivef` for
`adjective form`, and `nounf` or `nf` for `noun form`. This expansion happens even when it does not make sense for the
given part of speech (e.g. `pclf` expands to `particle form` and `symf` expands to `symbol form`), and currently also,
at least in [[Module:headword]] (but not [[Module:links]]), even if the part before the `f` is not a recognized part of
speech or abbreviation (hence `nerf` expands to `ner form`).
]==]
data.pos_aliases = {
a = "Tính từ",
adj = "Tính từ",
adjective = "Tính từ",
adv = "Phó từ",
adverb = "Phó từ",
art = "Trợ từ",
det = "Từ hạn định",
cnum = "Số đếm",
compadj = "Tính từ so sánh hơn",
compadv = "Phó từ so sánh hơn",
conj = "Liên từ",
conjunction = "Liên từ",
conv = "converb",
hanzi = "Hán tự",
int = "Thán từ",
interj = "Thán từ",
intj = "Thán từ",
interjection = "Thán từ",
letter = "Chữ cái",
n = "Danh từ",
noun = "Danh từ",
num = "Số từ",
numeral = "Số từ",
part = "Phân từ",
pcl = "Trợ từ",
phr = "Cụm từ",
phrase = "Cụm từ",
pn = "Danh từ riêng",
postp = "Yếu tố sau",
pref = "Tiền tố",
prep = "Giới từ",
preposition = "Giới từ",
pron = "Đại từ",
pronoun = "Đại từ",
prop = "Danh từ riêng",
proper = "Danh từ riêng",
propn = "Danh từ riêng",
proverb = "Tục ngữ",
onum = "Số thứ tự",
rom = "Latinh hóa",
romanization = "Latinh hóa",
suf = "Hậu tố",
supadj = "Tính từ so sánh nhất",
supadv = "Phó từ so sánh nhất",
symbol = "Ký tự",
v = "Động từ",
vb = "Động từ",
verb = "Động từ",
vi = "Nội động từ",
vt = "Ngoại động từ",
vti = "Nội và ngoại động từ",
}
--[==[ var:
Map of parts of speech for which categories like `German masculine nouns` or `Russian imperfective verbs` will be
generated if the headword is of the appropriate gender/number. The map is used to canonicalize parts of speech for
categorization purposes; specifically, proper nouns categorizes like nouns.
]==]
data.pos_for_gender_number_cat = {
["Danh từ"] = "Danh từ",
["Danh từ riêng"] = "Danh từ",
["Hậu tố"] = "Hậu tố",
-- We include verbs because impf and pf are valid "genders".
["Động từ"] = "Động từ",
}
--[==[ var:
Lower limit for a "long" word in a particular language. Used to categorize terms into e.g.
[[:Category:Long English words]] automatically. Languages with no mapping here do not get categorized.
]==]
data.long_word_thresholds = {
["af"] = 20,
["bg"] = 20,
["cy"] = 25,
["de"] = 20,
["en"] = 25,
["es"] = 20,
["fr"] = 20,
["ka"] = 20,
["sv"] = 20,
["tl"] = 25,
}
------ 3. Page-wide processing (so that it only needs to be done once per page). ------
data.page = require(headword_page_module).process_page()
-- Set some page properties directly on `data` for ease of use.
data.pagename = data.page.pagename
data.encoded_pagename = data.page.encoded_pagename
return data
bp68c22yrgwtmny43cdlr5eriiq5ble
2512308
2512298
2026-08-08T09:31:41Z
TheHighFighter2
42988
Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2512308
Scribunto
text/plain
local headword_page_module = "Module:headword/page"
local list_to_set = require("Module:table").listToSet
local data = {}
------ 1. Lists which are converted into sets. ------
--[==[ var:
Large pages where we disable label tracking, red link checking and similar.
]==]
data.large_pages = list_to_set {
-- pages that consistently hit timeouts
"a",
-- pages that sometimes hit timeouts
"A",
"baba",
"de",
"e",
"i",
"lima",
"o",
"u",
"и",
"山",
"子",
"月",
"一",
"人",
}
--[==[ var:
Map from singular to plural, and from plural to itself, for recognized parts of speech with irregular plurals. Most of
these are invariable plurals, e.g. `kanji` is its own plural; but we also have `mora` plural `morae`.
]==]
data.irregular_plurals = list_to_set({
"cmavo",
"cmene",
"fu'ivla",
"gismu",
"Hán tự",
"Hanja",
"Việt bính",
"Kana",
"Kanji",
"lujvo",
"Từ điển đàm thoại",
"Bính âm Hán ngữ",
"rafsi",
}, function(_, item)
return item
end)
local irregular_plurals = data.irregular_plurals
-- Irregular non-zero plurals AND any regular plurals where the singular ends in "s",
-- because the module assumes that inputs ending in "s" are plurals. The singular and
-- plural both need to be added, as the module will generate a default plural if
-- the input doesn't match a key in this table.
for sg, pl in next, {
mora = "mora"
} do
irregular_plurals[sg], irregular_plurals[pl] = pl, pl
end
--[==[ var:
Recognized lemmas. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the category
'LANG lemmas' will automatically be added. If the part of speech is not a singular or plural lemma or non-lemma form and
is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added to various tracking
categories:
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANG]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS]]
* [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/pos/POS/LANG]]
]==]
data.lemmas = list_to_set{
"abbreviations",
"acronyms",
"Tính từ",
"Danh tính từ",
"adpositions",
"Phó từ",
"Phụ tố",
"ambipositions",
"Mạo từ",
"circumfixes",
"circumpositions",
"Loại từ",
"cmavo",
"cmavo clusters",
"cmene",
"combining forms",
"Liên từ",
"Lượng từ",
"Từ hạn định",
"Dấu phụ",
"digraphs",
"Tính từ cách bằng",
"fu'ivla",
"gismu",
"Hán tự",
"Hanja",
"ideophones",
"Thành ngữ",
"Trung tố",
"initialisms",
"iteration marks",
"interfixes",
"Thán từ",
"Kana",
"Kanji",
"Chữ cái",
"ligatures",
"Văn tự ngữ tố",
"lujvo",
"Mora",
"Hình vị",
"non-constituents",
"Danh từ",
"Số",
"Ký hiệu số",
"Số từ",
"Trợ từ",
"Cụm từ",
"Yếu tố sau",
"Cụm yếu tố sau",
"predicatives",
"Tiền tố",
"Cụm giới từ",
"Giới từ",
"preverbs",
"pronominal adverbs",
"Đại từ",
"Danh từ riêng",
"Tục ngữ",
"Dấu câu",
"relatives",
"Gốc từ",
"Thân từ",
"Hậu tố",
"syllables",
"Ký hiệu",
"Động từ",
}
--[==[ var:
Recognized non-lemma forms. If the part of speech in {{tl|head}} is set to one of these or its singular equivalent, the
category 'LANG non-lemma forms' will automatically be added. If the part of speech is not a singular or plural lemma or
non-lemma form and is not an abbreviation that expands to a recognized lemma or non-lemma form, the page will be added
to various tracking categories; see the documentation of `data.lemmas`.
]==]
data.nonlemmas = list_to_set{
"Biến thể hình thái phân từ chủ động",
"Phân từ chủ động",
"Tính phân từ",
"adjective case forms",
"Biến thể hình thái tính từ",
"adjective feminine forms",
"adjective plural forms",
"Biến thể hình thái phó từ",
"Phó phân từ",
"Phân từ tác nhân",
"Biến thể hình thái mạo từ",
"circumfix forms",
"combined forms",
"Biến thể hình thái tính từ so sánh hơn",
"Tính từ so sánh hơn",
"comparative adverb forms",
"comparative adverbs",
"conjunction forms",
"contractions",
"converbs",
"Biến thể hình thái từ hạn định so sánh hơn",
"Biến thể hình thái từ hạn định",
"Biến thể hình thái từ hạn định so sánh nhất",
"Danh từ giảm nhẹ",
"elative adjectives",
"equative adjective forms",
"equative adjectives",
"future participles",
"Động danh từ",
"Dạng nguyên mẫu",
"infinitives",
"interjection forms",
"Việt bính",
"Từ sai chính tả",
"Phân từ phủ định",
"nominal participles",
"noun case forms",
"noun dual forms",
"Biến thể hình thái danh từ",
"noun paucal forms",
"noun plural forms",
"noun possessive forms",
"noun singulative forms",
"Biến thể hình thái số từ",
"Phân từ",
"Biến thể hình thái phân từ",
"Biến thể hình thái trợ từ",
"Phân từ bị động",
"Phân tính từ bị động",
"Phân từ quá khứ chủ động",
"Phân phó từ quá khứ",
"Phân từ quá khứ",
"Biến thể hình thái phân từ quá khứ",
"Phân từ bị động quá khứ",
"Phân từ hoàn thành chủ động",
"Phân từ hoàn thành",
"Phân từ hoàn thành bị động",
"Bính âm Hán ngữ",
"Số nhiều",
"Biến thể hình thái yếu tố sau",
"Biến thể hình thái tiền tố",
"preposition contractions",
"preposition forms",
"prepositional pronouns",
"Phân từ hoàn thành",
"present adverbial participles",
"Phân từ hiện tại",
"Phân từ hiện tại chủ động",
"Phân từ hiện tại bị động",
"preverb forms",
"Biến thể hình thái đại từ",
"pronoun possessive forms",
"Biến thể hình thái danh từ riêng",
"proper noun plural forms",
"rafsi",
"Latinh hóa",
"root forms",
"singulatives",
"Biến thể hình thái hậu tố",
"Biến thể hình thái tính từ so sánh nhất",
"Tính từ so sánh nhất",
"Biến thể hình thái phó từ so sánh nhất",
"Phó từ so sánh nhất",
"Biến thể hình thái động từ",
"Danh động từ",
}
--[==[ var:
List of languages that will not have links to separate parts of the headword.
]==]
data.no_multiword_links = list_to_set{
"zh",
}
--[==[ var:
List of languages that will not have `LANG multiword terms` categories added. There are various reasons why languages
are in this list: (a) words are written without spaces between them; (b) syllables are written with spaces between them;
(c) variant reconstructions are notated with a tilde surrounded by spaces; (d) the language is a sign language, where
pagenames are multiword descriptions of the gesture(s) required to make an individual sign; (e) some other weirdnesses.
]==]
data.no_multiword_cat = list_to_set{
-------- Languages without spaces between words (sometimes spaces between phrases) --------
"blt", -- Tai Dam
"ja", -- Japanese
"khb", -- Lü
"km", -- Khmer
"lo", -- Lao
"mnw", -- Mon
"my", -- Burmese
"nan", -- Min Nan (some words in Latin script; hyphens between syllables)
"nan-hbl", -- Hokkien (some words in Latin script; hyphens between syllables)
"nod", -- Northern Thai
"ojp", -- Old Japanese
"shn", -- Shan
"sou", -- Southern Thai
"tdd", -- Tai Nüa
"th", -- Thai
"tts", -- Isan
"twh", -- Tai Dón
"txg", -- Tangut
"zh", -- Chinese (all varieties with Chinese characters)
"zkt", -- Khitan
-------- Languages with spaces between syllables --------
"ahk", -- Akha
"aou", -- A'ou
"atb", -- Zaiwa
"byk", -- Biao
"cdy", -- Chadong
--"duu", -- Drung; not sure
--"hmx-pro", -- Proto-Hmong-Mien
--"hnj", -- Green Hmong; not sure
"huq", -- Tsat
"ium", -- Iu Mien
--"lis", -- Lisu; not sure
"mtq", -- Muong
--"mww", -- White Hmong; not sure
"onb", -- Lingao
--"sit-gkh", -- Gokhy; not sure
--"swi", -- Sui; not sure
"tbq-lol-pro", -- Proto-Loloish
"tdh", -- Thulung
"ukk", -- Muak Sa-aak
"vi", -- Vietnamese
"yig", -- Wusa Nasu
"zng", -- Mang
-------- Languages with ~ with surrounding spaces used to separate variants --------
"mkh-ban-pro", -- Proto-Bahnaric
"sit-pro", -- Proto-Sino-Tibetan; listed above
-------- Other weirdnesses --------
"mul", -- Translingual; gestures, Morse code, etc.
"aot", -- Atong (India); bullet is a letter
-------- All sign languages --------
"ads",
"aed",
"aen",
"afg",
"ase",
"asf",
"asp",
"asq",
"asw",
"bfi",
"bfk",
"bog",
"bqn",
"bqy",
"bvl",
"bzs",
"cds",
"csc",
"csd",
"cse",
"csf",
"csg",
"csl",
"csn",
"csq",
"csr",
"doq",
"dse",
"dsl",
"ecs",
"esl",
"esn",
"eso",
"eth",
"fcs",
"fse",
"fsl",
"fss",
"gds",
"gse",
"gsg",
"gsm",
"gss",
"gus",
"hab",
"haf",
"hds",
"hks",
"hos",
"hps",
"hsh",
"hsl",
"icl",
"iks",
"ils",
"inl",
"ins",
"ise",
"isg",
"isr",
"jcs",
"jhs",
"jls",
"jos",
"jsl",
"jus",
"kgi",
"kvk",
"lbs",
"lls",
"lsl",
"lso",
"lsp",
"lst",
"lsy",
"lws",
"mdl",
"mfs",
"mre",
"msd",
"msr",
"mzc",
"mzg",
"mzy",
"nbs",
"ncs",
"nsi",
"nsl",
"nsp",
"nsr",
"nzs",
"okl",
"pgz",
"pks",
"prl",
"prz",
"psc",
"psd",
"psg",
"psl",
"pso",
"psp",
"psr",
"pys",
"rms",
"rsl",
"rsm",
"sdl",
"sfb",
"sfs",
"sgg",
"sgx",
"slf",
"sls",
"sqk",
"sqs",
"ssp",
"ssr",
"svk",
"swl",
"syy",
"tse",
"tsm",
"tsq",
"tss",
"tsy",
"tza",
"ugn",
"ugy",
"ukl",
"uks",
"vgt",
"vsi",
"vsl",
"vsv",
"xki",
"xml",
"xms",
"ygs",
"ysl",
"zib",
"zsl",
}
--[==[ var:
List of languages where a hyphen is not considered a word separator for the `LANG multiword terms` category. There are
numerous reasons why languages are in this list; by each language should be listed the reason for inclusion.
]==]
data.hyphen_not_multiword_sep = list_to_set{
"akk", -- Akkadian; hyphens between syllables
"akl", -- Aklanon; hyphens for mid-word glottal stops
"ber-pro", -- Proto-Berber; morphemes separated by hyphens
"ceb", -- Cebuano; hyphens for mid-word glottal stops
"cnk", -- Khumi Chin; hyphens used in single words
"cpi", -- Chinese Pidgin English; Chinese-derived words with hyphens between syllables
"de", -- German; too many false positives
"esx-esk-pro", -- hyphen used to separate morphemes
"fi", -- Finnish; hyphen used to separate components in compound words if the final and initial vowels match, respectively
"gd", -- Scottish Gaelic; too many false positives like [[a-chianaibh]], [[a-nìos]], [[an-dè]] and other adverbs in a- and an-
"hil", -- Hiligaynon; hyphens for mid-word glottal stops
"hnn", -- Hanunoo; too many false positives
"ilo", -- Ilocano; hyphens for mid-word glottal stops
"kne", -- Kankanaey; hyphens for mid-word glottal stops
"lcp", -- Western Lawa; dash as syllable joiner
"lwl", -- Eastern Lawa; dash as syllable joiner
"mfa", -- Pattani Malay in Thai script; dash as syllable joiner
"mkh-vie-pro", -- Proto-Vietic; morphemes separated by hyphens
"msb", -- Masbatenyo; too many false positives
"tl", -- Tagalog; too many false positives
"war", -- Waray-Waray; too many false positives
"yo", -- Yoruba; hyphens used to show lengthened nasal vowels
}
--[==[ var:
List of languages that will not have `LANG masculine nouns` and similar categories added. Generally, these languages are
lacking gender but use the gender field for other purposes. (This is a massive hack and should be changed.)
]==]
data.no_gender_cat = list_to_set{
-- Languages without gender but which use the gender field for other purposes
"ja",
"th",
}
--[==[ var:
List of languages where [[Module:headword]] should not attempt to generate a transliteration even if the term is written
in a non-Latin script. FIXME: Notate reasons why each language is in this list.
]==]
data.notranslit = list_to_set{
"ams",
"az",
"bbc",
"bug",
"cdo",
"cia",
"cjm",
"cjy",
"cmn",
"cnp",
"cpi",
"cpx",
"csp",
"czh",
"czo",
"gan",
"hak",
"hnm",
"hsn",
"ja",
"kzg",
"lad",
"ltc",
"luh",
"lzh",
"mnp",
"ms",
"mul",
"mvi",
"nan",
"nan-dat",
"nan-hbl",
"nan-hlh",
"nan-lnx",
"nan-tws",
"nan-zhe",
"nan-zsh",
"och",
"oj",
"okn",
"ryn",
"rys",
"ryu",
"sh",
"sjc",
"tgt",
"th",
"tkn",
"tly",
"txg",
"und",
"vi",
"wuu",
"xug",
"yoi",
"yox",
"yue",
"za",
"zh",
"zhx-sic",
"zhx-tai",
}
--[==[ var:
List of languages that will default to `sccat` being true, i.e. categories like `LANG POS in SCRIPT script` will
automatically be generated. This can be overridden using {{para|sccat|0}} in {{tl|head}} or setting `sccat` to
`false` in Lua.
]==]
data.default_sccat = list_to_set{
"inc-apa",
"inc-ash",
"kfr",
"ks",
"mr",
"mwr",
"inc-oaw",
"inc-ohi",
"omr",
"inc-opa",
"phr",
"pi",
"pra",
"sa",
"skr",
"sd",
}
--[==[ var:
List of script codes for which a script-tagged display title will be added.
]==]
data.toBeTagged = list_to_set{
"Ahom",
"Arab",
"fa-Arab",
"glk-Arab",
"kk-Arab",
"ks-Arab",
"ku-Arab",
"mzn-Arab",
"ms-Arab",
"ota-Arab",
"pa-Arab",
"ps-Arab",
"sd-Arab",
"tt-Arab",
"ug-Arab",
"ur-Arab",
"Armi",
"Armn",
"Avst",
"Bali",
"Bamu",
"Batk",
"Beng",
"as-Beng",
"Bopo",
"Brah",
"Brai",
"Bugi",
"Buhd",
"Cakm",
"Cans",
"Cari",
"Cham",
"Cher",
"Copt",
"Cprt",
"Cyrl",
"Cyrs",
"Deva",
"Dsrt",
"Egyd",
"Egyp",
"Ethi",
"Geok",
"Geor",
"Glag",
"Goth",
"Grek",
"Polyt",
"polytonic",
"Gujr",
"Guru",
"Hang",
"Hani",
"Hano",
"Hebr",
"Hira",
"Hluw",
"Ital",
"Java",
"Kali",
"Kana",
"Khar",
"Khmr",
"Knda",
"Kthi",
"Lana",
"Laoo",
"Latn",
"Latf",
"Latg",
"Latnx",
"Latinx",
"pjt-Latn",
"Lepc",
"Limb",
"Linb",
"Lisu",
"Lyci",
"Lydi",
"Mand",
"Mani",
"Marc",
"Merc",
"Mero",
"Mlym",
"Mong",
"mnc-Mong",
"sjo-Mong",
"xwo-Mong",
"Mtei",
"Mymr",
"Narb",
"Nkoo",
"Nshu",
"Ogam",
"Olck",
"Orkh",
"Orya",
"Osma",
"Ougr",
"Palm",
"Phag",
"Phli",
"Phlv",
"Phnx",
"Plrd",
"Prti",
"Rjng",
"Runr",
"Samr",
"Sarb",
"Saur",
"Sgnw",
"Shaw",
"Shrd",
"Sinh",
"Sora",
"Sund",
"Sylo",
"Syrc",
"Tagb",
"Tale",
"Talu",
"Taml",
"Tang",
"Tavt",
"Telu",
"Tfng",
"Tglg",
"Thaa",
"Thai",
"Tibt",
"Ugar",
"Vaii",
"Xpeo",
"Xsux",
"Yiii",
"Zmth",
"Zsym",
"Ipach",
"Music",
"Rumin",
}
--[==[ var:
Parts of speech which will not be categorised in categories like `English terms spelled with É` if the term is the
character in question (e.g. the letter entry for English [[é]]). This contrasts with entries like the French adjective
[[m̂]], which is a one-letter word spelled with the letter.
]==]
data.pos_not_spelled_with_self = list_to_set{
"diacritical marks",
"Ký tự chữ Hán",
"Hán tự",
"Hanja",
"iteration marks",
"Kana",
"Kanji",
"Chữ cái",
"ligatures",
"Văn tự ngữ tố",
"Mora",
"Ký hiệu số",
"Số",
"Dấu câu",
"syllables",
"Ký hiệu",
}
------ 2. Lists not converted into sets. ------
--[==[ var:
Recognized aliases for parts of speech (param 2=). Key is the short form and value is the canonical singular (not
pluralized) form. It is singular so the same table can be used in [[Module:form of]] for the {{para|p}}/{{para|POS}}
param and [[Module:links]] for the pos= param. Note that any part of speech, abbreviated or not, can be suffixed with
`f` to generate the corresponding non-lemma form part of speech, such as `adjf`, `af` or `adjectivef` for
`adjective form`, and `nounf` or `nf` for `noun form`. This expansion happens even when it does not make sense for the
given part of speech (e.g. `pclf` expands to `particle form` and `symf` expands to `symbol form`), and currently also,
at least in [[Module:headword]] (but not [[Module:links]]), even if the part before the `f` is not a recognized part of
speech or abbreviation (hence `nerf` expands to `ner form`).
]==]
data.pos_aliases = {
a = "Tính từ",
adj = "Tính từ",
adjective = "Tính từ",
adv = "Phó từ",
adverb = "Phó từ",
art = "Trợ từ",
det = "Từ hạn định",
cnum = "Số đếm",
compadj = "Tính từ so sánh hơn",
compadv = "Phó từ so sánh hơn",
conj = "Liên từ",
conjunction = "Liên từ",
conv = "converb",
hanzi = "Hán tự",
int = "Thán từ",
interj = "Thán từ",
intj = "Thán từ",
interjection = "Thán từ",
letter = "Chữ cái",
n = "Danh từ",
noun = "Danh từ",
num = "Số từ",
numeral = "Số từ",
part = "Phân từ",
pcl = "Trợ từ",
phr = "Cụm từ",
phrase = "Cụm từ",
pn = "Danh từ riêng",
postp = "Yếu tố sau",
pref = "Tiền tố",
prep = "Giới từ",
preposition = "Giới từ",
pron = "Đại từ",
pronoun = "Đại từ",
prop = "Danh từ riêng",
proper = "Danh từ riêng",
propn = "Danh từ riêng",
proverb = "Tục ngữ",
onum = "Số thứ tự",
rom = "Latinh hóa",
romanization = "Latinh hóa",
suf = "Hậu tố",
supadj = "Tính từ so sánh nhất",
supadv = "Phó từ so sánh nhất",
symbol = "Ký hiệu",
v = "Động từ",
vb = "Động từ",
verb = "Động từ",
vi = "Nội động từ",
vt = "Ngoại động từ",
vti = "Nội và ngoại động từ",
}
--[==[ var:
Map of parts of speech for which categories like `German masculine nouns` or `Russian imperfective verbs` will be
generated if the headword is of the appropriate gender/number. The map is used to canonicalize parts of speech for
categorization purposes; specifically, proper nouns categorizes like nouns.
]==]
data.pos_for_gender_number_cat = {
["Danh từ"] = "Danh từ",
["Danh từ riêng"] = "Danh từ",
["Hậu tố"] = "Hậu tố",
-- We include verbs because impf and pf are valid "genders".
["Động từ"] = "Động từ",
}
--[==[ var:
Lower limit for a "long" word in a particular language. Used to categorize terms into e.g.
[[:Category:Long English words]] automatically. Languages with no mapping here do not get categorized.
]==]
data.long_word_thresholds = {
["af"] = 20,
["bg"] = 20,
["cy"] = 25,
["de"] = 20,
["en"] = 25,
["es"] = 20,
["fr"] = 20,
["ka"] = 20,
["sv"] = 20,
["tl"] = 25,
}
------ 3. Page-wide processing (so that it only needs to be done once per page). ------
data.page = require(headword_page_module).process_page()
-- Set some page properties directly on `data` for ease of use.
data.pagename = data.page.pagename
data.encoded_pagename = data.page.encoded_pagename
return data
501tqlrymognm7eqe0ihb1ypdtb2gmc
Bản mẫu:accent/doc
10
261551
2512190
2198436
2026-08-07T16:22:37Z
Hiyuune
50834
/* Cách sử dụng */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512190
wikitext
text/x-wiki
{{Trang tài liệu}}
<!-- XIN HÃY THÊM THỂ LOẠI VÀ INTERWIKI VÀO PHÍA DƯỚI TRANG NÀY -->
{{shortcut|Bản mẫu:a}}
=== Cách sử dụng ===
Bản mẫu này dùng để chỉ ra một chất giọng cụ thể trong cách phát âm.
<nowiki>
* {{a|en|RP}} {{IPA|en|/wɜːd/}}
* {{a|en|GA|Canada}} {{enPR|wûrd}}, {{IPA|en|/wɝd/}}</nowiki>
:* {{a|en|RP}} {{IPA|en|/wɜːd/}}
:* {{a|en|GA|Canada}} {{enPR|wûrd}}, {{IPA|en|/wɝd/}}
=== Xem thêm ===
Đối với các trường hợp khác, các bản mẫu sau được ưu tiên:
* Thêm nhãn vào đầu định nghĩa để cung cấp thông tin ngắn gọn về cách sử dụng, hãy sử dụng {{temp|context}}.
* Sử dụng {{temp|qualifier}} đối với những trường hợp một mục trong danh sách với một thứ gì đó khác.
<includeonly>
<!-- THỂ LOẠI VÀ INTERWIKI TẠI ĐÂY, CẢM ƠN -->
[[Thể loại:Bản mẫu cách phát âm]]
</includeonly>
65fqvypg4fz13bv03drot02qw80rc8x
Thể loại:Ký hiệu đa ngữ
14
261746
2512312
2264896
2026-08-08T09:48:08Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự đa ngữ]] thành [[Thể loại:Ký hiệu đa ngữ]]: Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2264896
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
lanitra
0
267079
2512194
2330909
2026-08-07T16:26:12Z
Hiyuune
50834
/* Tiếng Malagasy */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512194
wikitext
text/x-wiki
=={{langname|mg}}==
{{wp|mg:Lanitra (finoana),lanitra}}
[[Tập tin:Sky over Washington Monument.JPG|256x256px|phải]]
==={{ĐM|etym}}===
Từ {{der|mg|poz-pro|*laŋit}}, từ {{der|mg|map-pro|*laŋiC}}. So sánh {{cog|ms|langit}}, {{cog|mhy|langit}}, {{cog|mi|rangi}}.
==={{ĐM|pron}}===
* {{audio|mg|Mg-lanitra.ogg}}
==={{ĐM|n}}===
{{head|mg|Danh từ}}
# [[trời|Trời]], [[bầu trời]], [[thiên đàng]].
#:{{ux|mg|Tamin'ny voalohany Andriamanitra nahary ny '''lanitra''' sy ny tany.|Ban đầu, Đức Chúa Trời dựng nên '''trời''' đất. ([[s:Sáng thế ký/Chương 1|Sáng 1:1]])|ref=<ref>{{Chú thích web|url=https://nybaiboly.net/Bible/BibleMalagasyHtm-at01-Genese.htm|title=Baiboly - Genesisy|work=Henoy Ny Baiboly|date=}}</ref>}}
==={{ĐM|ref}}===
{{tham khảo}}
6eadfyt8yqjiyp3wozwnv1zskjfhxct
2512203
2512194
2026-08-08T01:56:46Z
Hiyuune
50834
/* Tiếng Malagasy */
2512203
wikitext
text/x-wiki
=={{langname|mg}}==
{{wp|mg:+ (finoana),+}}
[[Tập tin:Sky over Washington Monument.JPG|256x256px|phải]]
==={{ĐM|etym}}===
Từ {{der|mg|poz-pro|*laŋit}}, từ {{der|mg|map-pro|*laŋiC}}. So sánh {{cog|ms|langit}}, {{cog|mhy|langit}}, {{cog|mi|rangi}}.
==={{ĐM|pron}}===
* {{audio|mg|Mg-lanitra.ogg}}
==={{ĐM|n}}===
{{head|mg|Danh từ}}
# [[trời|Trời]], [[bầu trời]], [[thiên đàng]].
#:{{ux|mg|Tamin'ny voalohany Andriamanitra nahary ny '''lanitra''' sy ny tany.|Ban đầu, Đức Chúa Trời dựng nên '''trời''' đất. ([[s:Sáng thế ký/Chương 1|Sáng 1:1]])|ref=<ref>{{Chú thích web|url=https://nybaiboly.net/Bible/BibleMalagasyHtm-at01-Genese.htm|title=Baiboly - Genesisy|work=Henoy Ny Baiboly|date=}}</ref>}}
==={{ĐM|ref}}===
{{tham khảo}}
da7vkbmf5x6glt37gv09nh86hcex4dp
pá
0
270399
2512252
2345870
2026-08-08T02:28:03Z
WhoAlone
40420
2512252
wikitext
text/x-wiki
{{-nut-}}
{{-noun-}}
{{pn}}
# {{context|Nùng Inh}} [[bác gái]].
{{-ref-}}
* [http://ttoeduclass.weebly.com/uploads/3/1/7/7/31776665/du_lieu_tu_dien_viet_tay_nung.pdf DỮ LIỆU TỪ ĐIỂN VIỆT - TÀY-NÙNG].
[[Thể loại:Danh từ tiếng Nùng]]
=={{langname|enc}}==
==={{ĐM|noun}}===
{{head|enc|Danh từ}}
# [[bố]].
{{-ref-}}
* Xuân Lam (5 tháng 12 năm 2021) [https://baocaobang.vn/Van-hoa/An-so-kho-tram-tich-van-hoa-nguoi-Nung-Ven-duy-nhat-o-Cao-Bang/85715.bcb “Ẩn số” kho trầm tích văn hóa người Nùng Vẻn duy nhất ở Cao Bằng]. ''Báo Cao Bằng điện tử''.
{{c|enc|Gia đình}}
{{-tyz-}}
{{-pron-}}
{{tyz-IPA}}
{{-noun-}}
{{pn}}
# [[bụi]], [[khóm]], [[bãi]].
{{-ref-}}
{{R:Lương Bèn}}
{{catname|Danh từ|tiếng Tày}}
=={{langname|tdr}}==
==={{ĐM|verb}}===
{{head|tdr|Động từ}}
# [[đẵn]] [[gỗ]].
==={{ĐM|ref}}===
* Gregerson, Kenneth J. và Smith, Kenneth D. (1973). ''The development of Todrah register''. SIL International.
0bmocihbkh6ubbqdp2nn8p9xz8zneaj
사닥다리
0
271072
2512156
2074039
2026-08-07T14:46:01Z
Kelly zhrm
58416
2512156
wikitext
text/x-wiki
=={{langname|ko}}==
==={{ĐM|pron}}===
{{ko-IPA}}
==={{ĐM|n}}===
{{ko-noun}}
# [[thang|Thang]].
===={{ĐM|syn}}====
* {{ko-l|사다리}}
nx9xasl6goju93cb2ben917uo0xlsgb
Mô đun:hu-pron
828
275028
2512153
2256142
2026-08-07T14:42:57Z
Hiyuune
50834
2512153
Scribunto
text/plain
local export = {}
local gsub = mw.ustring.gsub
local match = mw.ustring.match
local replace_set = {
[1] = {
['c'] = 'ʦ',
['cssz'] = 'ʧṡ', ['szsz'] = 'ṡṡ', ['tssz'] = 'ʦʦ', ['zssz'] = 'sṡ',
['ggy'] = 'ɟɟ', ['nny'] = 'ɲɲ', ['[dt]ty'] = 'cc',
},
[2] = {
['dzs'] = 'ʤ', ['ddzs'] = 'ʤʤ', ['ssz'] = 'ṡṡ', ['szs'] = 'ss',
['tsz'] = 'ʦʦ', ['dsz'] = 'ʦʦ', ['tts'] = 'ʧʧ',
['gysz'] = 'cṡ', ['ttysz'] = 'ʦʦ', ['ttʦ'] = 'ʦʦ',
['ngy'] = 'ɲɟ', ['ʦszs'] = 'ʤʒ',
['gyj'] = 'ɟɟ', ['nyj'] = 'ɲɲ', ['tyj'] = 'cc',
['llj'] = 'jj', ['ttj'] = 'cc',
['lr'] = 'rr',
},
[3] = {
['ʦs'] = 'ʧ', ['dz'] = 'ʣ',
['gy'] = 'ɟ', ['ly'] = 'j', ['ny'] = 'ɲ',
['ty'] = 'c', ['lj'] = 'jj', ['nj'] = 'ɲɲ',
['tj'] = 'cc', ['dj'] = 'ɟɟ', ['tʦ'] = 'ʦʦ',
['dʦ'] = 'ʦʦ', ['ts'] = 'ʧʧ', ['ds'] = 'ʧʧ',
['gys'] = 'cʃ', ['gycs'] = 'cʧ',
['qu'] = 'kv', ['sz'] = 'ṡ', ['z#s'] = 'ʃʃ', ['zs'] = 'ʒ',
},
[4] = {
['s'] = 'ʃ', ['ʦʧ'] = 'ʧʧ',
['w'] = 'v', ['x'] = 'kṡ',
},
}
local replace_cons = {
['c'] = 'ʦ', ['cs'] = 'ʧ', ['ccs'] = 'ʧʧ', ['cszs'] = 'ʤʒ', ['cssz'] = 'ʧṡ',
['dc'] = 'ʦʦ', ['dj'] = 'ɟɟ', ['ds'] = 'ʧʧ', ['dsz'] = 'ʦʦ', ['dty'] = 'cc',
['dz'] = 'ʣ', ['ddz'] = 'ʣʣ',
['dzs'] = 'ʤ', ['ddzs'] = 'ʤʤ', ['dzssz'] = 'ʧs',
['gy'] = 'ɟ', ['ggy'] = 'ɟɟ', ['gycs'] = 'cʧ', ['gyj'] = 'ɟɟ', ['gys'] = 'cʃ', ['gysz'] = 'cṡ',
['lj'] = 'jj', ['llj'] = 'jj', ['lr'] = 'rr', ['llr'] = 'rr', ['ly'] = 'j',
['ngy'] = 'ɲɟ', ['nj'] = 'ɲɲ', ['nny'] = 'ɲɲ', ['ny'] = 'ɲ', ['nyj'] = 'ɲɲ',
['q'] = 'k',
['s'] = 'ʃ', ['ssz'] = 'ṡṡ', ['sz'] = 'ṡ', ['szs'] = 'ʃʃ', ['szsz'] = 'ṡṡ',
['tc'] = 'ʦʦ', ['tj'] = 'cc', ['ts'] = 'ʧʧ', ['tssz'] = 'ʦʦ', ['tsz'] = 'ʦʦ',
['ttc'] = 'ʦʦ', ['ttj'] = 'cc', ['tts'] = 'ʧʧ',
['tty'] = 'cc', ['ty'] = 'c', ['tyj'] = 'cc',
['w'] = 'v',
['x'] = 'kṡ',
['zs'] = 'ʒ', ['zzs'] = 'ʒʒ', ['z#s'] = 'ʃʃ', ['zssz'] = 'ʃs',
}
local replace_vowels = {
['y'] = 'i',
['a'] = 'ɒ', ['á'] = 'aː', ['ȧ'] = 'a',
['e'] = 'ɛ', ['é'] = 'eː', ['ë'] = 'e',
['i'] = 'i', ['í'] = 'iː',
['o'] = 'o', ['ó'] = 'oː',
['ö'] = 'ø', ['ő'] = 'øː',
['u'] = 'u', ['ú'] = 'uː',
['ü'] = 'y', ['ű'] = 'yː',
}
local back_replace = {
['ʦ'] = 't͡s', ['ʣ'] = 'd͡z',
['ʧ'] = 't͡ʃ', ['ʤ'] = 'd͡ʒ',
['ṡ'] = 's',
['g'] = 'ɡ', ['χ'] = 'x',
['#'] = '',
}
local nasal_assim = {
['k'] = 'ŋ', ['g'] = 'ŋ',
['c'] = 'ɲ', ['ɟ'] = 'ɲ', ['ɲ'] = 'ɲ',
['f'] = 'ɱ', ['v'] = 'ɱ',
['p'] = 'm', ['b'] = 'm', ['m'] = 'm',
}
local voicing_assim = {
['devoicing'] = {
['b'] = 'p', ['v'] = 'f',
['d'] = 't', ['z'] = 'ṡ', ['ʣ'] = 'ʦ',
['ʒ'] = 'ʃ', ['ʤ'] = 'ʧ',
['ɟ'] = 'c', ['ʝ'] = 'ç',
['g'] = 'k',
},
['voicing'] = {
['p'] = 'b', ['f'] = 'v',
['t'] = 'd', ['ṡ'] = 'z', ['ʦ'] = 'ʣ',
['ʃ'] = 'ʒ', ['ʧ'] = 'ʤ',
['c'] = 'ɟ',
['k'] = 'g',
},
}
local sonorant = {
['m'] = true, ['n'] = true, ['ny'] = true,
['l'] = true, ['j'] = true, ['r'] = true,
}
local unstressed_words = {
-- indefinite articles liaise with the following word
{'ɒ', 'liaise_next'}, -- indef. article 'a'
{'ɒz', 'liaise_next'}, -- indef. article 'az'
-- these particles liaise with the preceding word (when followed by a space, to avoid other words starting with these letters being involved)
{'iʃ', 'liaise_prev'}, -- 'is'
{'ʃɛ', 'liaise_prev'}, -- 'se'
{'ʃɛm', 'liaise_prev'}, -- 'sem'
{'hɒ', 'liaise_prev'}, -- 'ha'
-- conjuntions/relative pronouns lose their accents (no need to liaise in either direction)
{'vɒɟ', 'liaise_none'}, -- 'vagy'
{'dɛ', 'liaise_none'}, -- 'de'
{'hoɟ', 'liaise_none'}, -- 'hogy' (although it may be stressed too in certain senses)
{'ɒmi', 'liaise_none'}, -- 'ami'
{'ɒki', 'liaise_none'}, -- 'aki'
{'ɒhol', 'liaise_none'}, -- 'ahol'
{'mint', 'liaise_none'}, -- 'mint'
{'eːʃ', 'liaise_none'}, -- 'és'
-- these particles which take focus remove the accent on the following word
{'nɛm', 'remove_next'}, -- 'nem'
{'nɛ', 'remove_next'}, -- 'ne'
}
function export.IPA(frame)
local args = type(frame) == 'string' and { frame } or frame:getParent().args
local result = {}
if args['phon'] and args['phon'] ~= '' then
args = { args['phon'] }
end
args = (not args[1]) and { mw.loadData("Module:headword/data").pagename } or args
for _, text in ipairs(args) do
text = mw.ustring.lower(text)
local non_i, i_vowels, vowels = '([aeouëöüáéóőúű])', '([iíé])', '([aeiouëöüáéíóőúű])'
if mw.ustring.len(gsub(text, '[^ ]', '')) == 1 then
text = gsub(text, ' ', '#')
end
-- j-allophony
text = gsub(text, '([fkp])j$', '%1ç')
text = gsub(text, '([bvgrm])j(#?)(.?)', function(prev, sep, succ)
return (succ == '' or not match(succ, vowels)) and (prev .. 'ʝ' .. sep .. succ) or (prev .. 'j' .. sep .. succ) end)
-- h-allophony
local post_conv = {}
for word in mw.text.gsplit(text, " ", true) do
word = gsub(word, 'ch$', 'χχ')
word = gsub(word, 'ch#', 'χχ#')
word = gsub(word, '(.)c(h[eoö]z)$', '%1c#%2')
word = gsub(word, vowels .. 'hh' .. vowels, '%1χχ%2')
word = gsub(word, vowels .. 'cch' .. vowels, '%1χχ%2')
word = gsub(word, 'ch', 'h')
word = gsub(word, '(.?)(.?)h(.?)', function(penul, prev, succ)
if prev == '' and penul ~= '' then
prev, penul = penul, ''
end
if succ == '' or match(succ, '[bcdfghjklmnprstvwxyz]') then
return penul .. prev .. 'χ' .. succ
elseif match(succ, vowels) and (match(prev, vowels) and prev ~= succ) or (sonorant[prev] or sonorant[penul..prev]) then
return penul .. prev .. 'ɦ' .. succ
else
return penul .. prev .. 'h' .. succ
end end)
table.insert(post_conv, word)
end
text = table.concat(post_conv, " ")
-- adding hiatus 'j'
text = gsub(text, non_i .. i_vowels, '%1j%2')
text = gsub(text, i_vowels .. non_i, '%1j%2')
-- converting to IPA symbols
text = gsub(text, '([bcdfghjklmnprstvwxyz#]+)', function(cons_clus)
if replace_cons[cons_clus] then
return replace_cons[cons_clus]
else
for i = 1, 4 do
for source, replace in pairs(replace_set[i]) do
cons_clus = gsub(cons_clus, source, replace)
end
end
return cons_clus
end end)
text = gsub(text, 'qu', 'kv')
text = gsub(text, '.', replace_vowels)
-- adding stress marks to words
text = match(text, '^[^-]') and ('ˈ' .. gsub(text, ' ', ' ˈ')) or text
-- word boundaries
text = gsub(text, '[,-]', '')
-- nasal assimilation
text = gsub(text, 'n(n?)(#?)([kgcɟɲfvpbm])', function(repet, sep, cons)
return nasal_assim[cons] .. (repet ~="" and nasal_assim[cons] or "") .. sep .. cons
end)
text = gsub(text, 'm(#?)([fv])', 'ɱ%1%2')
local cons, opt_cons = '([lmnskgpbtdrfvɲɟχczʦʧʣʤṡʃʒjhŋɱɦχçʝ])', '([lmnskgpbtdrfvɲɟχczʦʧʣʤṡʃʒjhŋɱɦχçʝ]?)'
text = gsub(text, '(.)#(.)', function(prev, succ)
return (voicing_assim['devoicing'][prev] ~= succ and voicing_assim['voicing'][prev] ~= succ) and prev .. succ or prev .. '#' .. succ end)
-- voicing and devoicing assimilations
text = gsub(text, '([bvdzʣʒʤɟʝg]+)(#?[pftṡʦʃʧckh])', function(prev_cons, next_cons)
return gsub(prev_cons, '.', voicing_assim['devoicing']) .. next_cons
end)
text = gsub(text, '([pftṡʦʃʧck]+)(#?[bdzʣʒʤɟg])', function(prev_cons, next_cons)
return gsub(prev_cons, '.', voicing_assim['voicing']) .. next_cons
end)
-- geminate notation
text = gsub(text, cons .. '%1%1', '%1ː')
text = gsub(text, cons .. '(#?)%1', '%1ː%2')
-- degemination when preceded or followed by a consonant
text = gsub(text, opt_cons .. cons .. 'ː' .. opt_cons, function(prev_cons, gem_cons, next_cons)
return prev_cons .. gem_cons .. (prev_cons .. next_cons ~= "" and '' or 'ː') .. next_cons end)
-- back-replacing special characters
text = gsub(text, '.', back_replace)
-- dealing with unstressed particles and their liaison behavior
for _, word_info in ipairs(unstressed_words) do
local word, liaison_type = word_info[1], word_info[2]
if liaison_type == 'liaise_next' then
text = gsub(text, 'ˈ' .. word .. ' ', word)
elseif liaison_type == 'liaise_prev' then
text = gsub(text, 'ˈ' .. word .. ' ', word .. ' ')
elseif liaison_type == 'liaise_none' then
text = gsub(text, 'ˈ' .. word .. ' ', word .. ' ')
elseif liaison_type == 'remove_next' then
text = gsub(text, word .. ' ˈ', word .. ' ')
end
end
-- removing the primary stress mark if another such mark is manually supplied
text = gsub(text, 'ˈˈ', 'ˈ')
-- likewise if a secondary stress mark is manually supplied
text = gsub(text, 'ˈˌ', 'ˌ')
-- adding a space before primary and secondary stress marks in case this space is missing
text = gsub(text, '()([ˈˌ])', function(position, stress)
if position ~= 1 then
return ' ' .. stress
end
end)
-- replacing any double spaces (created by the previous command) with single ones
text = gsub(text, ' ', ' ')
table.insert(result, '[' .. text .. ']')
end
table.insert(result, 1, "hu")
if (type(frame) == 'string') then
return mw.ustring.sub(result[1], 2, mw.ustring.len(result[1]) - 1)
else
return frame:expandTemplate{ title = "IPA", args = result}
end
end
return export
jltpkpbev5xvjlsjyesbisprfzolkld
Mô đun:sa-translit
828
275239
2512178
2086243
2026-08-07T16:01:34Z
Hiyuune
50834
2512178
Scribunto
text/plain
local export = {}
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local toNFC = mw.ustring.toNFC
local U = m_str_utils.char
local grave = U(0x300)
local acute = U(0x301)
local diaeresis = U(0x308)
local svar = U(0x951)
local anud = U(0x952)
local d_svar = U(0x1CDA) -- double svarita, sometimes used for long vowel with svarita
local consonants = {
['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ',
['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ',
['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ',
['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n',
['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m',
['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ',
['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h',
}
local diacritics = {
['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ',
['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='',
}
local tt = {
-- vowels
['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ',
['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au',
-- chandrabindu
['ँ']='m̐', --until a better method is found
-- anusvara
['ं']='ṃ', --until a better method is found
['ꣳ']='ṃ', -- candrabindu virama
-- visarga
['ः']='ḥ',
-- avagraha
['ऽ']='ʼ',
--numerals
['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9',
--punctuation
-- ['॥']='.', --double danda
-- ['।']='.', --danda
--Vedic extensions
['ᳵ']='x', ['ᳶ']='f',
--Om
['ॐ']='oṃ',
--reconstructed
-- ['*'] = '',
}
function export.tr(text, lang, sc)
if sc ~= "Deva" then
return nil
end
-- Vedic accent handling
if text:match(anud) or text:match(svar) or text:match(d_svar) then
-- insert 'a' after consonants without vowel diacritic or virama
text = gsub(text, '([क-ह])([ा-्ॢॣ]?)',
function(c,d)
if d == "" then return c .. 'a' else return c .. d end
end)
local vow_list = "aअ-औा-ौॠ-ॣ"
local vow = "[" .. vow_list .. "]"
local extra_list = "ःंँ" -- visarga, anusvara, candrabindu
local extra = "[" .. extra_list .. "]"
local acc_list = grave .. acute .. svar .. anud .. d_svar
-- local cons_list = "क-हᳵᳶऽ् \'" -- consonants + avagraha + virama + space + apostrophe (from e.g. bold formatting)
-- Workaround: the consonants (plus a few other signs, see outcommented 'local cons_list')
-- are defined by negating the non-consonants, so as to include
-- the munged versions of formatting characters (e.g. bold formatting)
local cons = "[^" .. vow_list .. acc_list .. extra_list .. "।॥१३ॐ]"
-- independent svarita before udatta or other independent svarita (indicated by १/३ with both svarita and anudatta sign)
text = gsub(text, "(" .. extra .. "?)" .. anud .. "?[१३][" .. anud .. svar .. d_svar .. "]+(" ..
cons .. "*" .. vow .. ")(" .. extra .. "?)([" .. svar .. d_svar .. "]?)",
function(a,b,c,d)
if d ~= "" then
return grave .. a .. b .. grave .. c -- 2 × independent svarita
else
return grave .. a .. b .. acute .. c -- independent svarita + udatta
end
end)
-- optional: a few non-Rigvedic ways to mark the independent svarita (but compatible with Rigvedic system)
-- 1) ᳡ (U+1CE1) used by Atharvavedic Śaunakīya Saṃhitā
-- 2) ᳖ (U+1CD6) used by Śuklayajurveda Mādhyandina-Saṃhitā for 'standard' independent svarita
-- 3) ᳕ (U+1CD5) used by Śuklayajurveda Mādhyandina-Saṃhitā for 'aggravated' independent svarita (before udatta)
-- note that the Rigvedic system doesn't distinguish between dependent vs. independendent
-- svarita after udatta (the latter needs manual addition of grave `, see documentation)
text = gsub(text, "(" .. extra .. "?)[᳡᳖`]", grave .. "%1")
text = gsub(text, "(" .. extra .. "?)᳕(" .. cons .. "*" .. vow ..")", grave .. "%1%2" .. acute)
-- initial udatta/svarita
text = gsub(text, "^(" .. cons .. "*" .. vow .. ")(३?" .. extra .. "?)([^" .. anud .. grave .. extra_list .. "])",
function(a,b,c)
if c == svar or c == d_svar then
return a .. grave .. b -- initial svarita
else
return a .. acute .. b .. c -- initial udatta
end
end)
-- the same, after (double) danda or 'om'
text = gsub(text, "([।॥ॐ]" .. cons .. "*" .. vow .. ")(३?" .. extra .. "?)([^" .. anud .. grave .. extra_list .. "])",
function(a,b,c)
if c == svar or c == d_svar then
return a .. grave .. b -- initial svarita
else
return a .. acute .. b .. c -- initial udatta
end
end)
-- in case of anudatta sign not before other anudatta sign (nor before grave accent from १/३)
text = gsub(text, "(" .. vow .. extra .. "?" .. anud .. cons .. "*" ..
vow .. ")(" .. extra .. "?)([^" .. anud .. grave .. extra_list .. "])",
function(a,b,c)
if c == svar or c == d_svar then
return a .. grave .. b -- independent svarita
else
return a .. acute .. b .. c -- udatta
end
end)
-- and again (excluding acute on next vowel), in case of overlapping patterns (if 'c' above happens to be another vowel with anudatta)
text = gsub(text, "(" .. vow .. extra .. "?" .. anud .. cons .. "*" ..
vow .. ")(" .. extra .. "?)([^" .. anud .. grave .. acute .. extra_list .. "])",
function(a,b,c)
if c == svar or c == d_svar then
return a .. grave .. b -- independent svarita
else
return a .. acute .. b .. c -- udatta
end
end)
-- the same, string final
text = gsub(text, "(" .. vow .. extra .. "?" .. anud .. cons .. "*" ..
vow .. ")(" .. extra .. "?)([" .. svar .. d_svar .. "]?)$",
function(a,b,c)
if c ~= "" then
return a .. grave .. b -- independent svarita
else
return a .. acute .. b -- udatta
end
end)
-- unmarked vowel after udatta is also udatta
text = gsub(text, "(" .. vow .. acute .. "३?" .. extra .. "?" .. cons .. "*" ..
vow .. ")(" .. extra .. "?[^" .. acc_list .. extra_list .. "])", "%1" .. acute .. "%2")
-- and again, in case of three udatta's in a row
text = gsub(text, "(" .. vow .. acute .. "३?" .. extra .. "?" .. cons .. "*" ..
vow .. ")(" .. extra .. "?[^" .. acc_list .. extra_list .. "])", "%1" .. acute .. "%2")
-- yet again: 4 udatta's in a row occurs in RV.1.164.39
text = gsub(text, "(" .. vow .. acute .. "३?" .. extra .. "?" .. cons .. "*" ..
vow .. ")(" .. extra .. "?[^" .. acc_list .. extra_list .. "])", "%1" .. acute .. "%2")
-- the same, string final
text = gsub(text, "(" .. vow .. acute .. "३?" .. extra .. "?" .. cons .. "*" ..
vow .. ")(" .. extra .. "?)$", "%1" .. acute .. "%2")
-- remove remaining anudatta and svarita signs
text = gsub(text, "[" .. anud .. svar .. d_svar .. "]", "")
text = gsub(text, '.', consonants)
text = gsub(text, '.', diacritics)
else -- no Vedic accents
text = gsub(
text,
'([क-ह])'..
'([ािीुूृॄॢॣेैोौ्]?)'..
'([अ-औ]?)',
function(c, d, e)
if d == "" and e ~= "" then
if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. diaeresis
else return consonants[c] .. 'a' .. tt[e] end
elseif e ~= "" then
return consonants[c] .. diacritics[d] .. tt[e]
elseif d == "" then
return consonants[c] .. 'a'
else
return consonants[c] .. diacritics[d]
end
end)
end
text = gsub(text, '([aअ][' .. acute .. grave .. ']?[इउ])', '%1' .. diaeresis)
text = gsub(text, '.', tt)
text = gsub(text, 'a([iu])([' .. acute .. grave .. '])', 'a%2%1')
text = gsub(text, " ?[।॥]", ".")
text = gsub(text, "(ā" .. acute .. "3[iu])" .. acute, "%1") -- for pluti vowels
text = toNFC(text)
return text
end
return export
ii0cyr27ndyakkqbiykb3rns4vi3za1
kha lỏ
0
277487
2512246
2288526
2026-08-08T02:27:03Z
WhoAlone
40420
2512246
wikitext
text/x-wiki
=={{langname|enc}}==
==={{ĐM|noun}}===
{{head|enc|Danh từ}}
# [[đường đi]].
==={{ĐM|ref}}===
* Xuân Lam (5 tháng 12 năm 2021) [https://baocaobang.vn/Van-hoa/An-so-kho-tram-tich-van-hoa-nguoi-Nung-Ven-duy-nhat-o-Cao-Bang/85715.bcb “Ẩn số” kho trầm tích văn hóa người Nùng Vẻn duy nhất ở Cao Bằng]. ''Báo Cao Bằng điện tử''.
{{c|enc|Giao thông}}
5ygj5hx3ggjuvutv7xp5193j9clb5ku
Mô đun:category tree/languages
828
279380
2512352
2382013
2026-08-08T11:45:42Z
Hiyuune
50834
2512352
Scribunto
text/plain
local new_title = mw.title.new
local ucfirst = require("Module:string utilities").ucfirst
local split = require("Module:string utilities").split
local raw_categories = {}
local raw_handlers = {}
local m_languages = require("Module:languages")
local m_sc_getByCode = require("Module:scripts").getByCode
local m_table = require("Module:table")
local parse_utilities_module = "Module:parse utilities"
local location_translation = require("Module:category tree/location translation")
local concat = table.concat
local insert = table.insert
local reverse_ipairs = m_table.reverseIpairs
local serial_comma_join = m_table.serialCommaJoin
local size = m_table.size
local sorted_pairs = m_table.sortedPairs
local to_json = require("Module:JSON").toJSON
local Hang = m_sc_getByCode("Hang")
local Hani = m_sc_getByCode("Hani")
local Hira = m_sc_getByCode("Hira")
local Hrkt = m_sc_getByCode("Hrkt")
local Kana = m_sc_getByCode("Kana")
local function track(page)
-- [[Special:WhatLinksHere/Wiktionary:Tracking/category tree/languages/PAGE]]
return require("Module:debug/track")("category tree/languages/" .. page)
end
-- This handles language categories of the form e.g. [[:Category:French language]] and
-- [[:Category:British Sign Language]]; categories like [[:Category:Languages of Indonesia]]; categories like
-- [[:Category:English-based creole or pidgin languages]]; and categories like
-- [[:Category:English-based constructed languages]].
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Tất cả ngôn ngữ"] = {
topright = "{{commonscat|Languages}}\n[[File:Languages world map-transparent background.svg|thumb|right|250px|Rough world map of language families]]",
description = "This category contains the categories for every language on Wiktionary.",
additional = "Not all languages that Wiktionary recognises may have a category here yet. There are many that have " ..
"not yet received any attention from editors, mainly because not all Wiktionary users know about every single " ..
"language. See [[Wiktionary:List of languages]] for a full list.",
parents = {
"Tất cả",
},
}
raw_categories["Đa ngữ"] = {
description = "Đây là thể loại chính của Đa ngữ.",
parents = {
"Tất cả ngôn ngữ",
},
}
raw_categories["Ngôn ngữ tuyệt chủng"] = {
description = "This category contains the categories for every [[extinct language]] on Wiktionary.",
additional = "Do not confuse this category with [[:Category:Extinct languages]], which is an umbrella category for the names of extinct languages in specific other languages (e.g. {{m+|de|Langobardisch}} for the ancient [[Lombardic]] language).",
parents = {
"Tất cả ngôn ngữ",
},
}
raw_categories["Ngôn ngữ theo quốc gia"] = {
topright = "{{commonscat|Languages by continent}}",
description = "Categories that group languages by country.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Tất cả ngôn ngữ",
},
}
raw_categories["Languages not sorted into a location category"] = {
description = "Languages which do not specify (in their {{tl|auto cat}} call) the location(s) where they are spoken.",
additional = "This excludes constructed and reconstructed languages; as a result, all languages in this category explicitly specify their location as {{cd|UNKNOWN}}.",
parents = {
{name = "Requests"},
},
hidden = true,
}
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
-- Given a category (without the "Thể loại:" prefix), look up the page
-- defining the category, find the call to {{auto cat}} (if any),
-- and return a table of its arguments. If the category page doesn't exist
-- or doesn't have an {{auto cat}} invocation, return nil.
-- FIXME: Duplicated in [[Module:category tree/lects]].
local function scrape_category_for_auto_cat_args(cat)
local cat_page = mw.title.new("Thể loại:" .. cat)
if cat_page then
local contents = cat_page:getContent()
if contents then
for template in require("Module:template parser").find_templates(contents) do
-- The template parser automatically handles redirects and
-- canonicalizes them.
if template:get_name() == "auto cat" then
return template:get_arguments()
end
end
end
end
return nil
end
local function link_location(location)
local location_no_the = location:match("^(.*)$")
local bare_location = location_no_the or location
local bare_location_parts = split(bare_location, ", ")
for i, part in ipairs(bare_location_parts) do
bare_location_parts[i] = ("[[%s]]"):format(part)
end
local location_link = concat(bare_location_parts, ", ")
if location_no_the then location_link = location_link end
return location_link
end
local function linkbox(lang, setwiki, setwikt, setsister, entryname)
local wiktionarylinks = {}
local canonicalName = lang:getCanonicalName()
local wikimediaLanguages = lang:getWikimediaLanguages()
local wikipediaArticle = setwiki or lang:getWikipediaArticle(true)
setwiki = not wikipediaArticle and "-"
setsister = setsister and ucfirst(setsister) or nil
if setwikt then
track("setwikt")
if setwikt == "-" then track("setwikt/hyphen") end
end
if setwikt ~= "-" and wikimediaLanguages and wikimediaLanguages[1] then
for _, wikimedialang in ipairs(wikimediaLanguages) do
local check = new_title(wikimedialang:getCode() .. ":")
if check and check.isExternal then
insert(wiktionarylinks,
(
wikimedialang:getCanonicalName() ~= canonicalName
and "(''" .. wikimedialang:getCanonicalName() .. "'') "
or ""
) .. (
"'''[[:" .. wikimedialang:getCode()
.. ":|" .. wikimedialang:getCode()
.. ".wiktionary.org]]'''"
)
)
end
end
wiktionarylinks = concat(wiktionarylinks, "<br/>")
end
local wikt_plural = wikimediaLanguages[2] and "" or ""
if #wiktionarylinks == 0 then
wiktionarylinks = "''Không có.''"
end
-- Avoid showing Wiktionary links section for reconstructed languages,
-- as they are ineligible for Wiktionary editions
local wiktionarylinks_chunk = concat{
[=[|-
| style="vertical-align: top; height: 35px; width: 40px; border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | [[File:Wiktionary-logo-v2.svg|35px|none|Wiktionary]]
|style="border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | '''Phiên bản Wiktionary''']=], wikt_plural, [=[ viết ở ]=], canonicalName, [=[:
<div style="padding: 5px 10px">]=], wiktionarylinks, [=[</div>
]=]}
if lang:hasType('reconstructed') then
wiktionarylinks_chunk = ''
end
if setsister then
track("setsister")
if setsister == "-" then
track("setsister/hyphen")
else
setsister = "Thể loại:" .. setsister
end
else
setsister = lang:getCommonsCategory() or "-"
end
return concat{ -- FIXME: Bare wikicode
[=[<div class="wikitable" style="float: right; clear: right; margin: 0 0 0.5em 1em; width: 300px; padding: 5px;">
<div style="text-align: center; margin-bottom: 10px; margin-top: 5px">'''Liên kết ]=], canonicalName, [=['''</div>
{| style="font-size: 90%"
|-
| style="vertical-align: top; height: 35px; border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | [[File:Wikipedia-logo.png|35px|none|Wikipedia]]
| style="border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | '''Wikipedia tiếng Việt''' có bài viết về:
<div style="padding: 5px 10px">]=], (setwiki == "-" and "''Không có.''" or "'''[[w:" .. wikipediaArticle .. "|" .. wikipediaArticle .. "]]'''"), [=[</div>
|-
| style="vertical-align: top; height: 35px; border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | [[File:Commons-logo.svg|35px|none|Wikimedia Commons]]
| style="border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | '''Wikimedia Commons''' có liên kết đến các nội dung liên quan đến ]=], canonicalName, [=[:
<div style="padding: 5px 10px">]=], (setsister == "-" and "''Không có.''" or "'''[[commons:" .. setsister .. "|" .. setsister .. "]]'''"), [=[</div>
]=], wiktionarylinks_chunk, [=[
|-
| style="vertical-align: top; height: 35px; border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | [[File:Codex icon articles color-progressive.svg|35px|none|Entry]]
| style="border-bottom: 1px solid var(--wikt-palette-grey-4, lightgray);" | '''Wiktionary tiếng Việt''' có mục từ liên quan đến tên ngôn ngữ:
<div style="padding: 5px 10px">''']=], require("Module:links").full_link({lang = m_languages.getByCode("vi"), term = entryname or canonicalName}), [=['''</div>
|-
| style="vertical-align: top; height: 35px;" | [[File:Codex icon book color-progressive.svg|35px|none|Resources]]
|| '''Tài nguyên Wiktionary''' dành cho biên tập viên đóng góp vào các mục từ ]=], canonicalName, [=[:
<div style="padding: 5px 0">
* '''[[Wiktionary:Quy định mục từ ]=], canonicalName, [=[]]'''
* '''[[:Thể loại:Bản mẫu tham khảo ]=], canonicalName, [=[|Bản mẫu tham khảo]] ({{PAGESINCAT:Bản mẫu tham khảo ]=], canonicalName, [=[}})'''
* '''[[Phụ lục:Thư mục học ]=], canonicalName, [=[|Thư mục học]]'''
</div>
|}
</div>]=]
}
end
local function edit_link(title, text)
return '<span class="plainlinks">['
.. tostring(mw.uri.fullUrl(title, { action = "edit" }))
.. ' ' .. text .. ']</span>'
end
-- Should perhaps use wiki syntax.
local function infobox(lang)
local ret = {}
insert(ret, '<table class="wikitable language-category-info"')
insert(ret, '>\n')
insert(ret, '<tr class="language-category-data">\n<th colspan="2">'
.. edit_link(lang:getDataModuleName(), "Chỉnh sửa dữ liệu ngôn ngữ")
.. "</th>\n</tr>\n")
insert(ret, "<tr>\n<th>Tên chuẩn</th><td>" .. lang:getCanonicalName() .. "</td>\n</tr>\n")
local otherNames = lang:getOtherNames()
if otherNames then
local names = {}
for _, name in ipairs(otherNames) do
insert(names, "<li>" .. name .. "</li>")
end
if #names > 0 then
insert(ret, (
"<tr>\n<th>Tên khác</th><td><ul>"
.. concat(names, "\n")
.. "</ul></td>\n</tr>\n"
)
)
end
end
local aliases = lang:getAliases()
if aliases then
local names = {}
for _, name in ipairs(aliases) do
insert(names, "<li>" .. name .. "</li>")
end
if #names > 0 then
insert(ret, (
"<tr>\n<th>Tên thay thế</th><td><ul>"
.. concat(names, "\n")
.. "</ul></td>\n</tr>\n"
)
)
end
end
local varieties = lang:getVarieties()
if varieties then
local names = {}
for _, name in ipairs(varieties) do
if type(name) == "string" then
insert(names, "<li>" .. name .. "</li>")
else
assert(type(name) == "table")
local first_var
local subvars = {}
for i, var in ipairs(name) do
if i == 1 then
first_var = var
else
insert(subvars, "<li>" .. var .. "</li>")
end
end
if #subvars > 0 then
insert(names, (
"<li><dl><dt>"
.. first_var .. "</dt>\n<dd><ul>"
.. concat(subvars, "\n")
.. "</ul></dd></dl></li>"
)
)
elseif first_var then
insert(names, "<li>" .. first_var .. "</li>")
end
end
end
if #names > 0 then
insert(ret, (
"<tr>\n<th>Biến thể</th><td><ul>"
.. concat(names, "\n")
.. "</ul></td>\n</tr>\n"
)
)
end
end
insert(ret, (
"<tr>\n<th>[[Wiktionary:Ngôn ngữ|Mã ngôn ngữ]]</th><td><code>"
.. lang:getCode()
.. "</code></td>\n</tr>\n"
)
)
insert(ret, "<tr>\n<th>[[Wiktionary:Ngữ hệ|Ngữ hệ]]</th>\n")
local fam = lang:getFamily()
local famCode = fam and fam:getCode()
if not fam then
insert(ret, "<td>[[:Category:Unassigned languages|unassigned]]</td>")
elseif famCode == "qfa-dis" then
insert(ret, "<td>[[:Category:Languages of disputed affiliation|disputed affiliation]]</td>")
elseif famCode == "qfa-iso" then
insert(ret, "<td>[[:Thể loại:Nhóm ngôn ngữ biệt lập|Nhóm ngôn ngữ biệt lập]]</td>")
elseif famCode == "qfa-mix" then
insert(ret, "<td>[[:Category:Mixed languages|mixed language]]</td>")
elseif famCode == "qfa-unc" then
insert(ret, "<td>[[:Category:Unclassifiable languages|unclassifiable language]]</td>")
elseif famCode == "sgn" then
insert(ret, "<td>[[:Category:Sign languages|sign language]]</td>")
elseif famCode == "crp" then
insert(ret, "<td>[[:Category:Creole or pidgin languages|creole or pidgin]]</td>")
elseif famCode == "art" then
insert(ret, "<td>[[:Category:Constructed languages|constructed language]]</td>")
else
insert(ret, "<td>" .. fam:makeCategoryLink() .. "</td>")
end
insert(ret, "\n</tr>\n<tr>\n<th>Ngôn ngữ<br/>nguyên thủy</th>\n<td>")
local ancestors = lang:getAncestors()
if ancestors[2] then
local ancestorList = {}
for i, anc in ipairs(ancestors) do
ancestorList[i] = "<li>" .. anc:makeCategoryLink() .. "</li>"
end
insert(ret, "<ul>\n" .. concat(ancestorList, "\n") .. "</ul>")
else
local ancestorChain = lang:getAncestorChainOld()
if ancestorChain[1] then
local chain = {}
for _, anc in reverse_ipairs(ancestorChain) do
insert(chain, "<li>" .. anc:makeCategoryLink() .. "</li>")
end
insert(ret, "<ul>\n" .. concat(chain, "\n<ul>\n") .. ("</ul>"):rep(#chain))
else
insert(ret, "không rõ")
end
end
insert(ret, "</td>\n</tr>\n")
local scripts = lang:getScripts()
if scripts[1] then
local script_text = {}
local function makeScriptLine(sc)
local code = sc:getCode()
local url = tostring(mw.uri.fullUrl('Đặc biệt:Search', {
search = 'contentmodel:css insource:"' .. code
.. '" insource:/\\.' .. code .. '/',
ns8 = '1'
}))
return sc:makeCategoryLink()
.. ' (<span class="plainlinks" title="Search for stylesheets referencing this script">[' .. url .. ' <code>' .. code .. '</code>]</span>)'
end
local function add_Hrkt(text)
insert(text, "<li>" .. makeScriptLine(Hrkt))
insert(text, "<ul>")
insert(text, "<li>" .. makeScriptLine(Hira) .. "</li>")
insert(text, "<li>" .. makeScriptLine(Kana) .. "</li>")
insert(text, "</ul>")
insert(text, "</li>")
end
for _, sc in ipairs(scripts) do
local text = {}
local code = sc:getCode()
if code == "Hrkt" then
add_Hrkt(text)
else
insert(text, "<li>" .. makeScriptLine(sc))
if code == "Jpan" then
insert(text, "<ul>")
insert(text, "<li>" .. makeScriptLine(Hani) .. "</li>")
add_Hrkt(text)
insert(text, "</ul>")
elseif code == "Kore" then
insert(text, "<ul>")
insert(text, "<li>" .. makeScriptLine(Hang) .. "</li>")
insert(text, "<li>" .. makeScriptLine(Hani) .. "</li>")
insert(text, "</ul>")
end
insert(text, "</li>")
end
insert(script_text, concat(text, "\n"))
end
insert(ret, "<tr>\n<th>[[Wiktionary:Hệ chữ viết|Hệ chữ viết]]</th>\n<td><ul>\n" .. concat(script_text, "\n") .. "</ul></td>\n</tr>\n")
else
insert(ret, "<tr>\n<th>[[Wiktionary:Hệ chữ viết|Hệ chữ viết]]</th>\n<td>chưa được phân loại</td>\n</tr>\n")
end
local wikidataItem = lang:getWikidataItem()
if lang:getWikidataItem() and mw.wikibase then
local URL = mw.wikibase.getEntityUrl(wikidataItem)
local link
if URL then
link = '[[d:' .. wikidataItem .. '|' .. wikidataItem .. ']]'
else
link = '<span class="error">Khoản mục Wikidata không hợp lệ: <code>' .. wikidataItem .. '</code></span>'
end
insert(ret, "<tr><th>Khoản mục<br/>Wikidata</th><td>" .. link .. "</td></tr>")
end
insert(ret, "</table>")
return concat(ret)
end
local function NavFrame_for_family_tree(content, title)
return '<div class="NavFrame"><div class="NavHead">'
.. (title or '{{{title}}}') .. '</div>'
.. '<div class="NavContent" style="text-align: left; font-size: calc(1em / 0.95); padding: 0.3em">'
.. content
.. '</div></div>'
end
local function get_description_topright_additional(lang, locations, extinct, setwiki, setwikt, setsister, entryname)
local nameWithLanguage = lang:getCategoryName("nocap")
if lang:getCode() == "und" then
local description =
"Đây là thể loại chính của '''" .. nameWithLanguage .. "''', represented in Wiktionary by the [[Wiktionary:Languages|code]] '''" .. lang:getCode() .. "'''. " ..
"This language contains terms in historical writing, whose meaning has not yet been determined by scholars."
return description, nil, nil
end
local canonicalName = lang:getCanonicalName()
local topright = linkbox(lang, setwiki, setwikt, setsister, entryname)
local the_prefix
the_prefix = ""
local description = "Đây là thể loại chính của " .. the_prefix .. "'''" .. nameWithLanguage .. "'''."
local location_links = {}
local prep
local saw_embedded_comma = false
for _, location in ipairs(locations) do
local this_prep
if location == "the world" then
this_prep = "across"
insert(location_links, location)
elseif location ~= "UNKNOWN" then
this_prep = "ở"
if location:find(",") then
saw_embedded_comma = true
end
insert(location_links, link_location(location))
end
if this_prep then
if prep and this_prep ~= prep then
error("Can't handle location 'the world' along with another location (clashing prepositions)")
end
prep = this_prep
end
end
local location_desc
if #location_links > 0 then
local location_link_text
if saw_embedded_comma and #location_links >= 3 then
location_link_text = mw.text.listToText(location_links, "; ", "; và ")
else
location_link_text = serial_comma_join(location_links)
end
location_desc = ("Ngôn ngữ này %s %s %s.\n\n"):format(
extinct and "là một ngôn ngữ đã tuyệt chủng trước đây được sử dụng" or "được sử dụng",
prep, location_link_text
)
elseif extinct then
location_desc = "Đây là một ngôn ngữ đã tuyệt chủng.\n\n"
else
location_desc = ""
end
local add = location_desc .. "Thông tin về " .. canonicalName .. ":\n\n" .. infobox(lang)
if lang:hasType("reconstructed") then
add = add .. "\n\n" ..
ucfirst(canonicalName) .. " là một ngôn ngữ tái tạo. Its words and roots are not directly attested in any written works, but have been reconstructed through the ''comparative method'', " ..
"which finds regular similarities between languages that cannot be explained by coincidence or word-borrowing, and extrapolates ancient forms from these similarities.\n\n" ..
"Theo [[Wiktionary:Quy định mục từ|quy định mục từ]], mục từ " .. canonicalName ..
" không nằm ở không gian chính, nhưng có thể áp dụng ở không gian tên '''Từ tái tạo'''."
elseif lang:hasType("appendix-constructed") then
add = add .. "\n\n" ..
ucfirst(canonicalName) .. " is a constructed language that is only in sporadic use. " ..
"According to our [[Wiktionary:Criteria for inclusion|criteria for inclusion]], terms in " .. canonicalName ..
" should '''not''' be present in entries in the main namespace, but may be added to the Appendix: namespace. " ..
"All terms in this language may be available at [[Appendix:" .. ucfirst(canonicalName) .. "]]."
end
local entry_guidelines_page = "Wiktionary:Quy định mục từ " .. canonicalName
local entry_guidelines = new_title(entry_guidelines_page)
if entry_guidelines.exists then
add = add .. "\n\n" ..
"Xin vui lòng xem '''[[" .. entry_guidelines_page .. "]]''' để biết thông tin và cân nhắc đặc biệt khi tạo mục từ " .. nameWithLanguage .. " entries."
end
-- local ok, tree_of_descendants = pcall(
-- require("Module:family tree").print_children,
-- lang:getCode(), {
-- protolanguage_under_family = true,
-- must_have_descendants = true
-- })
-- if ok then
-- if tree_of_descendants then
-- add = add .. NavFrame_for_family_tree(
-- tree_of_descendants,
-- "Family tree")
-- else
-- add = add .. "\n\n" .. ucfirst(lang:getCanonicalName())
-- .. " has no descendants or varieties listed in Wiktionary's language data modules."
-- end
-- else
-- mw.log("error while generating tree: " .. tostring(tree_of_descendants))
-- end
return description, topright, add
end
local function get_parents(lang, locations, extinct)
local canonicalName = lang:getCanonicalName()
local sortkey = {sort_base = canonicalName, lang = "vi"}
local ret = {{name = "Tất cả ngôn ngữ", sort = sortkey}}
local fam = lang:getFamily()
local famCode = fam and fam:getCode()
-- FIXME: Some of the following categories should be added to this module.
if not fam then
insert(ret, {name = "Thể loại:Unassigned languages", sort = sortkey})
elseif famCode == "qfa-dis" then
insert(ret, {name = "Thể loại:Languages of disputed affiliation", sort = sortkey})
elseif famCode == "qfa-iso" then
insert(ret, {name = "Thể loại:Nhóm ngôn ngữ biệt lập", sort = sortkey})
elseif famCode == "qfa-mix" then
insert(ret, {name = "Thể loại:Mixed languages", sort = sortkey})
elseif famCode == "qfa-unc" then
insert(ret, {name = "Thể loại:Unclassifiable languages", sort = sortkey})
elseif famCode == "sgn" then
insert(ret, {name = "Thể loại:All sign languages", sort = sortkey})
elseif famCode == "crp" then
insert(ret, {name = "Thể loại:Creole or pidgin languages", sort = sortkey})
for _, anc in ipairs(lang:getAncestors()) do
-- Avoid Haitian Creole being categorised in [[:Category:Haitian Creole-based creole or pidgin languages]], as one of its ancestors is an etymology-only variety of it.
-- Use that ancestor's ancestors instead.
if anc:getFullCode() == lang:getCode() then
for _, anc_extra in ipairs(anc:getAncestors()) do
insert(ret, {name = "Thể loại:" .. ucfirst(anc_extra:getFullName()) .. "-based creole or pidgin languages", sort = sortkey})
end
else
insert(ret, {name = "Thể loại:" .. ucfirst(anc:getFullName()) .. "-based creole or pidgin languages", sort = sortkey})
end
end
elseif famCode == "art" then
if lang:hasType("appendix-constructed") then
insert(ret, {name = "Thể loại:Appendix-only constructed languages", sort = sortkey})
else
insert(ret, {name = "Thể loại:Constructed languages", sort = sortkey})
end
for _, anc in ipairs(lang:getAncestors()) do
if anc:getFullCode() == lang:getCode() then
for _, anc_extra in ipairs(anc:getAncestors()) do
insert(ret, {name = "Thể loại:" .. ucfirst(anc_extra:getFullName()) .. "-based constructed languages", sort = sortkey})
end
else
insert(ret, {name = "Thể loại:" .. ucfirst(anc:getFullName()) .. "-based constructed languages", sort = sortkey})
end
end
else
insert(ret, {name = "Thể loại:" .. fam:getCategoryName(), sort = sortkey})
if lang:hasType("reconstructed") then
insert(ret, {
name = "Thể loại:Ngôn ngữ nhân tạo",
sort = {sort_base = canonicalName:gsub("^Proto%-", ""), lang = "vi"}
})
end
end
local function add_sc_cat(sc)
insert(ret, {name = "Thể loại:Ngôn ngữ " .. sc:getCategoryName(), sort = sortkey})
end
local function add_Hrkt()
add_sc_cat(Hrkt)
add_sc_cat(Hira)
add_sc_cat(Kana)
end
for _, sc in ipairs(lang:getScripts()) do
if sc:getCode() == "Hrkt" then
add_Hrkt()
else
add_sc_cat(sc)
if sc:getCode() == "Jpan" then
add_sc_cat(Hani)
add_Hrkt()
elseif sc:getCode() == "Kore" then
add_sc_cat(Hang)
add_sc_cat(Hani)
end
end
end
if lang:hasTranslit() then
insert(ret, {name = "Thể loại:Ngôn ngữ với chuyển tự tự động", sort = sortkey})
end
local function insert_location_language_cat(location)
local cat = "Ngôn ngữ tại " .. location
insert(ret, {name = "Thể loại:" .. cat, sort = sortkey})
local auto_cat_args = scrape_category_for_auto_cat_args(cat)
local location_parent = auto_cat_args and auto_cat_args.parent
if location_parent then
local split_parents = require(parse_utilities_module).split_on_comma(location_parent)
for _, parent in ipairs(split_parents) do
parent = parent:match("^(.-):.*$") or parent
insert_location_language_cat(parent)
end
end
end
local saw_location = false
for _, location in ipairs(locations) do
if location ~= "UNKNOWN" then
saw_location = true
insert_location_language_cat(location)
end
end
if extinct then
insert(ret, {name = "Thể loại:Ngôn ngữ tuyệt chủng", sort = sortkey})
end
if not saw_location and not (lang:hasType("reconstructed") or (fam and fam:getCode() == "art")) then
-- Constructed and reconstructed languages don't need a location specified and often won't have one,
-- so don't put them in this maintenance category.
insert(ret, {name = "Thể loại:Ngôn ngữ không được xếp theo địa danh hay quốc gia", sort = sortkey})
end
return ret
end
local function get_children()
local ret = {}
-- FIXME: We should work on the children mechanism so it isn't necessary to manually specify these.
for _, label in ipairs({"Phụ lục", "Bảo trì mục từ", "Mục từ", "Cụm từ", "Vần", "Ký hiệu", "Bản mẫu", "Từ nguyên", "Từ theo cách sử dụng"}) do
insert(ret, {name = label, is_label = true})
end
insert(ret, {name = "Từ dẫn xuất từ {{{langname}}}", is_label = true, lang = false})
insert(ret, {name = "{{{langcode}}}:Tất cả chủ đề", sort = "all topics"})
insert(ret, {name = "Biến thể {{{langname}}}"})
insert(ret, {name = "Yêu cầu liên quan đến {{{langname}}}"})
insert(ret, {name = "Thành viên {{{langcode}}}", description = "Wiktionary users categorized by fluency levels in {{{langdisp}}}."})
return ret
end
-- Handle language categories of the form e.g. [[:Category:French language]] and
-- [[:Category:British Sign Language]].
insert(raw_handlers, function(data)
local category = data.category
if not (category:match("^[Tt]iếng") or category:match("[Ll]ect$")) then
return nil
end
local lang = m_languages.getByCanonicalName(category)
if not lang then
local langname = category
if langname then
lang = m_languages.getByCanonicalName(langname)
end
if not lang then
return nil
end
end
local args = require("Module:parameters").process(data.args, {
[1] = {list = true},
["setwiki"] = true,
["setwikt"] = true,
["setsister"] = true,
["entryname"] = true,
["extinct"] = {type = "boolean"},
})
-- If called from inside, don't require any arguments, as they can't be known
-- in general and aren't needed just to generate the first parent (used for
-- breadcrumbs).
if #args[1] == 0 and not data.called_from_inside then
-- At least one location must be specified unless the language is constructed (e.g. Esperanto) or reconstructed (e.g. Proto-Indo-European).
local fam = lang:getFamily()
if not (lang:hasType("reconstructed") or (fam and fam:getCode() == "art")) then
error("At least one location (param 1=) must be specified for language '" .. lang:getCanonicalName() .. "' (code '" .. lang:getCode() .. "'). " ..
"Use the value UNKNOWN if the language's location is truly unknown.")
end
end
local description, topright, additional = "", "", ""
-- If called from inside the category tree system, it's called when generating
-- parents or children, and we don't need to generate the description or additional
-- text (which is very expensive in terms of memory because it calls [[Module:family tree]],
-- which calls [[Module:languages/data/all]]).
if not data.called_from_inside then
description, topright, additional = get_description_topright_additional(
lang, args[1], args.extinct, args.setwiki, args.setwikt, args.setsister, args.entryname
)
end
return {
canonical_name = lang:getCategoryName(),
description = description,
lang = lang:getCode(),
topright = topright,
additional = additional,
breadcrumb = lang:getCanonicalName(),
parents = get_parents(lang, args[1], args.extinct),
extra_children = get_children(lang),
umbrella = false,
can_be_empty = true,
}, true
end)
-- Handle categories such as [[:Category:Languages of Indonesia]].
insert(raw_handlers, function(data)
local location = data.category:match("^Ngôn ngữ tại (.*)$")
if location then
local args = require("Module:parameters").process(data.args, {
["flagfile"] = true,
["commonscat"] = true,
["wp"] = true,
["basename"] = true,
["parent"] = true,
["locationcat"] = true,
["locationlink"] = true,
})
local topright
local basename = args.basename or location:gsub(", .*", "")
local translated_basename = location_translation[basename] or basename
if args.flagfile ~= "-" then
local flagfile_arg = args.flagfile or ("Flag of %s.svg"):format(translated_basename)
local files = require(parse_utilities_module).split_on_comma(flagfile_arg)
local topright_parts = {}
for _, file in ipairs(files) do
local flagfile = "File:" .. file
local flagfile_page = new_title(flagfile)
if flagfile_page and flagfile_page.file.exists then
insert(topright_parts, ("[[%s|right|100px|border]]"):format(flagfile))
elseif args.flagfile then
error(("Explicit flagfile '%s' doesn't exist"):format(flagfile))
end
end
topright = concat(topright_parts)
end
if args.wp then
local wp = require("Module:yesno")(args.wp, "+")
if wp == "+" or wp == true then
wp = data.category
end
if wp then
local wp_topright = ("{{wikipedia|%s}}"):format(wp)
if topright then
topright = topright .. wp_topright
else
topright = wp_topright
end
end
end
if args.commonscat then
local commonscat = require("Module:yesno")(args.commonscat, "+")
if commonscat == "+" or commonscat == true then
commonscat = data.category
end
if commonscat then
local commons_topright = ("{{commonscat|%s}}"):format(commonscat)
if topright then
topright = topright .. commons_topright
else
topright = commons_topright
end
end
end
local bare_location = location:match("^(.*)$") or location
local location_link = args.locationlink or link_location(location)
local bare_basename = basename:match("^(.*)$") or basename
local parents = {}
if args.parent then
local explicit_parents = require(parse_utilities_module).split_on_comma(args.parent)
for i, parent in ipairs(explicit_parents) do
local actual_parent, sort_key = parent:match("^(.-):(.*)$")
if actual_parent then
parent = actual_parent
sort_key = sort_key:gsub("%+", bare_location)
else
sort_key = " " .. bare_location
end
insert(parents, {name = "Ngôn ngữ tại " .. parent, sort = sort_key})
end
else
insert(parents, {name = "Ngôn ngữ theo quốc gia", sort = {sort_base = bare_location, lang = "vi"}})
end
if args.locationcat then
local explicit_location_cats = require(parse_utilities_module).split_on_comma(args.locationcat)
for i, locationcat in ipairs(explicit_location_cats) do
insert(parents, {name = "Thể loại:" .. locationcat, sort = " Languages"})
end
else
local location_cat = ("Thể loại:%s"):format(bare_location)
local location_page = new_title(location_cat)
if location_page and location_page.exists then
insert(parents, {name = location_cat, sort = "Languages"})
end
end
local description = ("Thể loại dành cho ngôn ngữ tại %s."):format(location_link)
return {
topright = topright,
description = description,
parents = parents,
breadcrumb = bare_basename,
additional = "{{{umbrella_msg}}}",
}, true
end
end)
-- Handle categories such as [[:Category:English-based creole or pidgin languages]].
insert(raw_handlers, function(data)
local langname = data.category:match("(.*)%-based creole or pidgin languages$")
if langname then
local lang = m_languages.getByCanonicalName(langname)
if lang then
return {
lang = lang:getCode(),
description = "Languages which developed as a [[creole]] or [[pidgin]] from " .. lang:makeCategoryLink() .. ".",
parents = {{name = "Creole or pidgin languages", sort = {sort_base = "*" .. langname, lang = "vi"}}},
breadcrumb = lang:getCanonicalName() .. "-based",
}
end
end
end)
-- Handle categories such as [[:Category:English-based constructed languages]].
insert(raw_handlers, function(data)
local langname = data.category:match("(.*)%-based constructed languages$")
if langname then
local lang = m_languages.getByCanonicalName(langname)
if lang then
return {
lang = lang:getCode(),
description = "Constructed languages which are based on " .. lang:makeCategoryLink() .. ".",
parents = {{name = "Constructed languages", sort = {sort_base = "*" .. langname, lang = "vi"}}},
breadcrumb = lang:getCanonicalName() .. "-based",
}
end
end
end)
return {
RAW_CATEGORIES = raw_categories,
RAW_HANDLERS = raw_handlers
}
b03rryu5dyezuyvbcm9toep5p051q54
Bản mẫu:xlit
10
279702
2512179
2096448
2026-08-07T16:02:29Z
Hiyuune
50834
2512179
wikitext
text/x-wiki
{{safesubst:<noinclude />#invoke:languages/templates|getByCodeAllowEtym|{{{1|und}}}|transliterate|{{safesubst:<noinclude />#invoke:links|remove_links|{{{2}}}}}|{{{sc|}}}|{{{module|}}}}}<noinclude>{{documentation}}</noinclude>
dvijkuez0w9eo1fum4b042sp6wdg9xr
Mô đun:uk-translit
828
280537
2512183
2098907
2026-08-07T16:14:25Z
Hiyuune
50834
2512183
Scribunto
text/plain
local export = {}
local m_str_utils = require("Module:string utilities")
local rsubn = m_str_utils.gsub
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local regular_tt = {
["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Г"]='H', ["г"]='h',
["Ґ"]='G', ["ґ"]='g', ["Д"]='D', ["д"]='d', ["Е"]='E', ["е"]='e', ["Є"]='Je', ["є"]='je',
["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["И"]='Y', ["и"]='y', ["І"]='I', ["і"]='i',
["Ї"]='Ji', ["ї"]='ji', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l',
["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p',
["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u',
["Ф"]='F', ["ф"]='f', ["Х"]='X', ["х"]='x', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č',
["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='šč', ["Ь"]='ʹ', ["ь"]='ʹ', ["Ю"]='Ju', ["ю"]='ju',
["Я"]='Ja', ["я"]='ja',
-- right single quotation mark, modifier letter apostrophe → modifier letter double prime
["’"]='ʺ', ["ʼ"]= 'ʺ',
-- Ukrainian style quotes
['«']='“', ['»']='”',
-- Special char used in [[ₚосія]]
['ₚ']='ᵣ',
}
-- These need to be separated from the `regular_tt` so they don't interfere with reverse translit.
local obsolete_tt = {
-- obsolete letters, pre-refom
["Ё"]='Ë', ["ё"]='ë', ["Ъ"]='ʺ', ["ъ"]='ʺ', ["Ы"]='Y', ["ы"]='y', ["Ѣ"]='I', ["ѣ"]='i',
["Э"]='È', ["э"]='è', ["Ј"]='J', ["ј"]='j',
-- obsolete letters, Middle Ukrainian
["Ѥ"]='Je', ["ѥ"]='je', ["Ъ"]='ʺ', ["ъ"]='ʺ', ["Ы"]='Y', ["ы"]='y', ["Ѣ"]='I', ["ѣ"]='i',
["Ѧ"]='Ja', ["ѧ"]='ja', ["Ѩ"]='Ja', ["ѩ"]='ja', ["Ѫ"]='U', ["ѫ"]='u', ["Ѭ"]='Ju', ["ѭ"]='ju',
["Ѯ"]='Ks', ["ѯ"]='ks', ["Ѱ"]='Ps', ["Ѱ"]='ps', ["Ѳ"]='F', ["ѳ"]='f', ["Ѵ"]='I', ["ѵ"]='i',
["Ѡ"]='O', ["ѡ"]='o',
}
local AC = m_str_utils.char(0x0301) -- acute = ́
local acute_decomposer = {
["á"] = "a" .. AC,
["é"] = "e" .. AC,
["í"] = "i" .. AC,
["ó"] = "o" .. AC,
["ú"] = "u" .. AC,
["ý"] = "y" .. AC,
["Á"] = "A" .. AC,
["É"] = "E" .. AC,
["Í"] = "I" .. AC,
["Ó"] = "O" .. AC,
["Ú"] = "U" .. AC,
["Ý"] = "Y" .. AC,
}
function export.tr(text, lang, sc)--translit any words or phrases
-- Remove word-final hard sign, either utterance-finally or followed by
-- a non-letter character such as space, comma, period, hyphen, etc.
text = rsub(text, "[Ъъ]$", "")
text = rsub(text, "[Ъъ]([%A])", "%1")
text = rsub(text, "'+", { ["'"] = 'ʺ' }) -- neutral apostrophe
text = rsub(text, '.', regular_tt)
text = rsub(text, '.', obsolete_tt)
return text
end
function export.reverse_tr(text)--reverse-translit any words or phrases
local reverse_tt = {}
for k, v in pairs(regular_tt) do
reverse_tt[v] = k
end
reverse_tt['ʺ'] = "'"
reverse_tt['ʹ'] = "ь"
reverse_tt['y'] = "и"
reverse_tt['Y'] = "И"
text = rsub(text, '.', acute_decomposer)
text = rsub(text, '[Jj][aeiu]', reverse_tt)
text = rsub(text, '[Šš]č', reverse_tt)
text = rsub(text, '.', reverse_tt)
return text
end
return export
jc4fenr9dubo55lyz0uby0u6ikura7b
Mô đun:tt-translit
828
280606
2512181
2099135
2026-08-07T16:13:18Z
Hiyuune
50834
2512181
Scribunto
text/plain
local export = {}
local m_str_utils = require('Module:string utilities')
local gsub = m_str_utils.gsub
local match = m_str_utils.match
local format = mw.ustring.format
local lower = m_str_utils.lower
local function upper(text)
return m_str_utils.upper(gsub(text, 'i', 'İ'))
end
local u = mw.ustring.char
-- apply gsub() repeatedly until no change
local function gsub_repeatedly(term, foo, bar)
while true do
local new_term = gsub(term, foo, bar)
if new_term == term then
return term
end
term = new_term
end
end
local tt = {
['б']='b', ['в']='w', ['г']='g', ['д']='d',
['ж']='j', ['з']='z', ['й']='y', ['к']='k',
['л']='l', ['м']='m', ['н']='n', ['п']='p',
['р']='r', ['с']='s', ['т']='t', ['ф']='f',
['х']='x', ['ч']='ç', ['ш']='ş',
['җ']='c', ['ң']='ñ', ['һ']='h',
['ц']='ts', ['щ']='şç',
['а']='a', ['ы']='ı', ['о']='o', ['у']='u',
['ә']='ä', ['э']='e', ['и']='i', ['ө']='ö', ['ү']='ü',
--[[ я ]] --[[ е ]] --[[ ю ]]
['ь']='ʹ', ['ъ']='ʺ', ['ё']='yo',
['ҡ']='q', ['ғ']='ğ', ['ӹ']='ıy', ['â']='â',
['ʔ']='ʹ', ['ӯ']='v',
}
local consonants = 'бвгджзйклмнпрстфхчшҗңһцщҡғʔӯ'
local vowels_hard = 'аыӹоу'
local vowels_soft = 'әэиөү'
local vowels_iotated = 'яею' -- ё is only in Russian loans
local vowels = vowels_hard .. vowels_soft
local vowels_iotated2soft = {['я']='йә', ['е']='йэ', ['ю']='йү'}
local vowels_iotated2hard = {['я']='йа', ['е']='йы', ['ю']='йу'}
local consonants_soft2hard = {['к']='ҡ', ['г']='ғ'}
local vowels_hard2soft = {['а']='ә', ['ы']='э', ['ӹ']='и', ['о']='ө', ['у']='ү'}
function export.tr(text, lang, sc)
if sc == 'tt-Arab' then
return export.tr_Arab_SU(text, lang, sc)
elseif sc == 'Arab' then -- XXX: hackish script code
return export.tr_Arab(text, lang, sc)
end
-- store capitalization
text = gsub(text, '([Ё-ЯҖҢҺӘӨҮ][Ё-ЯҖҢҺӘӨҮ]+)', function(word) return '\14' .. lower(word) .. '\15' end)
text = gsub(text, '([Ё-ЯҖҢҺӘӨҮ])', function(ch) return '\14' .. lower(ch) end)
-- simplify digraphs
text = gsub(text, 'ый', 'ӹ')
text = gsub(text, '([кг])(ъ)', consonants_soft2hard)
-- process Perso-Arabic glottal stop
text = gsub(text,
format('([%s])(э)', vowels),
'%1ʔ'
)
-- normalize CV ⟨е⟩
text = gsub(text, 'йе', 'ййэ')
text = gsub(text,
format('([%s])(е)', consonants),
'%1э'
)
-- process Perso-Arabic soft-consonant alef
text = gsub(text, '([кгл])(я)', '%1â')
-- Russian loan sounds
-- XXX: an idea: identify Russian loans by adding an accent mark?
-- native tatar /-w/ is spelled as ⟨-у, -ү⟩
text = gsub(text,
format('([%s])([в])(.?)', vowels, consonants, following),
function(v, ruv, following)
return v .. ((following == '' or match(following, '[%A' .. consonants .. ']')) and 'ӯ' or ruv) .. following
end
)
-- XXX: can this be safely expanded to -ова?
text = gsub(text, 'ова', 'оӯа')
-- process iotated vowels
-- detect soft vowel by next vowel
text = gsub(text,
format('([%s])([%s]*[%s])', vowels_iotated, consonants, vowels_soft),
function(v, cv)
return vowels_iotated2soft[v] .. cv
end
)
-- detect soft vowel by soft sign
text = gsub(text,
format('([%s])([%s])(ь)', vowels_iotated, consonants),
function(v, c, soft_sign)
return vowels_iotated2soft[v] .. c
end
)
-- detect soft vowel by previous vowel
text = gsub_repeatedly(text,
format('([%s])([%s])', vowels_soft, vowels_iotated),
function(v_soft, v)
return v_soft .. vowels_iotated2soft[v]
end
)
-- process remaining
text = gsub(text,
format('([%s])', vowels_iotated),
vowels_iotated2hard
)
-- fix for possessed verbal noun
text = gsub(text, 'үйэ', 'үэ')
-- /q, ğ/ is indicated by using a hard vowel, even in soft vowel words
-- detect soft vowel by next vowel
text = gsub(text,
format('([кг])([%s])([%s]+[%s])', vowels_hard, consonants, vowels_soft),
function(kg, v, cv)
return consonants_soft2hard[kg] .. vowels_hard2soft[v] .. cv
end
)
-- detect soft vowel by soft sign
text = gsub(text,
format('([кг])([%s])([%s])(ь)', vowels_hard, consonants),
function(kg, v, c, soft_sign)
return consonants_soft2hard[kg] .. vowels_hard2soft[v] .. c
end
)
-- detect hard vowel CV environments
text = gsub(text,
format('([кг])([%s])', vowels_hard),
function(kg, v)
return consonants_soft2hard[kg] .. v
end
)
-- detect hard vowel VC environments
text = gsub(text,
format('([%s])([кг])(.?)', vowels_hard),
function(v, kg, following)
return v .. ((following == '' or match(following, '[%A' .. consonants .. ']')) and consonants_soft2hard[kg] or kg) .. following
end
)
-- process remaining
text = gsub(text, '([кг])(ь)', '%1')
-- hyphenate compound words
-- ⟨дөнья⟩ is not a compound word but it is compound-shaped. oh well.
text = gsub(text,
format('([%s])([%s])(ь)(й)', vowels_soft, consonants),
'%1%2-%4'
)
text = gsub(text,
format('([%s])([%s])(ъ)(й)', vowels_hard, consonants),
'%1%2-%4'
)
-- resolve vowel hiatus with /i, u/ > /iy, uw/
text = gsub_repeatedly(text, '(и)([' .. vowels .. '])', '%1й%2')
text = gsub_repeatedly(text, '([уү])([' .. vowels .. '])', '%1в%2')
-- process /w/ offglide
text = gsub(text, '([' .. vowels .. '])[уү]', '%1в')
-- transliterate
text = gsub(text, '.', tt)
-- restore capitalization
text = gsub(text, '\14(%a+)\15', function(word) return upper(word) end)
text = gsub(text, '\14(.)', function(ch) return upper(ch) end)
return text
end
local tt_Arab_SU = {
-- [[s:mul:Рус мәктәпләре өчен татар теле дәреслеге/13]]
-- [[Wiktionary:Tatar entry guidelines]]
['ا']='а', ['ە']='ә',
['ب']='б', ['پ']='п', ['ت']='т',
['ج']='җ', ['چ']='ч', ['ح']='х',
['د']='д',
['ر']='р', ['ز']='з', ['ژ']='ж',
['س']='с', ['ش']='ш',
['ع']='ғ',
['ف']='ф', ['ق']='ҡ',
['ك']='к', ['گ']='г', ['ڭ']='ң',
['ل']='л',
['م']='м',
['ن']='н',
['ۇ']='ө', ['و']='ү', ['ۋ']='ӯ',
['ھ']='һ',
['ىُ']='э', ['ی']='и',
['ئ']='ʔ', ['ࢭ']='ъ',
--[[
['ث']='с', ['خ']='х', ['ذ']='з', ['ص']='с',
['ض']='з', ['ط']='т', ['ظ']='з', ['غ']='ғ',
]]
-- XXX: which set?
['۱']='1', ['۲']='2', ['۳']='3', ['۴']='4', ['۵']='5',
['۶']='6', ['۷']='7', ['۸']='8', ['۹']='9', ['۰']='0',
['١']='1', ['٢']='2', ['٣']='3', ['٤']='4', ['٥']='5',
['٦']='6', ['٧']='7', ['٨']='8', ['٩']='9', ['٠']='0',
['،']=',', ['؟']='?', ['ـ']='-',
}
-- XXX: using /и/ for now. are there rules for reading as /и/ vs. /ый/?
local vowels_soft2hard_Arab_SU = {['э']='ы', ['и']='и', ['ө']='о', ['ү']='у'}
function export.tr_Arab_SU(text, lang, sc)
-- automatic insertion of /э, ы/ would be Cool
-- but maybe we don't have to worry about it
-- since яңалиф also omits them
text = gsub(text, 'ىُ', tt_Arab_SU) -- does not have a dedicated Unicode codepoint
text = gsub(text, '.', tt_Arab_SU)
text = gsub(text, 'ии([әэөаү])', 'ий%1')
text = gsub(text, 'и([әэөаү])', 'й%1')
text = gsub(text, '([әэөаүи])и', '%1й')
text = gsub(text, 'ү([әэөаи])', 'в%1')
text = gsub(text, '([әэөаиү])ү', '%1в')
text = gsub(text,
'(%a+)',
function(word)
word = gsub(word, format('^(ъ?)(и)([%s])', consonants), '%1й%3')
word = gsub(word, format('^(ъ?)(ʔ)([%s])', consonants), '%1э%3')
word = gsub(word, '^(ъ?)(ʔ)', '%1')
if match(word, '[ъаҡғ]') then
word = gsub(word, format('([%s])', vowels_soft), vowels_soft2hard_Arab_SU)
end
if match(word, '[' .. vowels .. ']') then
word = gsub(word, 'ъ', '')
end
return word
end
)
text = gsub(text, '.', tt)
return text
end
local A = u(0x064E)
local I = u(0x0650)
local U = u(0x064F)
local AN = u(0x064B)
local IN = u(0x064D)
local UN = u(0x064C)
local AA = u(0x0670)
local ZWNJ = u(0x200C)
local SUKUN = u(0x0652)
local SHADDA = u(0x0651)
local diacritics = A .. I .. U .. AN .. IN .. UN .. AA .. ZWNJ .. SUKUN .. SHADDA
local tt_Arab = {
-- [[Wiktionary:Tatar entry guidelines]]
-- used in native Tatar
['ا']='а',
['ب']='б', ['ت']='т',
['ج']='җ',
['د']='д',
['ر']='р', ['ز']='з',
['س']='с', ['ش']='ш',
['ف']='ф',
['ك']='к',
['ل']='л',
['م']='м',
['ن']='н',
['و']='ү',
['ی']='и',
-- used in native Tatar, not used in Arabic
['پ']='п', ['چ']='ч', ['ژ']='ж',
['گ']='г', ['ڭ']='ң', ['ۋ']='ӯ',
-- used in native Tatar, produces hard vowels
['خ']='хъ', ['غ']='ғъ', ['ق']='ҡъ',
['ص']='съ', ['ط']='тъ',
-- used in Perso-Arabic
['ه']='һ', ['ث']='с', ['ع']='ғ', ['ح']='х',
['ظ']='з', ['ذ']='з', ['ض']='з',
['آ']='ʔа',
['ء']='ʔ', ['أ']='ʔ', ['ؤ']='ʔ', ['ئ']='ʔ',
['ۇ']='ө',
[A]='ә', [I]='и', [U]='ө', [AA]='а',
[AN]='ән', [IN]='ин', [UN]='өн',
[ZWNJ]='-', [SUKUN]='',
[A..'ا']='а', [AA..'ا']='а', [AN..'ا']='ан',
[I..'ی']='и',
[U..'و']='ү',
--[A..'ه']='ә', [I..'ه']='и',
-- XXX: which set?
['۱']='1', ['۲']='2', ['۳']='3', ['۴']='4', ['۵']='5',
['۶']='6', ['۷']='7', ['۸']='8', ['۹']='9', ['۰']='0',
['١']='1', ['٢']='2', ['٣']='3', ['٤']='4', ['٥']='5',
['٦']='6', ['٧']='7', ['٨']='8', ['٩']='9', ['٠']='0',
['،']=',', ['؟']='?', ['ـ']='-',
}
local vowels_soft2hard_Arab = {['ә']='а', ['э']='ы', ['и']='ый', ['ө']='о', ['ү']='у'}
function export.tr_Arab(text, lang, sc)
text = gsub(text,
format('([%s]+)', '%a' .. diacritics),
function(word)
word = gsub(word, '^ا', 'ʔъ')
word = gsub(word, '^ی', 'й')
word = gsub(word, '^و', 'в')
word = gsub(word, format('([^%s])(ه)$', diacritics), '%1ә')
word = gsub(word, format('([^%s])(ه)%s', diacritics, ZWNJ), '%1ә')
word = gsub(word, format('(%s)(ه)%s', A, ZWNJ), 'ә')
word = gsub(word, format('([%s])(ه)$', A .. I .. U), '%1')
--word = gsub(word, format('([%s])(%s)([%s])$', '%a', SUKUN, '%a'), '%1е%3')
return word
end
)
text = gsub(text,
format('([%s])(%s)', A .. I .. U .. AN .. IN .. UN .. AA, SHADDA),
'%2%1'
)
text = gsub(text,
format('(.)(%s)', SHADDA),
'%1%1'
)
text = gsub(text, format('[%s]%s', A .. I .. U .. AN .. IN .. UN .. AA, '%a'), tt_Arab)
text = gsub(text, '.', tt_Arab)
-- process soft-consonant alef
text = gsub(text, '([кгл])(а)', '%1â')
text = gsub(text, '(ʔ)(ъ)([әи])', '%1%3') -- ⟨اَدَب⟩ ⟨اِجْتِهَاد⟩
text = gsub(text, format('ъ([%s])', vowels_soft), vowels_soft2hard_Arab)
text = gsub(text, 'ъ', '')
text = gsub(text,
'(%a+)',
function(word)
word = gsub(word, format('^ʔ([%s])', vowels), '%1')
return word
end
)
text = gsub(text, '.', tt)
return text
end
return export
pscrmu92phovvtr006w9sulii72tc5t
Mô đun:ug-translit
828
280617
2512182
2099163
2026-08-07T16:13:49Z
Hiyuune
50834
2512182
Scribunto
text/plain
local export = {}
local data = {}
data["ug-Arab"] = {
-- consonants
["م"] = "m", ["ن"] = "n", ["د"] = "d", ["ت"] = "t",
["ب"] = "b", ["پ"] = "p", ["ف"] = "f", ["ق"] = "q",
["ك"] = "k", ["ڭ"] = "ng", ["گ"] = "g", ["غ"] = "gh",
["ھ"] = "h", ["خ"] = "x", ["چ"] = "ch",
["ج"] = "j", ["ژ"] = "zh", ["ز"] = "z", ["س"] = "s",
["ش"] = "sh", ["ر"] = "r", ["ل"] = "l", ["ئ"] = "'",
["ي"] = "y", ["ۋ"] = "w",
-- vowels
["ا"] = "a", ["ە"] = "e", ["ې"] = "ë", ["ى"] = "i",
["و"] = "o", ["ۆ"] = "ö", ["ۇ"] = "u", ["ۈ"] = "ü",
-- punctuation
["؟"]="?",
["،"]=",",
["؛"]=";",
["ـ"]="-"
}
data["Arab"] = data["ug-Arab"]
data["Cyrl"] = {
["А"] = "A", ["Б"] = "B", ["В"] = "W", ["Г"] = "G", ["Ғ"] = "Gh", ["Д"] = "D", ["Е"] = "Ë", ["Ә"] = "E", ["Ж"] = "Zh", ["Җ"] = "J",
["З"] = "Z", ["И"] = "I", ["Й"] = "Y", ["К"] = "K", ["Қ"] = "Q", ["Л"] = "L", ["М"] = "M", ["Н"] = "N", ["Ң"] = "Ng", ["О"] = "O",
["Ө"] = "Ö", ["П"] = "P", ["Р"] = "R", ["С"] = "S", ["Т"] = "T", ["У"] = "U", ["Ү"] = "Ü", ["Ф"] = "F", ["Х"] = "X", ["Һ"] = "H",
["Ч"] = "Ch", ["Ш"] = "Sh", ["Ю"] = "Yu", ["Я"] = "Ya",
["Э"] = "É",
["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["ғ"] = "gh", ["д"] = "d", ["е"] = "ë", ["ә"] = "e", ["ж"] = "zh", ["җ"] = "j",
["з"] = "z", ["и"] = "i", ["й"] = "y", ["к"] = "k", ["қ"] = "q", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["ң"] = "ng", ["о"] = "o",
["ө"] = "ö", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ү"] = "ü", ["ф"] = "f", ["х"] = "x", ["һ"] = "h",
["ч"] = "ch", ["ш"] = "sh", ["ю"] = "yu", ["я"] = "ya",
["э"] = "é",
}
function export.tr(text, lang, sc)
if not sc then
sc = require("Module:languages").getByCode(lang):findBestScript(text):getCode()
end
if sc ~= "ug-Arab" and sc ~= "Arab" and sc ~= "Cyrl" then
return nil
end
-- remove initial hamza
text = mw.ustring.gsub(text, "^\216\166(.)", "%1")
text = mw.ustring.gsub(text, "%s\216\166(.)", " %1")
-- add apostrophe in some cases
text = mw.ustring.gsub(text, "([اەوۇۆۈېىаәоуөүеиАӘОУӨҮЕИ])([ڭң])([اەوۇۆۈېىаәоуөүеи])", "%1'%2%3") -- V'ngV
text = mw.ustring.gsub(text, "([نн])([گغгғ])", "%1'%2") -- n'g, n'gh
text = mw.ustring.gsub(text, "([ڭزسңзс])([ھһ])", "%1'%2") -- ng'h, z'h, s'h
text = mw.ustring.gsub(text, '.', data[sc])
return text
end
return export
d5ax0ds9jr6zxr8izw2hw40kx3x0upt
Bản mẫu:mul-symbol
10
283575
2512310
2333333
2026-08-08T09:37:30Z
TheHighFighter2
42988
/* */ Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2512310
wikitext
text/x-wiki
{{head|mul|Ký hiệu|nolinkhead={{{nolinkhead|}}}|head={{{head|}}}|head2={{{head2|}}}|head3={{{head3|}}}|head4={{{head4|}}}|sc={{{sc|{{mul-symbol/script|{{bestscript|mul|{{{head|{{PAGENAME}}}}}}}}}}}}|sort={{{sort|}}}|cat2={{{cat2|}}}<!--
-->|{{#if:{{{name|}}}|tên gọi tiếng Việt}}|{{{name|}}}|f1nolink={{{namenolink|}}}|f1lang=en<!--
-->|hoặc|{{{name2|}}}|f2nolink={{{name2nolink|}}}|f2lang=en<!--
-->|hoặc|{{{name3|}}}|f3nolink={{{name3nolink|}}}|f3lang=en<!--
-->|hoặc|{{{name4|}}}|f4nolink={{{name4nolink|}}}|f4lang=en<!--
-->}}<!--
--><noinclude>{{tài liệu}}</noinclude>
f5tiz27q6yemvt3s81tavsngzdct3wj
vằn ve
0
287797
2512136
2116225
2026-08-07T12:07:24Z
Hiyuune
50834
2512136
wikitext
text/x-wiki
=={{langname|tyz}}==
==={{section|pron}}===
{{tyz-IPA}}
==={{section|adv}}===
{{head|tyz|Phó từ}}
# [[sớm sủa]].
#: {{syn|tyz|chạu nhám}}
==={{section|ref}}===
* {{R:Lương Bèn}}
5p45tk13wdl6zn9kobp22mefwmz52u3
chạu nhám
0
287798
2512138
2116224
2026-08-07T12:09:37Z
Hiyuune
50834
2512138
wikitext
text/x-wiki
=={{langname|tyz}}==
==={{ĐM|pron}}===
{{tyz-IPA}}
==={{ĐM|adv}}===
{{head|tyz|Phó từ}}
# [[sớm sủa]].
#: {{syn|tyz|vằn ve}}
==={{ĐM|ref}}===
* {{R:Lương Bèn}}
6ylqeyjgtyym1upc5wa3beev740d8sw
ala
0
287946
2512204
2326310
2026-08-08T02:08:41Z
WhoAlone
40420
2512204
wikitext
text/x-wiki
{{also|Phụ lục:Biến thể của "ala"}}
{{minitoc}}
=={{langname|mul}}==
==={{section|symbol}}===
{{mul-symbol}}
# {{ISO 639|3}}
=={{langname|pga}}==
==={{section|pron}}===
{{pga-IPA}}
==={{section|adj}}===
{{head|pga|Tính từ}}
# Bị [[chia]] cho.
==={{section|ref}}===
* {{R:pga:Smith-Ama|page=120}}
=={{langname|njo}}==
==={{section|v}}===
{{head|njo|Động từ}}
# {{lb|njo|Chungli}} [[xuống|Xuống]].
===={{section|infl}}====
{{njo-conj-c|a=1}}
===={{section|drv}}====
{{col|njo
|lao
|-tsüla
}}
==={{section|further}}===
* {{R:njo:Clark 1911|ALA}}
=={{langname|ast}}==
==={{section|etym}}===
Từ {{inh|ast|la|ala|āla|t=cánh}}.
==={{section|pron}}===
{{ast-pr}}
==={{section|n}}===
{{ast-noun|f|ales}}
# [[cánh|cánh]]
# [[vây|Vây]] [[cá]].
#: {{syn|ast|aleta}}
=={{langname|ca}}==
==={{section|etym}}===
Từ {{inh|ca|la|ala|āla|t=cánh}}.
==={{section|pron}}===
* {{ca-IPA}}
* {{audio|ca|LL-Q7026 (cat)-Unjoanqualsevol-ala.wav|a=Catalunya}}
* {{homophones|ca|hala}}
==={{section|n}}===
{{ca-noun|f}}
# [[cánh|Cánh]].
===={{section|drv}}====
* {{l|ca|alat}}
* {{l|ca|aleta}}
* {{l|ca|aletejar}}
===={{section|rel}}====
* {{l|ca|alar}}
==={{section|further}}===
* {{R:ca:IEC2}}
* {{R:ca:GDLC}}
* {{R:ca:DNV}}
* {{R:ca:DCVB}}
=={{langname|cje}}==
==={{section|n}}===
{{head|cje|Danh từ}}
# {{label|cje|động vật học}} [[rắn|Rắn]].
=={{langname|rgs}}==
==={{section|pron}}===
* {{IPA4|rgs|/alaː/}}
==={{section|n}}===
{{head|rgs|Danh từ}}
# {{label|rgs|động vật học}} [[rắn|Rắn]].
{{c|rgs|Lớp Bò sát}}
=={{langname|ssy}}==
==={{section|n}}===
{{head|ssy|Danh từ}}
# [[dê|Dê]].
==={{section|ref}}===
* Moreno Vergari; Roberta Vergari (2007), ''A basic Saho-English-Italian Dictionary'' (Từ điển cơ bản Saho-Anh-Ý)
925hi7v3qc6svjccr8ttdg8kqa66425
Mô đun:kmr-headword
828
290943
2512338
2244378
2026-08-08T11:24:20Z
Hiyuune
50834
2512338
Scribunto
text/plain
local export = {}
local pos_functions = {}
local m_scripts = require("Module:scripts")
local en_utilities_module = "Module:en-utilities"
local lang = require("Module:languages").getByCode("kmr")
local langname = lang:getCanonicalName()
local ku_sc = m_scripts.getByCode("ku-Arab")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local boolean = {type = "boolean"}
local list = {list = true}
local suffix_categories = {
["adjectives"] = "Tính từ",
["adverbs"] = true,
["nouns"] = true,
["verbs"] = true,
}
local function track(page)
require("Module:debug").track("kmr-headword/" .. page)
return true
end
local function glossary_link(entry, text)
text = text or entry
return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]"
end
local function process_arabic_spellings(spellings)
local inflection = {}
for _, spelling in ipairs(spellings) do
table.insert(inflection, {term = spelling, sc = ku_sc})
end
inflection.label = "chính tả Ả Rập"
return inflection
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local tracking_categories = {}
local poscat = frame.args[1]
or error("Plural part of speech e.g. 'nouns' has not been specified. Please pass parameter 1 to the module invocation.")
local params = {
["head"] = list,
["tr"] = {list = true, allow_holes = true},
["id"] = {},
["ar"] = list,
["suff"] = boolean,
["c"] = boolean,
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local data = {
lang = lang,
pos_category = poscat,
categories = {},
heads = args["head"],
translits = args["tr"],
genders = {},
inflections = {},
id = args["id"],
categories = {}
}
if args["suff"] then
data.pos_category = "Hậu tố"
if suffix_categories[poscat] then
local singular_poscat = poscat:gsub("s$", "")
table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
else
error("Không có thể loại dành cho dạng hậu tố " .. poscat .. ".")
end
end
if pos_functions[poscat] then
pos_functions[poscat].func(args, data, tracking_categories)
end
if #args["ar"] > 0 then
table.insert(data.inflections, process_arabic_spellings(args["ar"]))
end
return require("Module:headword").full_headword(data)
.. require("Module:utilities").format_categories(tracking_categories, lang)
end
pos_functions["Động từ"] = {
params = {
[1] = {},
[2] = {},
},
func = function(args, data, tracking_categories)
if args[1] then
table.insert(data.inflections, {label = "ngôi thứ 3 hiện tại đơn số ít", args[1], accel = {form = '3|s|pres'}})
end
if args[2] then
table.insert(data.inflections, {label = "thì quá khứ", args[2], accel = {form = 'past'}})
end
end
}
pos_functions["Tính từ"] = {
params = {
[1] = {alias_of = "so sánh hơn", list = false},
["comparative"] = list, --comparative(s)
[2] = {alias_of = "so sánh nhất", list = false},
["superlative"] = list, --superlative(s)
["c"] = boolean,
},
func = function(args, data, tracking_categories)
if args.comparative[1] == "-" then
table.insert(data.inflections, {label = "không so sánh"})
table.insert(data.categories, "Tính từ " .. langname .. " không so sánh được")
else
if #args.comparative > 0 then
args.comparative.label = glossary_link("so sánh hơn")
args.comparative.accel = {form = "comparative"}
table.insert(data.inflections, args.comparative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh hơn"), accel = {form = 'comparative'}, {term = PAGENAME ..'tir'}})
end
end
if #args.superlative > 0 then
args.superlative.label = glossary_link("so sánh nhất")
args.superlative.accel = {form = "superlative"}
table.insert(data.inflections, args.superlative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh nhất"), accel = {form = 'superlative'}, {term = '[[herî]] ' .. PAGENAME}, {term = '[[tewrî]] ' .. PAGENAME}})
end
end
end
end
}
local noun_params = {
[1] = {alias_of = "g", list = false},
["g"] = list, --gender(s)
[2] = {alias_of = "pl", list = false},
["pl"] = list, --plural(s)
["f"] = list, --feminine form(s)
["m"] = list, --masculine form(s)
}
local allowed_genders = {
["m"] = true,
["f"] = true,
["n"] = true,
["mf"] = true,
["mfbysense"] = true,
["m-p"] = true,
["f-p"] = true,
["n-p"] = true,
}
local function do_nouns(pos, args, data, tracking_categories)
local genders = {}
for _, g in ipairs(args.g) do
if not allowed_genders[g] then
error("Không rõ giống: " .. g)
end
if g == "mf" then
table.insert(genders, "m")
table.insert(genders, "f")
else
table.insert(genders, g)
end
end
if #genders > 0 then
data.genders = genders
else
data.genders = {"?"}
end
local plpos = require(en_utilities_module).pluralize(pos)
-- Check for special plural signals
local mode = nil
if args.pl[1] == "?" or args.pl[1] == "!" or args.pl[1] == "-" or args.pl[1] == "-~" or args.pl[1] == "~" or args.pl[1] == "#" then
mode = args.pl[1]
table.remove(args.pl, 1) -- Remove the mode parameter
end
if mode == "?" then
-- Plural is unknown
table.insert(data.categories, plpos .. langname .. " có số nhiều không rõ")
elseif mode == "!" then
-- Plural is not attested
table.insert(data.inflections, {label = "plural not attested"})
table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals")
return
elseif mode == "-" then
-- Uncountable noun; may occasionally have a plural
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = glossary_link("không đếm được")})
elseif mode == "-~" then
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")})
elseif mode == "~" then
-- Mixed countable/uncountable noun, always has a plural
table.insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")})
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.categories, plpos .. langname .. " đếm được")
elseif mode == "#" or pos == "Danh từ" then
-- Countable nouns; the default for regular nouns but not proper nouns
if mode == "#" then
table.insert(data.inflections, {label = glossary_link("đếm được")})
end
-- Not enough nouns properly use - in the second argument
-- table.insert(data.categories, langname .. " countable " .. plpos)
end
if #args.pl > 0 then
args.pl.label = "số nhiều"
args.pl.accel = {form = "p"}
table.insert(data.inflections, args.pl)
end
if #args.f > 0 then
args.f.label = "giống cái"
table.insert(data.inflections, args.f)
end
if #args.m > 0 then
args.m.label = "giống đực"
table.insert(data.inflections, args.m)
end
end
pos_functions["Danh từ"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ", args, data, tracking_categories)
end,
}
pos_functions["Danh từ riêng"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ riêng", args, data, tracking_categories)
end,
}
return export
c01s6gja96o44ecwjayclhffqko2khp
2512339
2512338
2026-08-08T11:25:03Z
Hiyuune
50834
2512339
Scribunto
text/plain
local export = {}
local pos_functions = {}
local m_scripts = require("Module:scripts")
local en_utilities_module = "Module:en-utilities"
local lang = require("Module:languages").getByCode("kmr")
local langname = lang:getCanonicalName()
local ku_sc = m_scripts.getByCode("ku-Arab")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local boolean = {type = "boolean"}
local list = {list = true}
local suffix_categories = {
["Tính từ"] = true,
["adverbs"] = true,
["nouns"] = true,
["verbs"] = true,
}
local function track(page)
require("Module:debug").track("kmr-headword/" .. page)
return true
end
local function glossary_link(entry, text)
text = text or entry
return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]"
end
local function process_arabic_spellings(spellings)
local inflection = {}
for _, spelling in ipairs(spellings) do
table.insert(inflection, {term = spelling, sc = ku_sc})
end
inflection.label = "chính tả Ả Rập"
return inflection
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local tracking_categories = {}
local poscat = frame.args[1]
or error("Plural part of speech e.g. 'nouns' has not been specified. Please pass parameter 1 to the module invocation.")
local params = {
["head"] = list,
["tr"] = {list = true, allow_holes = true},
["id"] = {},
["ar"] = list,
["suff"] = boolean,
["c"] = boolean,
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local data = {
lang = lang,
pos_category = poscat,
categories = {},
heads = args["head"],
translits = args["tr"],
genders = {},
inflections = {},
id = args["id"],
categories = {}
}
if args["suff"] then
data.pos_category = "Hậu tố"
if suffix_categories[poscat] then
local singular_poscat = poscat:gsub("s$", "")
table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
else
error("Không có thể loại dành cho dạng hậu tố " .. poscat .. ".")
end
end
if pos_functions[poscat] then
pos_functions[poscat].func(args, data, tracking_categories)
end
if #args["ar"] > 0 then
table.insert(data.inflections, process_arabic_spellings(args["ar"]))
end
return require("Module:headword").full_headword(data)
.. require("Module:utilities").format_categories(tracking_categories, lang)
end
pos_functions["Động từ"] = {
params = {
[1] = {},
[2] = {},
},
func = function(args, data, tracking_categories)
if args[1] then
table.insert(data.inflections, {label = "ngôi thứ 3 hiện tại đơn số ít", args[1], accel = {form = '3|s|pres'}})
end
if args[2] then
table.insert(data.inflections, {label = "thì quá khứ", args[2], accel = {form = 'past'}})
end
end
}
pos_functions["Tính từ"] = {
params = {
[1] = {alias_of = "so sánh hơn", list = false},
["comparative"] = list, --comparative(s)
[2] = {alias_of = "so sánh nhất", list = false},
["superlative"] = list, --superlative(s)
["c"] = boolean,
},
func = function(args, data, tracking_categories)
if args.comparative[1] == "-" then
table.insert(data.inflections, {label = "không so sánh"})
table.insert(data.categories, "Tính từ " .. langname .. " không so sánh được")
else
if #args.comparative > 0 then
args.comparative.label = glossary_link("so sánh hơn")
args.comparative.accel = {form = "comparative"}
table.insert(data.inflections, args.comparative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh hơn"), accel = {form = 'comparative'}, {term = PAGENAME ..'tir'}})
end
end
if #args.superlative > 0 then
args.superlative.label = glossary_link("so sánh nhất")
args.superlative.accel = {form = "superlative"}
table.insert(data.inflections, args.superlative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh nhất"), accel = {form = 'superlative'}, {term = '[[herî]] ' .. PAGENAME}, {term = '[[tewrî]] ' .. PAGENAME}})
end
end
end
end
}
local noun_params = {
[1] = {alias_of = "g", list = false},
["g"] = list, --gender(s)
[2] = {alias_of = "pl", list = false},
["pl"] = list, --plural(s)
["f"] = list, --feminine form(s)
["m"] = list, --masculine form(s)
}
local allowed_genders = {
["m"] = true,
["f"] = true,
["n"] = true,
["mf"] = true,
["mfbysense"] = true,
["m-p"] = true,
["f-p"] = true,
["n-p"] = true,
}
local function do_nouns(pos, args, data, tracking_categories)
local genders = {}
for _, g in ipairs(args.g) do
if not allowed_genders[g] then
error("Không rõ giống: " .. g)
end
if g == "mf" then
table.insert(genders, "m")
table.insert(genders, "f")
else
table.insert(genders, g)
end
end
if #genders > 0 then
data.genders = genders
else
data.genders = {"?"}
end
local plpos = require(en_utilities_module).pluralize(pos)
-- Check for special plural signals
local mode = nil
if args.pl[1] == "?" or args.pl[1] == "!" or args.pl[1] == "-" or args.pl[1] == "-~" or args.pl[1] == "~" or args.pl[1] == "#" then
mode = args.pl[1]
table.remove(args.pl, 1) -- Remove the mode parameter
end
if mode == "?" then
-- Plural is unknown
table.insert(data.categories, plpos .. langname .. " có số nhiều không rõ")
elseif mode == "!" then
-- Plural is not attested
table.insert(data.inflections, {label = "plural not attested"})
table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals")
return
elseif mode == "-" then
-- Uncountable noun; may occasionally have a plural
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = glossary_link("không đếm được")})
elseif mode == "-~" then
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")})
elseif mode == "~" then
-- Mixed countable/uncountable noun, always has a plural
table.insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")})
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.categories, plpos .. langname .. " đếm được")
elseif mode == "#" or pos == "Danh từ" then
-- Countable nouns; the default for regular nouns but not proper nouns
if mode == "#" then
table.insert(data.inflections, {label = glossary_link("đếm được")})
end
-- Not enough nouns properly use - in the second argument
-- table.insert(data.categories, langname .. " countable " .. plpos)
end
if #args.pl > 0 then
args.pl.label = "số nhiều"
args.pl.accel = {form = "p"}
table.insert(data.inflections, args.pl)
end
if #args.f > 0 then
args.f.label = "giống cái"
table.insert(data.inflections, args.f)
end
if #args.m > 0 then
args.m.label = "giống đực"
table.insert(data.inflections, args.m)
end
end
pos_functions["Danh từ"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ", args, data, tracking_categories)
end,
}
pos_functions["Danh từ riêng"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ riêng", args, data, tracking_categories)
end,
}
return export
oumap6u83b5joqz15q0tt4cgbpi0pz0
2512341
2512339
2026-08-08T11:29:29Z
Hiyuune
50834
2512341
Scribunto
text/plain
local export = {}
local pos_functions = {}
local m_scripts = require("Module:scripts")
local lang = require("Module:languages").getByCode("kmr")
local langname = lang:getCanonicalName()
local ku_sc = m_scripts.getByCode("ku-Arab")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local boolean = {type = "boolean"}
local list = {list = true}
local suffix_categories = {
["Tính từ"] = true,
["Phó từ"] = true,
["Danh từ"] = true,
["Động từ"] = true,
}
local function track(page)
require("Module:debug").track("kmr-headword/" .. page)
return true
end
local function glossary_link(entry, text)
text = text or entry
return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]"
end
local function process_arabic_spellings(spellings)
local inflection = {}
for _, spelling in ipairs(spellings) do
table.insert(inflection, {term = spelling, sc = ku_sc})
end
inflection.label = "chính tả Ả Rập"
return inflection
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local tracking_categories = {}
local poscat = frame.args[1]
or error("Plural part of speech e.g. 'nouns' has not been specified. Please pass parameter 1 to the module invocation.")
local params = {
["head"] = list,
["tr"] = {list = true, allow_holes = true},
["id"] = {},
["ar"] = list,
["suff"] = boolean,
["c"] = boolean,
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local data = {
lang = lang,
pos_category = poscat,
categories = {},
heads = args["head"],
translits = args["tr"],
genders = {},
inflections = {},
id = args["id"],
categories = {}
}
if args["suff"] then
data.pos_category = "Hậu tố"
if suffix_categories[poscat] then
local singular_poscat = poscat:gsub("s$", "")
table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
else
error("Không có thể loại dành cho dạng hậu tố " .. poscat .. ".")
end
end
if pos_functions[poscat] then
pos_functions[poscat].func(args, data, tracking_categories)
end
if #args["ar"] > 0 then
table.insert(data.inflections, process_arabic_spellings(args["ar"]))
end
return require("Module:headword").full_headword(data)
.. require("Module:utilities").format_categories(tracking_categories, lang)
end
pos_functions["Động từ"] = {
params = {
[1] = {},
[2] = {},
},
func = function(args, data, tracking_categories)
if args[1] then
table.insert(data.inflections, {label = "ngôi thứ 3 hiện tại đơn số ít", args[1], accel = {form = '3|s|pres'}})
end
if args[2] then
table.insert(data.inflections, {label = "thì quá khứ", args[2], accel = {form = 'past'}})
end
end
}
pos_functions["Tính từ"] = {
params = {
[1] = {alias_of = "so sánh hơn", list = false},
["comparative"] = list, --comparative(s)
[2] = {alias_of = "so sánh nhất", list = false},
["superlative"] = list, --superlative(s)
["c"] = boolean,
},
func = function(args, data, tracking_categories)
if args.comparative[1] == "-" then
table.insert(data.inflections, {label = "không so sánh"})
table.insert(data.categories, "Tính từ " .. langname .. " không so sánh được")
else
if #args.comparative > 0 then
args.comparative.label = glossary_link("so sánh hơn")
args.comparative.accel = {form = "comparative"}
table.insert(data.inflections, args.comparative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh hơn"), accel = {form = 'comparative'}, {term = PAGENAME ..'tir'}})
end
end
if #args.superlative > 0 then
args.superlative.label = glossary_link("so sánh nhất")
args.superlative.accel = {form = "superlative"}
table.insert(data.inflections, args.superlative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh nhất"), accel = {form = 'superlative'}, {term = '[[herî]] ' .. PAGENAME}, {term = '[[tewrî]] ' .. PAGENAME}})
end
end
end
end
}
local noun_params = {
[1] = {alias_of = "g", list = false},
["g"] = list, --gender(s)
[2] = {alias_of = "pl", list = false},
["pl"] = list, --plural(s)
["f"] = list, --feminine form(s)
["m"] = list, --masculine form(s)
}
local allowed_genders = {
["m"] = true,
["f"] = true,
["n"] = true,
["mf"] = true,
["mfbysense"] = true,
["m-p"] = true,
["f-p"] = true,
["n-p"] = true,
}
local function do_nouns(pos, args, data, tracking_categories)
local genders = {}
for _, g in ipairs(args.g) do
if not allowed_genders[g] then
error("Không rõ giống: " .. g)
end
if g == "mf" then
table.insert(genders, "m")
table.insert(genders, "f")
else
table.insert(genders, g)
end
end
if #genders > 0 then
data.genders = genders
else
data.genders = {"?"}
end
local plpos = pos
-- Check for special plural signals
local mode = nil
if args.pl[1] == "?" or args.pl[1] == "!" or args.pl[1] == "-" or args.pl[1] == "-~" or args.pl[1] == "~" or args.pl[1] == "#" then
mode = args.pl[1]
table.remove(args.pl, 1) -- Remove the mode parameter
end
if mode == "?" then
-- Plural is unknown
table.insert(data.categories, plpos .. langname .. " có số nhiều không rõ")
elseif mode == "!" then
-- Plural is not attested
table.insert(data.inflections, {label = "plural not attested"})
table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals")
return
elseif mode == "-" then
-- Uncountable noun; may occasionally have a plural
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = glossary_link("không đếm được")})
elseif mode == "-~" then
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")})
elseif mode == "~" then
-- Mixed countable/uncountable noun, always has a plural
table.insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")})
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.categories, plpos .. langname .. " đếm được")
elseif mode == "#" or pos == "Danh từ" then
-- Countable nouns; the default for regular nouns but not proper nouns
if mode == "#" then
table.insert(data.inflections, {label = glossary_link("đếm được")})
end
-- Not enough nouns properly use - in the second argument
-- table.insert(data.categories, langname .. " countable " .. plpos)
end
if #args.pl > 0 then
args.pl.label = "số nhiều"
args.pl.accel = {form = "p"}
table.insert(data.inflections, args.pl)
end
if #args.f > 0 then
args.f.label = "giống cái"
table.insert(data.inflections, args.f)
end
if #args.m > 0 then
args.m.label = "giống đực"
table.insert(data.inflections, args.m)
end
end
pos_functions["Danh từ"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ", args, data, tracking_categories)
end,
}
pos_functions["Danh từ riêng"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ riêng", args, data, tracking_categories)
end,
}
return export
4d79htz62sc2uo4b8zs50qxgdjic0e3
2512343
2512341
2026-08-08T11:31:44Z
Hiyuune
50834
2512343
Scribunto
text/plain
local export = {}
local pos_functions = {}
local m_scripts = require("Module:scripts")
local lang = require("Module:languages").getByCode("kmr")
local langname = lang:getCanonicalName()
local ku_sc = m_scripts.getByCode("ku-Arab")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local boolean = {type = "boolean"}
local list = {list = true}
local suffix_categories = {
["adjectives"] = true,
["adverbs"] = true,
["nouns"] = true,
["verbs"] = true,
}
local function track(page)
require("Module:debug").track("kmr-headword/" .. page)
return true
end
local function glossary_link(entry, text)
text = text or entry
return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]"
end
local function process_arabic_spellings(spellings)
local inflection = {}
for _, spelling in ipairs(spellings) do
table.insert(inflection, {term = spelling, sc = ku_sc})
end
inflection.label = "chính tả Ả Rập"
return inflection
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local tracking_categories = {}
local poscat = frame.args[1]
or error("Plural part of speech e.g. 'nouns' has not been specified. Please pass parameter 1 to the module invocation.")
local params = {
["head"] = list,
["tr"] = {list = true, allow_holes = true},
["id"] = {},
["ar"] = list,
["suff"] = boolean,
["c"] = boolean,
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local data = {
lang = lang,
pos_category = poscat,
categories = {},
heads = args["head"],
translits = args["tr"],
genders = {},
inflections = {},
id = args["id"],
categories = {}
}
if args["suff"] then
data.pos_category = "Hậu tố"
if suffix_categories[poscat] then
local singular_poscat = poscat:gsub("s$", "")
table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
else
error("Không có thể loại dành cho dạng hậu tố " .. poscat .. ".")
end
end
if pos_functions[poscat] then
pos_functions[poscat].func(args, data, tracking_categories)
end
if #args["ar"] > 0 then
table.insert(data.inflections, process_arabic_spellings(args["ar"]))
end
return require("Module:headword").full_headword(data)
.. require("Module:utilities").format_categories(tracking_categories, lang)
end
pos_functions["Động từ"] = {
params = {
[1] = {},
[2] = {},
},
func = function(args, data, tracking_categories)
if args[1] then
table.insert(data.inflections, {label = "ngôi thứ 3 hiện tại đơn số ít", args[1], accel = {form = '3|s|pres'}})
end
if args[2] then
table.insert(data.inflections, {label = "thì quá khứ", args[2], accel = {form = 'past'}})
end
end
}
pos_functions["adjectives"] = {
params = {
[1] = {alias_of = "so sánh hơn", list = false},
["comparative"] = list, --comparative(s)
[2] = {alias_of = "so sánh nhất", list = false},
["superlative"] = list, --superlative(s)
["c"] = boolean,
},
func = function(args, data, tracking_categories)
if args.comparative[1] == "-" then
table.insert(data.inflections, {label = "không so sánh"})
table.insert(data.categories, "Tính từ " .. langname .. " không so sánh được")
else
if #args.comparative > 0 then
args.comparative.label = glossary_link("so sánh hơn")
args.comparative.accel = {form = "comparative"}
table.insert(data.inflections, args.comparative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh hơn"), accel = {form = 'comparative'}, {term = PAGENAME ..'tir'}})
end
end
if #args.superlative > 0 then
args.superlative.label = glossary_link("so sánh nhất")
args.superlative.accel = {form = "superlative"}
table.insert(data.inflections, args.superlative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh nhất"), accel = {form = 'superlative'}, {term = '[[herî]] ' .. PAGENAME}, {term = '[[tewrî]] ' .. PAGENAME}})
end
end
end
end
}
local noun_params = {
[1] = {alias_of = "g", list = false},
["g"] = list, --gender(s)
[2] = {alias_of = "pl", list = false},
["pl"] = list, --plural(s)
["f"] = list, --feminine form(s)
["m"] = list, --masculine form(s)
}
local allowed_genders = {
["m"] = true,
["f"] = true,
["n"] = true,
["mf"] = true,
["mfbysense"] = true,
["m-p"] = true,
["f-p"] = true,
["n-p"] = true,
}
local function do_nouns(pos, args, data, tracking_categories)
local genders = {}
for _, g in ipairs(args.g) do
if not allowed_genders[g] then
error("Không rõ giống: " .. g)
end
if g == "mf" then
table.insert(genders, "m")
table.insert(genders, "f")
else
table.insert(genders, g)
end
end
if #genders > 0 then
data.genders = genders
else
data.genders = {"?"}
end
local plpos = pos
-- Check for special plural signals
local mode = nil
if args.pl[1] == "?" or args.pl[1] == "!" or args.pl[1] == "-" or args.pl[1] == "-~" or args.pl[1] == "~" or args.pl[1] == "#" then
mode = args.pl[1]
table.remove(args.pl, 1) -- Remove the mode parameter
end
if mode == "?" then
-- Plural is unknown
table.insert(data.categories, plpos .. langname .. " có số nhiều không rõ")
elseif mode == "!" then
-- Plural is not attested
table.insert(data.inflections, {label = "plural not attested"})
table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals")
return
elseif mode == "-" then
-- Uncountable noun; may occasionally have a plural
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = glossary_link("không đếm được")})
elseif mode == "-~" then
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")})
elseif mode == "~" then
-- Mixed countable/uncountable noun, always has a plural
table.insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")})
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.categories, plpos .. langname .. " đếm được")
elseif mode == "#" or pos == "Danh từ" then
-- Countable nouns; the default for regular nouns but not proper nouns
if mode == "#" then
table.insert(data.inflections, {label = glossary_link("đếm được")})
end
-- Not enough nouns properly use - in the second argument
-- table.insert(data.categories, langname .. " countable " .. plpos)
end
if #args.pl > 0 then
args.pl.label = "số nhiều"
args.pl.accel = {form = "p"}
table.insert(data.inflections, args.pl)
end
if #args.f > 0 then
args.f.label = "giống cái"
table.insert(data.inflections, args.f)
end
if #args.m > 0 then
args.m.label = "giống đực"
table.insert(data.inflections, args.m)
end
end
pos_functions["Danh từ"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ", args, data, tracking_categories)
end,
}
pos_functions["Danh từ riêng"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ riêng", args, data, tracking_categories)
end,
}
return export
5428qgm8pu20e9uka9ghzg4v4vycgqv
2512346
2512343
2026-08-08T11:33:22Z
Hiyuune
50834
2512346
Scribunto
text/plain
local export = {}
local pos_functions = {}
local m_scripts = require("Module:scripts")
local lang = require("Module:languages").getByCode("kmr")
local langname = lang:getCanonicalName()
local ku_sc = m_scripts.getByCode("ku-Arab")
local PAGENAME = mw.loadData("Module:headword/data").pagename
local boolean = {type = "boolean"}
local list = {list = true}
local suffix_categories = {
["adjectives"] = true,
["adverbs"] = true,
["nouns"] = true,
["verbs"] = true,
}
local function track(page)
require("Module:debug").track("kmr-headword/" .. page)
return true
end
local function glossary_link(entry, text)
text = text or entry
return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]"
end
local function process_arabic_spellings(spellings)
local inflection = {}
for _, spelling in ipairs(spellings) do
table.insert(inflection, {term = spelling, sc = ku_sc})
end
inflection.label = "chính tả Ả Rập"
return inflection
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local tracking_categories = {}
local poscat = frame.args[1]
or error("Plural part of speech e.g. 'nouns' has not been specified. Please pass parameter 1 to the module invocation.")
local params = {
["head"] = list,
["tr"] = {list = true, allow_holes = true},
["id"] = {},
["ar"] = list,
["suff"] = boolean,
["c"] = boolean,
}
if pos_functions[poscat] then
for key, val in pairs(pos_functions[poscat].params) do
params[key] = val
end
end
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
local data = {
lang = lang,
pos_category = poscat,
categories = {},
heads = args["head"],
translits = args["tr"],
genders = {},
inflections = {},
id = args["id"],
categories = {}
}
if args["suff"] then
data.pos_category = "Hậu tố"
if suffix_categories[poscat] then
local singular_poscat = poscat:gsub("s$", "")
table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes")
else
error("Không có thể loại dành cho dạng hậu tố " .. poscat .. ".")
end
end
if pos_functions[poscat] then
pos_functions[poscat].func(args, data, tracking_categories)
end
if #args["ar"] > 0 then
table.insert(data.inflections, process_arabic_spellings(args["ar"]))
end
return require("Module:headword").full_headword(data)
.. require("Module:utilities").format_categories(tracking_categories, lang)
end
pos_functions["Động từ"] = {
params = {
[1] = {},
[2] = {},
},
func = function(args, data, tracking_categories)
if args[1] then
table.insert(data.inflections, {label = "ngôi thứ 3 hiện tại đơn số ít", args[1], accel = {form = '3|s|pres'}})
end
if args[2] then
table.insert(data.inflections, {label = "thì quá khứ", args[2], accel = {form = 'past'}})
end
end
}
pos_functions["Tính từ"] = {
params = {
[1] = {alias_of = "so sánh hơn", list = true},
["comparative"] = list, --comparative(s)
[2] = {alias_of = "so sánh nhất", list = true},
["superlative"] = list, --superlative(s)
["c"] = boolean,
},
func = function(args, data, tracking_categories)
if args.comparative[1] == "-" then
table.insert(data.inflections, {label = "không so sánh"})
table.insert(data.categories, "Tính từ " .. langname .. " không so sánh được")
else
if #args.comparative > 0 then
args.comparative.label = glossary_link("so sánh hơn")
args.comparative.accel = {form = "comparative"}
table.insert(data.inflections, args.comparative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh hơn"), accel = {form = 'comparative'}, {term = PAGENAME ..'tir'}})
end
end
if #args.superlative > 0 then
args.superlative.label = glossary_link("so sánh nhất")
args.superlative.accel = {form = "superlative"}
table.insert(data.inflections, args.superlative)
else
if args["c"] then
table.insert(data.inflections, {label = glossary_link("so sánh nhất"), accel = {form = 'superlative'}, {term = '[[herî]] ' .. PAGENAME}, {term = '[[tewrî]] ' .. PAGENAME}})
end
end
end
end
}
local noun_params = {
[1] = {alias_of = "g", list = false},
["g"] = list, --gender(s)
[2] = {alias_of = "pl", list = false},
["pl"] = list, --plural(s)
["f"] = list, --feminine form(s)
["m"] = list, --masculine form(s)
}
local allowed_genders = {
["m"] = true,
["f"] = true,
["n"] = true,
["mf"] = true,
["mfbysense"] = true,
["m-p"] = true,
["f-p"] = true,
["n-p"] = true,
}
local function do_nouns(pos, args, data, tracking_categories)
local genders = {}
for _, g in ipairs(args.g) do
if not allowed_genders[g] then
error("Không rõ giống: " .. g)
end
if g == "mf" then
table.insert(genders, "m")
table.insert(genders, "f")
else
table.insert(genders, g)
end
end
if #genders > 0 then
data.genders = genders
else
data.genders = {"?"}
end
local plpos = pos
-- Check for special plural signals
local mode = nil
if args.pl[1] == "?" or args.pl[1] == "!" or args.pl[1] == "-" or args.pl[1] == "-~" or args.pl[1] == "~" or args.pl[1] == "#" then
mode = args.pl[1]
table.remove(args.pl, 1) -- Remove the mode parameter
end
if mode == "?" then
-- Plural is unknown
table.insert(data.categories, plpos .. langname .. " có số nhiều không rõ")
elseif mode == "!" then
-- Plural is not attested
table.insert(data.inflections, {label = "plural not attested"})
table.insert(data.categories, langname .. " " .. plpos .. " with unattested plurals")
return
elseif mode == "-" then
-- Uncountable noun; may occasionally have a plural
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = glossary_link("không đếm được")})
elseif mode == "-~" then
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")})
elseif mode == "~" then
-- Mixed countable/uncountable noun, always has a plural
table.insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")})
table.insert(data.categories, plpos .. langname .. " không đếm được")
table.insert(data.categories, plpos .. langname .. " đếm được")
elseif mode == "#" or pos == "Danh từ" then
-- Countable nouns; the default for regular nouns but not proper nouns
if mode == "#" then
table.insert(data.inflections, {label = glossary_link("đếm được")})
end
-- Not enough nouns properly use - in the second argument
-- table.insert(data.categories, langname .. " countable " .. plpos)
end
if #args.pl > 0 then
args.pl.label = "số nhiều"
args.pl.accel = {form = "p"}
table.insert(data.inflections, args.pl)
end
if #args.f > 0 then
args.f.label = "giống cái"
table.insert(data.inflections, args.f)
end
if #args.m > 0 then
args.m.label = "giống đực"
table.insert(data.inflections, args.m)
end
end
pos_functions["Danh từ"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ", args, data, tracking_categories)
end,
}
pos_functions["Danh từ riêng"] = {
params = noun_params,
func = function(args, data, tracking_categories)
return do_nouns("Danh từ riêng", args, data, tracking_categories)
end,
}
return export
4iscaerxwu17g8zbgt6gk4jlq9b2b9x
mata
0
295493
2512216
2347696
2026-08-08T02:12:42Z
WhoAlone
40420
2512216
wikitext
text/x-wiki
=={{langname|ibh}}==
==={{ĐM|etym}}===
So sánh {{cognate|rad|ală}}.
==={{ĐM|noun}}===
{{head|ibh|Danh từ}}
# [[mắt]].
==={{ĐM|ref}}===
* Tam Thi Minh Nguyen, ''A grammar of Bih ''(2013)
{{-bnn-}}
{{-etym-}}
{{inh+|bnn|map-pro|*maCa}}.
{{-noun-}}
{{head|bnn|Danh từ}}
# [[mắt]].
=={{langname|cja}}==
==={{ĐM|noun}}===
{{head|cja|Danh từ}}
# [[mắt]].
==={{ĐM|ref}}===
* Kvoeu-Hor & Timothy Friberg (1978). ''Bôh panuaik Chăm (Western Cham Vocabulary)''. SIL International.
{{c|cja|Khuôn mặt}}
=={{langname|ycr}}==
==={{ĐM|etym}}===
Từ {{derived|ycr|ja|また|tr=mata}}.
==={{ĐM|adv}}===
{{head|ycr|Phó từ}}
# [[cũng]].
==={{ĐM|ref}}===
* {{R:ycr:sound substitution}}
{{-sce-}}
{{-verb-}}
{{head|sce|Động từ}}
# [[quên]].
{{-gad-}}
{{-noun-}}
{{head|gad|Danh từ}}
# [[mắt]].
{{-hro-}}
{{-noun-}}
{{head|hro|Danh từ}}
# [[mắt]].
=={{langname|ibl}}==
==={{ĐM|noun}}===
{{head|ibl|Danh từ}}
# [[mắt]].
==={{ĐM|ref}}===
* ''[https://web.archive.org/web/20250629035249/https://www.tebtebba.org/index.php/resources-menu/publications-menu/books/169-a-handy-guidebook-to-the-ibaloi-language/file A handy guidebook to the Ibaloi language]''. Baguio City, Philippines. Tebtebba Foundation: 2010.
=={{langname|ivb}}==
==={{ĐM|noun}}===
{{head|ivb|Danh từ}}
# [[mắt]].
=={{langname|kak}}==
==={{ĐM|noun}}===
{{head|kak|Danh từ}}
# [[mắt]].
=={{langname|ckv}}==
==={{ĐM|noun}}===
{{head|ckv|Danh từ}}
# [[mắt]].
==={{ĐM|ref}}===
{{R:ckv:Kavalan Dictionary 2006}}
=={{langname|pwm}}==
==={{ĐM|noun}}===
{{head|pwm|Danh từ}}
# [[mắt]].
==={{ĐM|ref}}===
* [https://www.sil.org/system/files/reapdata/92/44/38/92443877659992518163601603685546183876/pwm_ABKD__1977.pdf Molbog Alphabet Book - SIL].
{{-orc-}}
{{-noun-}}
{{head|orc|Danh từ}}
# [[đầu]].
{{-references-}}
* Dale R. Hoskins (2011) ''Phonology of the Orma language''.
{{-rog-}}
{{-noun-}}
{{head|rog|Danh từ}}
# [[mắt]].
{{-rgs-}}
{{-pron-}}
* {{IPA4|rgs|/mataː/}}
{{-noun-}}
{{head|rgs|Danh từ}}
# [[mắt]].
{{c|rgs|Thị giác|Khuôn mặt}}
{{-rar-}}
{{-noun-}}
{{head|rar|Danh từ}}
# [[mắt]].
{{-ref-}}
* TE REO MĀORI KŪKI ‘ĀIRANI NCEA Level 1 Vocabulary List (January 2024).
=={{langname|tao}}==
==={{ĐM|etym}}===
{{inh+|tao|poz-pro|*mata}} và {{kế thừa|tao|map-pro|*maCa}}.
==={{ĐM|noun}}===
{{head|tao|Danh từ}}
# [[mắt]].
==={{ĐM|ref}}===
* [https://abvd.eva.mpg.de/austronesian/language.php?id=335 Từ vựng tiếng Yami] tại Cơ sở dữ liệu ABVD.
6jxnx4t0mjl4pyddeb6h12ebxrq18xw
Mô đun:labels/data/lang/yrk-tun
828
303619
2512192
2156362
2026-08-07T16:24:54Z
Hiyuune
50834
Hiyuune đã đổi [[Mô đun:labels/data/lang/yrk]] thành [[Mô đun:labels/data/lang/yrk-tun]]
2156362
Scribunto
text/plain
local labels = {}
labels["Eastern Nenets"] = {
plain_categories = true,
}
labels["Western Nenets"] = {
plain_categories = true,
}
return require("Module:labels").finalize_data(labels)
9e25h2ns7m23l4fst53lhvyae9tqc5d
Bản mẫu:*đề mục/i
10
307029
2512172
2189687
2026-08-07T15:52:11Z
Hiyuune
50834
2512172
wikitext
text/x-wiki
{{-ibb-}}
{{-ibh-}}
{{-ibl-}}
{{-ibo-}}
{{-idd-}}
{{-idiom-}}
{{-ido-}}
{{-igl-}}
{{-iii-}}
{{-iku-}}
{{-ikw-}}
{{-ili-}}
{{-ilo-}}
{{-imp-verb-}}
{{-ina-}}
{{-ind-}}
{{-indef-adj-}}
{{-indef-article-}}
{{-infix-}}
{{-info-}}
{{-infocat-}}
{{-inh-}}
{{-int-}}
{{-interj-}}
{{-interrog-}}
{{-intr-verb-}}
{{-ior-}}
{{-iow-}}
{{-ipk-}}
{{-irk-}}
{{-isd-}}
{{-ish-}}
{{-isl-}}
{{-ita-}}
{{-itk-}}
{{-ium-}}
{{-izh-}}
9n3b1qdl5h9fskyz2ose5u9slf32fj5
akhar
0
309539
2512228
2325830
2026-08-08T02:17:05Z
WhoAlone
40420
2512228
wikitext
text/x-wiki
=={{langname|cja}}==
==={{section|alt}}===
* {{alter|cja|اکحر}}
==={{section|etym}}===
So sánh {{cognate|sa|अक्षर}}, {{cognate|pi|akkhara}}.
==={{section|noun}}===
{{head|cja|Danh từ}}
# [[chữ cái|Chữ cái]].
=={{langname|cjm}}==
==={{section|alt}}===
* {{alter|cjm|ꨀꨇꩉ}}
==={{section|etym}}===
So sánh {{cognate|sa|अक्षर}}, {{cognate|pi|akkhara}}.
==={{section|pron}}===
* {{IPA4|cjm|/ʔa.kʰar/}}
==={{section|noun}}===
{{head|cjm|Danh từ}}
# [[chữ cái|Chữ cái]].
=={{langname|cje}}==
==={{section|noun}}===
{{head|cje|Danh từ}}
# [[chữ|Chữ]].
{{c|cje|Viết}}
=={{langname|rgs}}==
==={{section|pron}}===
* {{IPA4|rgs|/akhaːr/}}
==={{section|noun}}===
{{head|rgs|Danh từ}}
# [[rễ|Rễ]].
{{c|rgs|Thực vật}}
38n4i9n3gc5wcg1a2i62743hm9hut72
2512237
2512228
2026-08-08T02:20:23Z
Hiyuune
50834
2512237
wikitext
text/x-wiki
=={{langname|cja}}==
==={{section|alt}}===
* {{alter|cja|اکحر}}
==={{section|etym}}===
So sánh {{cognate|sa|अक्षर}}, {{cognate|pi|akkhara}}.
==={{section|noun}}===
{{head|cja|Danh từ}}
# [[chữ cái|Chữ cái]].
=={{langname|cjm}}==
==={{section|alt}}===
* {{alter|cjm|ꨀꨇꩉ}}
==={{section|etym}}===
So sánh {{cognate|sa|अक्षर}}, {{cognate|pi|akkhara}}.
==={{section|pron}}===
* {{IPA4|cjm|/ʔa.kʰar/}}
==={{section|noun}}===
{{head|cjm|Danh từ}}
# [[chữ cái|Chữ cái]].
=={{langname|cje}}==
==={{section|noun}}===
{{head|cje|Danh từ}}
# [[chữ|Chữ]].
{{c|cje|Viết}}
=={{langname|rgs}}==
==={{section|pron}}===
* {{IPA|rgs|/akhaːr/}}
==={{section|noun}}===
{{head|rgs|Danh từ}}
# [[rễ|Rễ]].
{{c|rgs|Thực vật}}
6w4levz3vjv8h2ca0kvr8i1laodmqse
2512240
2512237
2026-08-08T02:22:20Z
Hiyuune
50834
/* {{langname|cje}} */
2512240
wikitext
text/x-wiki
=={{langname|cja}}==
==={{section|alt}}===
* {{alter|cja|اکحر}}
==={{section|etym}}===
So sánh {{cognate|sa|अक्षर}}, {{cognate|pi|akkhara}}.
==={{section|noun}}===
{{head|cja|Danh từ}}
# [[chữ cái|Chữ cái]].
=={{langname|cjm}}==
==={{section|alt}}===
* {{alter|cjm|ꨀꨇꩉ}}
==={{section|etym}}===
So sánh {{cognate|sa|अक्षर}}, {{cognate|pi|akkhara}}.
==={{section|pron}}===
* {{IPA4|cjm|/ʔa.kʰar/}}
==={{section|noun}}===
{{head|cjm|Danh từ}}
# [[chữ cái|Chữ cái]].
=={{langname|cje}}==
==={{section|noun}}===
{{head|cje|Danh từ}}
# [[chữ|Chữ]].
{{c|cje|Viết}}
=={{langname|cim}}==
==={{section|etym}}===
Từ {{inh|cim|gmh|acker}}, từ {{inh|cim|goh|ackar}}, từ {{inh|cim|gem-pro|*akraz||field}}. Cùng gốc với {{cog|de|Acker}}, {{cog|nl|akker}}, {{cog|en|acre}}, {{cog|is|akur}}.
==={{section|n}}===
{{head|cim|Danh từ|g=m|số nhiều|èkhare|hoặc|èkhar|giảm nhẹ nghĩa|ekharle|f1l=Sette Comuni|f2l=Luserna}}
# {{lb|cim|Luserna|7}} [[cánh đồng|Cánh đồng]].
==={{section|ref}}===
* {{R:Martalar1974}}
* {{R:Patuzzi}}
=={{langname|rgs}}==
==={{section|pron}}===
* {{IPA|rgs|/akhaːr/}}
==={{section|noun}}===
{{head|rgs|Danh từ}}
# [[rễ|Rễ]].
{{c|rgs|Thực vật}}
7fo1b8nupioxx8jdl6ppatfp6hn7vdw
대수학
0
310196
2512149
2175034
2026-08-07T14:24:44Z
Kelly zhrm
58416
2512149
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{ĐM|etym}}===
{{ko-etym-sino|代數學}}.
==={{ĐM|pron}}===
{{ko-IPA|l=y}}
==={{ĐM|n}}===
{{ko-noun|hanja=代數學}}
# [[đạI số|Đại số]].
62mkslpkqcxbdrxgfznicyftzsuy596
2512150
2512149
2026-08-07T14:25:03Z
Kelly zhrm
58416
2512150
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{ĐM|etym}}===
{{ko-etym-sino|代數學}}.
==={{ĐM|pron}}===
{{ko-IPA|l=y}}
==={{ĐM|n}}===
{{ko-noun|hanja=代數學}}
# [[đại số|Đại số]].
9enbil1kxauyukjuetrjykyfivwbujr
Bản mẫu:ĐM
10
324658
2512309
2480929
2026-08-08T09:36:15Z
TheHighFighter2
42988
/* */ Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2512309
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{#switch:{{lc:{{{1|}}}}}
|abbreviation|abbr|abr=Viết tắt
|affix=Phụ tố
|affixed forms=Hình thức phụ tố
|adjective|adj=Tính từ
|adnominal=Danh tính từ
|adverb|adv=Phó từ
|alternative forms|alternative form|alt|alter|alter form=Cách viết khác
|alternative script|alt sc|alt-script|alter sc=Chữ viết khác
|alternative reconstructions=Từ tái tạo khác
|ambiposition=-->
|anagrams|anagram|ana=Từ đảo chữ
|antonyms|antonym|ant=Trái nghĩa
|article=Trợ từ
|circumfix=Phụ tố chu vi
|circumposition|circumpos=Yếu tố quanh
|classifier|cls=Loại từ
<!--|collocations=
|combining form=-->
|compound|com=Từ ghép
|conjugation|forms|conjug=Chia động từ
|conjunction|conj=Liên từ
|contraction|contr=Từ rút gọn
|coordinate terms|coordinate|coord|cot=Từ cùng trường nghĩa
|counter=Lượng từ
|cuneiform sign=Ký tự hình nêm
|declension|decl=Biến cách
|definition|dfn=Định nghĩa
|derived terms|drv|der|derived=Từ phái sinh
|description|desction=Mô tả
|descendants|desc=Hậu duệ
<!--|determinative=-->
|determiner|det=Từ hạn định
<!--|diacritical mark=-->
|derived characters|drv-char=Ký tự phái sinh
|etymology|etym=Từ nguyên
|further reading|further=Đọc thêm
|glyph origin=Nguồn gốc ký tự
|han character|han=Ký tự chữ Hán
|hanja=Hanja
|hanviet=Phiên âm Hán–Việt
|hanviet-t=Phồn thể
<!--|hanzi=-->
|holonyms|holonym=Từ toàn thể
|homophones|homo=Từ đồng âm
|hyponyms|hypo=Từ có nghĩa hẹp hơn
|hypernyms|hyper=Từ có nghĩa rộng hơn
<!--|ideophone=-->
|idiom=Thành ngữ
|infix=Trung tố
|inflection|infl=Biến tố
|instance=Ví dụ
<!--|interfix=-->
|interjection|interj|intj=Thán từ
|interrogative|interrog=Từ nghi vấn
|kanji=Kanji
|letter=Chữ cái
<!--|ligature=-->
|logogram=Chữ tượng hình
|meronyms|meronym|mero=Từ bộ phận
|mutation|mut=Biến đổi âm
|note=Ghi chú
|noun|n=Danh từ
|nôm=Chữ Nôm
|number=Ký tự số
|numeral|num=Số từ
|paronym|paro=Từ tương tự
|participle|ptcp=Phân từ
|particle|part=Trợ từ
|phonogram=Chữ biểu âm
|phrase|phr=Cụm từ
|place=Địa danh
|postposition|postpos=Yếu tố sau
|prefix|pref=Tiền tố
|preposition|prep=Giới từ
|prepositional phrase|pp=Cụm giới từ
|pronoun=Đại từ
|pronunciation|pron=Cách phát âm
|proper|proper noun|pr-noun|pr-n=Danh từ riêng
|proverb=Tục ngữ
|punctuation mark|punctuation|punc=Dấu câu
|quotation|quot=Trích dẫn
|reading=Âm đọc
|reconstruction notes=Ghi chú từ tái tạo
|references|reference|ref=Tham khảo
|related terms|related|rel=Từ liên hệ
|rhymes=Vần
|romanization|rom=Latinh hóa
|root=Gốc từ
|see also|see=Xem thêm
|statistics|stats|stat=Thống kê
|stem=Thân từ
|suffix|suff|suf=Hậu tố
|syllable|syll=Âm tiết
|symbol=Ký hiệu
|synonyms|synonym|syn=Đồng nghĩa
|translations|trans=Dịch
|transliteration|translit=Chuyển tự
<!--|trivia=
|troponyms=-->
|usage notes|usage=Ghi chú sử dụng
|verb|v=Động từ
|verbal noun|vn=Vị danh từ
|#default={{error|Tên đề mục không đúng hoặc không có sẵn}}}}
|{{error|Cần phải chỉ định tên đề mục}}}}</includeonly><noinclude>{{tài liệu}}</noinclude>
qgx8ufcayi588i4lstubgcur5oslsdq
Mô đun:category tree/topic/Food and drink
828
324843
2512168
2461755
2026-08-07T15:49:28Z
Hiyuune
50834
2512168
Scribunto
text/plain
local labels = {}
labels["Ăn uống"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "=[[food]] and [[drink]]",
additional = "Entries about specific Thực phẩm or beverages should go in an appropriate subcategory.",
parents = {"Tất cả chủ đề"},
wpcat = true,
commonscat = "Food and drink",
}
labels["alcohol production"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"alcoholic beverages"},
}
labels["thức uống có cồn"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"đồ uống", "Chất hướng thần"},
}
labels["Thức ăn chăn nuôi"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Ăn uống","Chăn nuôi"},
}
labels["Táo tây"] = {
type = "chủ đề thuộc nhóm tên gọi",
description = "default",
parents = {"Trái cây", "Quả pome"},
}
labels["baking"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"cooking"},
}
labels["banana cultivars"] = {
type = "chủ đề thuộc nhóm tên gọi",
description = "default",
parents = {"fruits", "Zingiberales order plants"},
}
labels["Bia"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"thức uống có cồn"},
}
labels["quả mọng"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Trái cây"},
}
labels["đồ uống"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Ăn uống", "Uống", "Chất lỏng"},
}
labels["bánh mì"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["ngũ cốc ăn sáng"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["brewing"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"alcohol production"},
}
labels["cakes and pastries"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "=[[cake]]s and [[pastry|pastries]]",
parents = {"Thực phẩm", "desserts"},
}
labels["Pho mát"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm", "Chế phẩm sữa","Thực phẩm lên men"},
}
labels["Giống anh đào"] = {
type = "chủ đề thuộc nhóm tên gọi",
description = "default",
parents = {"Chi Mận mơ", "Trái cây"},
}
labels["Sô-cô-la"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"Kẹo"},
}
labels["cocktails"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"alcoholic beverages"},
}
labels["cà phê"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"đồ uống"},
wpcat = true,
commonscat = "Coffee",
}
labels["cà phê chồn"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"cà phê"},
wpcat = true,
commonscat = "Kopi Luwak",
}
labels["Phụ gia"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["Nấu ăn"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"Ăn uống"},
}
labels["cuts of meat"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "=[[cut]]s of [[meat]]",
parents = {"meats"},
}
labels["Chế phẩm sữa"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Ăn uống"},
}
labels["date varieties"] = {
type = "chủ đề thuộc nhóm tên gọi",
description = "default",
wp = {"List of date cultivars"},
parents = {"fruits", "palm trees"},
}
labels["Món tráng miệng"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["dim sum"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"Ăn uống", "Trung Quốc"},
}
labels["Chế độ ăn"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "=diets, including ones intended for weight loss and ones based on religious, cultural, or philosophical traditions and principles",
parents = {"Ăn uống"},
}
labels["distilled beverages"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"alcoholic beverages"},
}
labels["fats and oils"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "=[[fat]]s and [[oil]]s",
parents = {"Thực phẩm"},
}
labels["Thực phẩm"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Ăn uống", "Ăn"},
}
labels["Thực phẩm lên men"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["Trái cây"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm", "Thực vật"},
}
labels["Hạt thóc"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm", "Cỏ"},
}
labels["grape cultivars"] = {
type = "chủ đề thuộc nhóm tên gọi",
description = "default",
parents = {"grapevines", "wines"},
}
labels["honey"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"beekeeping", "condiments"},
}
labels["ice cream"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"Thực phẩm"},
}
-- FIXME, rename to 'types of kimchi'
labels["kimchi"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "default",
parents = {"Thực phẩm", "Korea"},
}
labels["liqueurs"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"alcoholic beverages"},
}
labels["maize (food)"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "=[[maize]] (called [[corn]] in North America) as a [[food]]",
additional = "For terms related to maize as a crop, see [[:Category:Maize (crop)]] and for maize as a plant, see [[:Category:Maize (plant)]].",
parents = {"Thực phẩm", "Hạt thóc"},
}
labels["mate"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"beverages"},
}
labels["meals"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["Thịt"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["Sữa"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"đồ uống", "Chế phẩm sữa", "Dịch cơ thể"},
}
labels["quả kiên"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "=các loại [[quả kiên]] sử dụng trong ẩm thực, bao gồm cả những loại không được coi là quả kiên theo nghĩa thực vật học",
parents = {"thực phẩm", "thực vật"},
wpcat = "Hạt ăn được",
commonscat = "Nuts",
}
labels["pasta"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "default",
parents = {"Thực phẩm"},
}
labels["pear cultivars"] = {
type = "chủ đề thuộc nhóm tên gọi",
description = "default",
parents = {"fruits", "Quả pome"},
}
labels["pies"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "=[[pie]]s",
parents = {"Thực phẩm", "desserts"},
}
labels["pizza"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"Thực phẩm"},
}
labels["Sữa thực vật"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Sữa", "Ăn chay"},
}
labels["potatoes"] = {
type = "type,chủ đề thuộc nhóm liên quan",
description = "=[[potato]]es",
parents = {"nightshades", "solanums", "rau ăn rễ"},
}
labels["rau ăn rễ"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"rau"},
}
labels["salads"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["salad dressings"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"sauces"},
}
labels["salted and pickled Thực phẩm"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "=[[salted]] or [[pickled]] Thực phẩm",
parents = {"Thực phẩm"},
}
labels["sandwiches"] = {
type = "type,name",
description = "default",
parents = {"Thực phẩm"},
}
labels["Nước xốt"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "default",
parents = {"Thực phẩm"},
}
labels["sausages"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "default",
parents = {"meats"},
}
labels["Hải sản"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "default",
parents = {"Thực phẩm"},
}
labels["seasonings"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["seeds"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm", "plants", "agriculture"},
}
labels["snacks"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["Canh"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["spices"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Gia vị và thảo mộc"},
}
labels["Gia vị và thảo mộc"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["Sushi"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "default",
parents = {"Thực phẩm", "Nhật Bản"},
}
labels["Kẹo"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"Thực phẩm"},
}
labels["tableware"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "=any instruments used in the process of eating and drinking such as [[cutlery]] and [[container]]s (eg. plates, bowls or glasses)",
parents = {"Ăn uống"},
}
labels["Trà"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"đồ uống"},
}
labels["Rau"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "=[[vegetable]]s: the edible parts of plants that are not considered in a culinary sense to be [[fruit]]s, [[grain]]s, or [[spice]]s",
parents = {"Thực phẩm", "Thực vật"},
}
labels["wine"] = {
type = "chủ đề thuộc nhóm liên quan",
description = "default",
parents = {"alcoholic beverages"},
}
labels["wines"] = {
type = "chủ đề thuộc nhóm tập hợp",
description = "default",
parents = {"wine"},
}
labels["wine bottles"] = {
type = "chủ đề thuộc nhóm loại hình",
description = "default",
parents = {"wine"},
}
return labels
8d427tg7anrocddiox2l8dlq9xzfvbh
Bản mẫu:kmr-adj
10
352412
2512334
2274776
2026-08-08T11:21:25Z
Hiyuune
50834
2512334
wikitext
text/x-wiki
{{#invoke:kmr-headword|show|Tính từ}}<!--
--><noinclude>{{documentation}}</noinclude>
2dw5en3od79i460figd5knq02km69ru
2512335
2512334
2026-08-08T11:21:36Z
Hiyuune
50834
Hiyuune đã đổi [[Bản mẫu:ku-adj]] thành [[Bản mẫu:kmr-adj]]
2512334
wikitext
text/x-wiki
{{#invoke:kmr-headword|show|Tính từ}}<!--
--><noinclude>{{documentation}}</noinclude>
2dw5en3od79i460figd5knq02km69ru
2512348
2512335
2026-08-08T11:33:52Z
Hiyuune
50834
2512348
wikitext
text/x-wiki
<includeonly>{{#invoke:kmr-headword|show|Tính từ}}</includeonly><!--
--><noinclude>{{tài liệu}}</noinclude>
pgmiyl7da88au6vthfj0rr4boi3pjru
Mô đun:category tree/symbols
828
357831
2512311
2363135
2026-08-08T09:44:13Z
TheHighFighter2
42988
Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2512311
Scribunto
text/plain
local labels = {}
local raw_categories = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["Ký hiệu"] = {
description = "{{{langname}}} written signs.",
umbrella_parents = "Tất cả",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["Dấu câu"] = {
description = "{{{langname}}} glyphs that are added to characters to modify their sounds or meanings.",
parents = {"Ký hiệu"},
}
labels["Han characters"] = {
description = "{{{langname}}} symbols of the Han logographic script, which can represent sounds or convey meanings directly.",
topright = "{{wp|Chinese characters}}",
parents = {"logograms"},
}
labels["ideograms"] = {
description = "{{{langname}}} symbols that represent objects, ideas or concepts directly.",
umbrella_parents = "Fundamental",
parents = {"symbols"},
}
labels["iteration marks"] = {
description = "{{{langname}}} glyphs that act as a shorthand for repeated text.",
parents = {"abbreviations", "symbols"},
}
labels["Chữ cái"] = {
description = "{{{langname}}} symbols that represent single sounds. Variations of letters, such as letters with diacritics, should also be categorized here.",
parents = {"Ký hiệu"},
}
labels["ligatures"] = {
description = "{{{langname}}} letters that have been combined into a single graphical unit.",
parents = {"symbols"},
}
labels["Văn tự ngữ tố"] = {
description = "{{{langname}}} symbols that represent single words or morphemes.",
parents = {"Ký hiệu"},
}
labels["matched pairs"] = {
description = "{{{langname}}} pairs of separate characters that are used together. Example: [[( )]].",
parents = {"symbols"},
}
labels["numeral symbols"] = {
description = "{{{langname}}} symbols that represent numerals.",
parents = {"symbols"},
}
labels["punctuation marks"] = {
description = "{{{langname}}} symbols that indicate structure and organization of writing.",
parents = {"symbols"},
}
labels["syllables"] = {
description = "{{{langname}}} symbols that represent groups of sounds. Variations of syllables, such as syllables with diacritics, should also be categorized here.",
parents = {"symbols"},
}
labels["multigraphs"] = {
description = "{{{langname}}} symbols consisting of multiple letters.",
parents = {"symbols"},
}
local function multigraph(name, n)
labels[name] = {
description = "{{{langname}}} symbols consisting of " .. n .. " letters.",
parents = {"multigraphs"},
}
end
multigraph("digraphs", "two")
multigraph("trigraphs", "three")
multigraph("tetragraphs", "four")
multigraph("pentagraphs", "five")
multigraph("hexagraphs", "six")
multigraph("heptagraphs", "seven")
multigraph("octagraphs", "eight")
-- Add 'umbrella_parents' key if not already present.
for key, data in pairs(labels) do
if not data.umbrella_parents then
data.umbrella_parents = "Thể loại con ký hiệu theo ngôn ngữ"
end
end
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Thể loại con ký hiệu theo ngôn ngữ"] = {
description = "Umbrella categories covering topics related to symbols.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Siêu thể loại chung",
{name = "Ký hiệu", is_label = true, sort = " "},
},
}
raw_categories["Ký hiệu IPA"] = {
description = "Symbols which are part of the {{w|International Phonetic Alphabet}}.",
additional = "For more information, see [[Wiktionary:About International Phonetic Alphabet]].",
catfix = "mul",
parents = {
{name = "Ký hiệu", is_label = true, lang = "mul"},
},
}
raw_categories["NAPA symbols"] = {
description = "Symbols which are part of the {{w|Americanist phonetic notation|North American Phonetic Alphabet}}.",
catfix = "mul",
parents = {
{name = "symbols", is_label = true, lang = "mul"},
},
}
raw_categories["UPA symbols"] = {
description = "Symbols which are part of the {{w|Uralic Phonetic Alphabet}}.",
catfix = "mul",
parents = {
{name = "symbols", is_label = true, lang = "mul"},
},
}
raw_categories["Ký hiệu đa ngữ"] = {
description = "Thể loại này liệt kê các ký hiệu đa ngữ (các ký hiệu được sử dụng chung trên toàn thế giới).",
catfix = "mul",
parents = {
"Đa ngữ",
"Thể loại:Ký hiệu theo ngôn ngữ",
},
}
raw_categories["Mã ISO"] = {
description = "Thể loại này liệt kê các mã ISO.",
catfix = "mul",
parents = {
"Ký hiệu đa ngữ",
},
}
return {LABELS = labels, RAW_CATEGORIES = raw_categories}
fbz0i0l7v4znlyd4ctpqrk7fqyh3qay
Thể loại:Ký hiệu theo ngôn ngữ
14
357832
2512314
2264260
2026-08-08T09:51:42Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự theo ngôn ngữ]] thành [[Thể loại:Ký hiệu theo ngôn ngữ]]: Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2264260
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Thể loại con ký hiệu theo ngôn ngữ
14
357833
2512316
2264261
2026-08-08T09:54:16Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Thể loại con ký tự theo ngôn ngữ]] thành [[Thể loại:Thể loại con ký hiệu theo ngôn ngữ]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2264261
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Ký hiệu tiếng Aragon
14
361018
2512332
2275762
2026-08-08T10:16:00Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự tiếng Aragon]] thành [[Thể loại:Ký hiệu tiếng Aragon]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2275762
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
tra linh
0
364926
2512238
2288740
2026-08-08T02:21:43Z
WhoAlone
40420
2512238
wikitext
text/x-wiki
=={{langname|enc}}==
==={{ĐM|verb}}===
{{head|enc|Động từ}}
# [[ăn]] [[cơm]].
==={{ĐM|ref}}===
* Xuân Lam (5 tháng 12 năm 2021) [https://baocaobang.vn/Van-hoa/An-so-kho-tram-tich-van-hoa-nguoi-Nung-Ven-duy-nhat-o-Cao-Bang/85715.bcb “Ẩn số” kho trầm tích văn hóa người Nùng Vẻn duy nhất ở Cao Bằng]. ''Báo Cao Bằng điện tử''.
{{c|enc|Ăn}}
p575pcde7w0jg63lixn9tn92pxey1r7
tra ngài
0
364927
2512247
2288741
2026-08-08T02:27:25Z
WhoAlone
40420
2512247
wikitext
text/x-wiki
=={{langname|enc}}==
==={{ĐM|verb}}===
{{head|enc|Động từ}}
# [[ăn]] [[cơm]] [[trưa]].
==={{ĐM|ref}}===
* Xuân Lam (5 tháng 12 năm 2021) [https://baocaobang.vn/Van-hoa/An-so-kho-tram-tich-van-hoa-nguoi-Nung-Ven-duy-nhat-o-Cao-Bang/85715.bcb “Ẩn số” kho trầm tích văn hóa người Nùng Vẻn duy nhất ở Cao Bằng]. ''Báo Cao Bằng điện tử''.
{{c|enc|Ăn}}
6nyzqv07hb1yjzhlnrz3fwuzi5r15wq
Thể loại:Ký hiệu tiếng Akha
14
365996
2512328
2290880
2026-08-08T10:10:43Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự tiếng Akha]] thành [[Thể loại:Ký hiệu tiếng Akha]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2290880
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Ký hiệu tiếng Ainu
14
368414
2512327
2296397
2026-08-08T10:09:57Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự tiếng Ainu]] thành [[Thể loại:Ký hiệu tiếng Ainu]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2296397
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Ký hiệu tiếng Aari
14
368653
2512325
2296822
2026-08-08T10:06:09Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự tiếng Aari]] thành [[Thể loại:Ký hiệu tiếng Aari]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2296822
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Ký hiệu tiếng Alaba-K’abeena
14
368654
2512330
2296823
2026-08-08T10:11:47Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự tiếng Alaba-K’abeena]] thành [[Thể loại:Ký hiệu tiếng Alaba-K’abeena]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2296823
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:Ký hiệu tiếng Amhara
14
370924
2512331
2302208
2026-08-08T10:13:02Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự tiếng Amhara]] thành [[Thể loại:Ký hiệu tiếng Amhara]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2302208
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
dwieście
0
374588
2512187
2310081
2026-08-07T16:19:50Z
Hiyuune
50834
/* Từ nguyên */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512187
wikitext
text/x-wiki
=={{langname|pl}}==
{{number box|pl}}
==={{ĐM|alter}}===
* {{alt|pl|dwiesta||Żywiec}}
==={{ĐM|etym}}===
{{ety|pl|:inh|zlw-opl:dwieście|tree=+|text=+}} {{surf|+univ|pl|dwie|sto|alt2=ście}}.
==={{ĐM|pron}}===
{{pl-pr|a=Pl-dwieście.ogg|mp=#}}
==={{ĐM|numeral}}===
{{head|pl|Số từ}}
# [[hai|Hai]] [[trăm]].
===={{ĐM|decl}}====
{{pl-decl-numeral|dwieście|dwustu|dwustoma}}
==={{ĐM|further}}===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
* {{R:pl:SXVI|+|50208}}
* {{R:pl:SXVII|DWIEŚCIE|45490|WM|24.11.2020}}
* {{R:pl:SJP1807}}
* {{R:pl:SJP1861}}
* {{R:pl:SJP1900||529|1}}
{{cln|pl|Số đếm}}
{{C|pl|Hai}}
=={{langname|zlw-opl}}==
==={{ĐM|etym}}===
{{inh+|zlw-opl|sla-pro|*dъvě sъtě}}, yếu tố thứ hai là nhị nguyên của ''sto''. {{surf|+univ|zlw-opl|dwie|sto|alt2=ście}} {{etydate|thế kỉ thứ 14}}.
==={{ĐM|pron}}===
* {{zlw-opl-IPA}}
==={{ĐM|numeral}}===
{{head|zlw-opl|Số từ}}
# [[hai|Hai]] [[trăm]].
===={{ĐM|desc}}====
* {{desc|pl|dwieście|alts=1}}
==={{ĐM|ref}}===
* {{R:pl:Boryś}}
* {{R:pl:Sławski}}
* {{R:pl:Mańczak}}
* {{R:pl:Bańkowski}}
* {{R:zlw-opl:SPJSP}}
{{cln|zlw-opl|Số đếm}}
glfv1uqi3v7um79n5ljh613ip6f0ntt
2512188
2512187
2026-08-07T16:20:40Z
Hiyuune
50834
/* Biến cách */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512188
wikitext
text/x-wiki
=={{langname|pl}}==
{{number box|pl}}
==={{ĐM|alter}}===
* {{alt|pl|dwiesta||Żywiec}}
==={{ĐM|etym}}===
{{ety|pl|:inh|zlw-opl:dwieście|tree=+|text=+}} {{surf|+univ|pl|dwie|sto|alt2=ście}}.
==={{ĐM|pron}}===
{{pl-pr|a=Pl-dwieście.ogg|mp=#}}
==={{ĐM|numeral}}===
{{head|pl|Số từ}}
# [[hai|Hai]] [[trăm]].
===={{ĐM|decl}}====
{{pl-decl-numeral|dwieście|dwustu|dwustoma}}
===={{ĐM|syn}}====
{{dial syn|pl}}
==={{ĐM|further}}===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
* {{R:pl:SXVI|+|50208}}
* {{R:pl:SXVII|DWIEŚCIE|45490|WM|24.11.2020}}
* {{R:pl:SJP1807}}
* {{R:pl:SJP1861}}
* {{R:pl:SJP1900||529|1}}
{{cln|pl|Số đếm}}
{{C|pl|Hai}}
=={{langname|zlw-opl}}==
==={{ĐM|etym}}===
{{inh+|zlw-opl|sla-pro|*dъvě sъtě}}, yếu tố thứ hai là nhị nguyên của ''sto''. {{surf|+univ|zlw-opl|dwie|sto|alt2=ście}} {{etydate|thế kỉ thứ 14}}.
==={{ĐM|pron}}===
* {{zlw-opl-IPA}}
==={{ĐM|numeral}}===
{{head|zlw-opl|Số từ}}
# [[hai|Hai]] [[trăm]].
===={{ĐM|desc}}====
* {{desc|pl|dwieście|alts=1}}
==={{ĐM|ref}}===
* {{R:pl:Boryś}}
* {{R:pl:Sławski}}
* {{R:pl:Mańczak}}
* {{R:pl:Bańkowski}}
* {{R:zlw-opl:SPJSP}}
{{cln|zlw-opl|Số đếm}}
04ja3gl5sgk6xrs0mh6q4yqcs8642dd
2512191
2512188
2026-08-07T16:24:00Z
Hiyuune
50834
/* Tiếng Ba Lan cổ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512191
wikitext
text/x-wiki
=={{langname|pl}}==
{{number box|pl}}
==={{ĐM|alter}}===
* {{alt|pl|dwiesta||Żywiec}}
==={{ĐM|etym}}===
{{ety|pl|:inh|zlw-opl:dwieście|tree=+|text=+}} {{surf|+univ|pl|dwie|sto|alt2=ście}}.
==={{ĐM|pron}}===
{{pl-pr|a=Pl-dwieście.ogg|mp=#}}
==={{ĐM|numeral}}===
{{head|pl|Số từ}}
# [[hai|Hai]] [[trăm]].
===={{ĐM|decl}}====
{{pl-decl-numeral|dwieście|dwustu|dwustoma}}
===={{ĐM|syn}}====
{{dial syn|pl}}
==={{ĐM|further}}===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
* {{R:pl:SXVI|+|50208}}
* {{R:pl:SXVII|DWIEŚCIE|45490|WM|24.11.2020}}
* {{R:pl:SJP1807}}
* {{R:pl:SJP1861}}
* {{R:pl:SJP1900||529|1}}
{{cln|pl|Số đếm}}
{{C|pl|Hai}}
=={{langname|zlw-opl}}==
==={{ĐM|etym}}===
{{ety|zlw-opl|:inh|sla-pro:*dъvě sъtě<ety:univ<sla-pro:*dъva<alt:*dъvě>><sla-pro:*sъto<alt:*sъtě>>>|etydate=thể kỷ 14|tree=+|text=+}} Yếu tố thứ hai là nhị nguyên của ''sto''. {{surf|+univ|zlw-opl|dwie|sto|alt2=ście}}
==={{ĐM|pron}}===
* {{zlw-opl-IPA}}
==={{ĐM|numeral}}===
{{head|zlw-opl|Số từ}}
# [[hai|Hai]] [[trăm]].
===={{ĐM|desc}}====
* {{desc|pl|dwieście|alts=1}}
==={{ĐM|ref}}===
* {{R:pl:Boryś}}
* {{R:pl:Sławski}}
* {{R:pl:Mańczak}}
* {{R:pl:Bańkowski}}
* {{R:zlw-opl:SPJSP}}
{{cln|zlw-opl|Số đếm}}
20zhls6jbtktdk3ih8ufr0tadgx8dd7
Thể loại:Ký hiệu tiếng Aceh
14
380545
2512326
2322362
2026-08-08T10:07:15Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự tiếng Aceh]] thành [[Thể loại:Ký hiệu tiếng Aceh]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2322362
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Mô đun:sk-pron
828
383675
2512151
2327990
2026-08-07T14:40:25Z
Hiyuune
50834
2512151
Scribunto
text/plain
local export = {}
-- =============================================================================
-- [[ DATA TABLES ]]
-- =============================================================================
-- [[ 1. Phonological Sets ]] --
local diphthongs_set = {
["ia"]=true, ["ie"]=true, ["iu"]=true, ["ô"]=true
}
local bigraphs_set = {
["ch"]=true, ["dz"]=true, ["dž"]=true
}
-- Combined Vowels (Short & Long + Foreign)
local vowels_set = {
["a"]=true, ["e"]=true, ["i"]=true, ["o"]=true, ["u"]=true, ["y"]=true,
["ä"]=true, ["ö"]=true, ["ü"]=true,
["á"]=true, ["é"]=true, ["í"]=true, ["ó"]=true, ["ú"]=true, ["ý"]=true,
["ő"]=true, ["ű"]=true
}
-- Voicing & Sonorants
local sonorants = {
['m']=true, ['n']=true, ['ň']=true, ['l']=true, ['ľ']=true, ['ĺ']=true,
['r']=true, ['ŕ']=true, ['j']=true, ['v']=true
}
local voiced_paired = {
['b']=true, ['d']=true, ['ď']=true, ['g']=true, ['dz']=true,
['dž']=true, ['h']=true, ['z']=true, ['ž']=true, ['w']=true
}
local voiceless_paired = {
['p']=true, ['t']=true, ['ť']=true, ['k']=true, ['c']=true,
['č']=true, ['ch']=true, ['s']=true, ['š']=true, ['f']=true
}
local voicing_map = {
-- Voiced to Voiceless
['b']='p', ['d']='t', ['ď']='ť', ['g']='k', ['dz']='c', ['dž']='č',
['h']='ch', ['w']='f', ['z']='s', ['ž']='š',
-- Voiceless to Voiced
['p']='b', ['t']='d', ['ť']='ď', ['k']='g', ['c']='dz', ['č']='dž',
['ch']='h', ['f']='w', ['s']='z', ['š']='ž'
}
-- [[ 2. Assimilation & Encoding ]] --
local dental_mergers = {
['z']='dzdz', ['dz']='dzdz', ['s']='cc', ['c']='cc',
['ž']='dždž', ['dž']='dždž', ['š']='čč', ['č']='čč'
}
-- Mergers: Encodes t.s -> 15, d.z -> 26, etc.
local c1_enc = {['t']=1, ['d']=2, ['ť']=3, ['ď']=4}
local c2_enc = {
['c']=1, ['dz']=2, ['č']=3, ['dž']=4, ['s']=5, ['z']=6, ['š']=7, ['ž']=8
}
-- Decoding: Used by IPA renderer to convert "15" -> t.ts
local c1_dec = { 't', 'd', 'c', 'ɟ' }
local c2_dec = { 't͡s', 'd͡z', 't͡ʃ', 'd͡ʒ', 's', 'z', 'ʃ', 'ʒ' }
-- [[ 3. Morphological & Lexical Exceptions ]] --
local prefixes = {
['pod']=true, ['ob']=true, ['od']=true, ['ráz']=true, ['roz']=true,
['bez']=true, ['ab']=true, ['vz']=true, ['pred']=true, ['nad']=true
}
local prepositions_set = {
["bez"]=true, ["cez"]=true, ["do"]=true, ["k"]=true, ["ku"]=true,
["na"]=true, ["nad"]=true, ["o"]=true, ["od"]=true, ["po"]=true,
["pod"]=true, ["pre"]=true, ["pred"]=true, ["pri"]=true, ["s"]=true,
["so"]=true, ["u"]=true, ["v"]=true, ["vo"]=true, ["z"]=true,
["za"]=true, ["zo"]=true
}
local clitics = {
["byť"]=true, ["som"]=true, ["si"]=true, ["je"]=true, ["sme"]=true,
["ste"]=true, ["sú"]=true, ["bol"]=true, ["mi"]=true, ["ti"]=true,
["mu"]=true, ["jej"]=true, ["ma"]=true, ["ťa"]=true, ["sa"]=true,
["ho"]=true, ["ju"]=true, ["nám"]=true, ["vám"]=true, ["im"]=true,
["nás"]=true, ["vás"]=true, ["ich"]=true, ["ten"]=true, ["tá"]=true,
["to"]=true, ["on"]=true, ["a"]=true, ["i"]=true, ["aj"]=true,
["že"]=true, ["keď"]=true, ["až"]=true, ["len"]=true, ["či"]=true,
["kde"]=true, ["ba"]=true, ["ak"]=true, ["už"]=true, ["by"]=true
}
local preposition_blockers = {
['mnou']=true, ['mne']=true, ['tebou']=true, ['ňou']=true,
['ním']=true, ['nami']=true, ['vami']=true, ['nimi']=true,
['tebe']=true, ['nemu']=true, ['nej']=true, ['nám']=true,
['vám']=true, ['nim']=true
}
-- [[ 4. IPA Output Maps ]] --
local ipa_map = {
-- Vowels
['a']='a', ['á']='aː', ['ä']='æ', ['e']='e', ['é']='eː',
['i']='i', ['í']='iː', ['o']='ɔ', ['ó']='ɔː', ['ô']='u̯ɔ',
['u']='u', ['ú']='uː', ['y']='i', ['ý']='iː', ['ö']='ø',
['ő']='øː', ['ü']='y', ['ű']='yː',
-- Consonants
['b']='b', ['c']='t͡s', ['č']='t͡ʃ', ['d']='d', ['ď']='ɟ',
['g']='ɡ', ['h']='ɦ', ['j']='j', ['k']='k', ['l']='l',
['ľ']='ʎ', ['m']='m', ['n']='n', ['ň']='ɲ', ['p']='p',
['r']='r', ['ř']='r̝', ['ŕ']='r̩ː', ['ĺ']='l̩ː', ['s']='s',
['š']='ʃ', ['t']='t', ['ť']='c', ['z']='z', ['ž']='ʒ',
['x']='x',
-- Special
['v']='v', ['w']='w', ['F']='F', ['f']='f', ['ů']='ů', ["'"]='ˈ',
-- Digraphs/Multigraphs
['dz']='d͡z', ['dž']='d͡ʒ', ['ch']='x', ['dzdz']='d͡zː', ['dždž']='d͡ʒː',
['ia']='ɪ̯a', ['ie']='ɪ̯e', ['iu']='ɪ̯u'
}
local variant_map = {
["H"]={"ɣ","ɦ"}, ["W"]={"ʋ","v"}, ["U"]={"u̯","ʋ"},
["J"]={"ɪ̯","j"}, ["N"]={"n","n̠"}
}
-- Module-level state variables
local IS_MO_VARIANT = false
local NAMESPACE = ""
local PAGENAME = ""
local LOAN = 0
local HARD_SUFFIX = 0
local AS_IMP = 0
-- =============================================================================
-- [[ HELPER FUNCTIONS ]]
-- =============================================================================
function get_voiced_counterpart(char) return voicing_map[char] end
-- Tokenizer (Preserves digraphs)
function get_graphemes(word)
local units = {}
local len = mw.ustring.len(word)
local i = 1
local is_loan = (LOAN == 1)
while i <= len do
local two_char = mw.ustring.sub(word, i, i + 1)
if bigraphs_set[two_char] or (diphthongs_set[two_char] and not is_loan) then
table.insert(units, two_char)
i = i + 2
else
table.insert(units, mw.ustring.sub(word, i, i))
i = i + 1
end
end
return units
end
-- Resolve Cluster (Contact Assimilation Logic)
function resolve_cluster(c1, c2, is_boundary)
-- GUARD: v/f complex logic
if c1 == 'v' or c1 == 'f' then return nil end
-- 1. SPECIAL: <h> or <ch> logic
if c1 == 'ch' or c1 == 'h' then
if (voiced_paired[c2] or sonorants[c2]) and is_boundary then return 'H' .. c2 end
end
-- 2. Standard Assimilation
local c1_new = c1
if (voiceless_paired[c1] and (voiced_paired[c2] or (is_boundary and (sonorants[c2] or vowels_set[c2]))))
or (voiced_paired[c1] and voiceless_paired[c2]) then
c1_new = voicing_map[c1] or c1
end
-- 3. Mergers & Gemination
if c1_enc[c1_new] and dental_mergers[c2] then
if is_boundary then
local d1, d2 = c1_enc[c1_new], c2_enc[c2]
if d1 and d2 then return d1 .. d2 end
end
return dental_mergers[c2]
end
if c1_new ~= c1 then return c1_new .. c2 end
return nil
end
function apply_assimilation(tokens, i, j, is_boundary)
if IS_MO_VARIANT and i == #tokens - 3 then return end
local res = resolve_cluster(tokens[i], tokens[j], is_boundary)
if res then
local res_tokens = get_graphemes(res)
if #res_tokens == 2 then
tokens[i] = res_tokens[1]; tokens[j] = res_tokens[2]
elseif #res_tokens == 1 then
tokens[i] = res_tokens[1]; tokens[j] = ""
end
end
end
-- Syllable Splitter
function split_into_syllables(word)
local units = get_graphemes(word)
local nuc, syl, len = {}, {}, #units
-- Helper: Check if index k is a Nucleus
local function is_nuc(k)
local u = units[k]; if not u then return false end
if diphthongs_set[u] or vowels_set[u] then return true end
if not (u=='r' or u=='l' or u=='ŕ' or u=='ĺ') then return false end
-- Check neighbors (skipping non-phonemic chars)
local function v(i, d)
while i>0 and i<=len do
local t=units[i]
if vowels_set[t] or diphthongs_set[t] then return true end
if t~="'" and t~="-" and t~=" " and t~="_" then return false end
i=i+d
end
end
return not (v(k-1, -1) or v(k+1, 1))
end
for i=1,len do if is_nuc(i) then table.insert(nuc, i) end end
if #nuc==0 then return {table.concat(units)} end
local start = 1
for k = 1, #nuc - 1 do
local curr, next_n = nuc[k], nuc[k+1]
local split = curr -- Default: Split after vowel (V-CV)
local c_cnt, first_c = 0, nil
for j = curr + 1, next_n - 1 do
local c = units[j]
if c=="-" or c==" " then split=j; c_cnt=-1; break -- 1. Hard Boundary
elseif c=="'" then split=j-1; c_cnt=-1; break -- 2. Stress Boundary
elseif c~="." then c_cnt=c_cnt+1; first_c = first_c or j end
end
if c_cnt >= 2 then split = first_c end -- 3. Cluster Rule (VC-CV)
table.insert(syl, table.concat(units, "", start, split))
start = split + 1
end
table.insert(syl, table.concat(units, "", start))
return syl
end
-- [[ Core IPA Transformation Logic ]] --
local function ipa_transform_worker(word)
-- 1. Preprocess: Strip punctuation but map boundaries
local bound, idx = {}, 0
word = mw.ustring.gsub(word, ".", function(c)
if c == "-" or c == "." then bound[idx] = true; return "" end
idx = idx + 1
end) -- Returns cleaned word, populates 'bound'
local sub = mw.ustring.sub
local w_len, res, i = idx, {}, 1
local function is_C(c)
return not c or c == "" or (not vowels_set[c] and not diphthongs_set[c])
end
while i <= w_len do
local c1 = sub(word, i, i)
if c1 == "+" then
i = i + 1
else
local nxt = sub(word, i+1, i+1)
local c2_raw = (nxt == "+") and sub(word, i+2, i+2) or nxt
local c2, c4 = c1 .. c2_raw, sub(word, i, i+3)
local jump = (nxt == "+") and 1 or 0
local sym, step, raw = nil, 1, c1
if c4 == "dzdz" or c4 == "dždž" then
sym, step, raw = ipa_map[c4], 4, c4
elseif (c1 == c2_raw or c2 == "čš") and ipa_map[c1] and not vowels_set[c1] then
sym, step, raw = ipa_map[c1] .. "ː", 2 + jump, c1
elseif (ipa_map[c2] and not diphthongs_set[c2])
or (diphthongs_set[c2] and (LOAN~=1 or jump>0) and not bound[i]) then
sym, step, raw = ipa_map[c2], 2 + jump, c2 -- treat as diphthong only if native or explicitly marked with +
else
sym = ipa_map[c1] or c1
end
if sym then
if (raw=='r' or raw=='l') and is_C(i>1 and sub(word,i-1,i-1)) and is_C(sub(word,i+step,i+step)) then
sym = sym .. '̩' -- mark liquid as syllabic if sandwiched between non-vowels
end
table.insert(res, sym)
end
i = i + step
end
end
local out = table.concat(res)
-- Post-processing for loanword endings (-ovan-)
if LOAN == 1 then
local sfx = mw.ustring.match(word, ".*ovan(.+)$")
if sfx then
local m = ipa_map
local fix = {
["ie"]=m["ie"], ["ia"]=m["ia"], ["iu"]=m["iu"],
["í"]=m["í"], ["ím"]=m["í"]..(m["m"] or 'm'),
["iam"]=m["ia"]..(m["m"] or 'm'), ["iach"]=m["ia"]..(m["x"] or 'x'),
["iami"]=m["ia"]..(m["m"] or 'm')..(m["i"] or 'i')
}
if fix[sfx] then
local bad = (m["n"] or 'n') .. sfx:gsub(".", function(c) return m[c] or c end)
out = mw.ustring.gsub(out, bad:gsub("[%p]", "%%%0") .. "$", (m['ň'] or 'ɲ') .. fix[sfx]) -- correct [n] to [ň] before soft vowels in loan suffixes
end
end
end
return out
end
-- [[ 2. STAGE 2: PHONETIC RESOLVER ]] --
function resolve_phonetic_base(base_text)
local res = {}
local len = mw.ustring.len(base_text)
local i = 1
-- Map for standard phonetic realization
local map = { ['v']='ʋ', ['w']='v', ['F']='v', ['f']='f', ['ů']='u̯', ['I']='ɪ̯' }
local sub = mw.ustring.sub -- Local ref
while i <= len do
local c = sub(base_text, i, i)
local symbol = map[c] or c
local next_c = (i < len) and sub(base_text, i+1, i+1) or ""
local next_resolved = map[next_c] or next_c
-- Apply FULL Nasal Assimilation
if c == 'm' then
if next_resolved == 'f' or next_resolved == 'v' or next_resolved == 'ʋ' then symbol = 'ɱ' end
elseif c == 'n' then
if next_resolved == 'k' or next_resolved == 'ɡ' then symbol = 'ŋ'
elseif next_resolved == 's' or next_resolved == 'z' or next_resolved == 'ʃ' or next_resolved == 'ʒ' then symbol = 'N'
elseif next_resolved == 'x' then symbol = 'ɰ̃'
elseif next_resolved == 'p' or next_resolved == 'b' then symbol = 'm' end
end
table.insert(res, symbol)
i = i + 1
end
return table.concat(res)
end
-- [[ 3. FINAL GENERATION ]] --
local function expand_variants(txt)
local find, sub, gsub = mw.ustring.find, mw.ustring.sub, mw.ustring.gsub
-- 1. Digits: Binary Branch (All-Split vs All-Merged)
if find(txt, "%d[ˈ%s_]*%d") then
local res = {}
for m = 1, 2 do
local s = gsub(txt, "(%d)([ˈ%s_]*)(%d)", function(d1, sep, d2)
d1, d2 = tonumber(d1), tonumber(d2)
if m == 1 then -- Split (Unassimilated)
local f = ((d1+d2)%2==1) and (d1 + (d2%2==0 and 1 or -1)) or d1
return (c1_dec[f] or "") .. sep .. (c2_dec[d2] or "")
else -- Merged (Assimilated)
local c = c2_dec[d2>4 and d2-4 or d2] or ""
-- If stressed: Unreleased + Short (t̚ ˈt͡s). If not: Long (t͡sː)
return find(sep, "ˈ") and (sub(c,1,1).."̚ ˈ"..c) or (c.."ː")
end
end)
for _, v in ipairs(expand_variants(s)) do table.insert(res, v) end
end
return res
end
-- 2. Letters: Recursive Expansion (HWUJN)
local s, e, k = find(txt, "([HWUJN])")
if not s then return {txt} end -- Base case
local res, h, t = {}, sub(txt, 1, s-1), sub(txt, e+1)
for _, r in ipairs(variant_map[k]) do
for _, sub in ipairs(expand_variants(h..r..t)) do table.insert(res, sub) end
end
return res
end
local function format_ipa_output(res, frame)
local distinct = table.concat(res.high) ~= table.concat(res.low)
local args = { "sk", "/" .. res.phonemic .. "/" }
local function add(list, tag)
for i, ipa in ipairs(list) do
local qs = {}
if distinct and tag and i == 1 then table.insert(qs, tag) end
if mw.ustring.find(ipa, "ɦ ?ˈ?ɦ") then table.insert(qs, "rare") end
local q = #qs > 0 and "<q:" .. table.concat(qs, ", ") .. ">" or ""
table.insert(args, "[" .. ipa .. "]" .. q)
end
end
add(res.high, "high register")
if distinct then add(res.low, "common") end
return frame:expandTemplate{ title = "IPA", args = args }
end
local function get_ipa_nuclei(ipa)
local s = mw.ustring.gsub(ipa, "[/ %[%]ˈ%.]", "")
local nuclei, skip, sub = {}, 0, mw.ustring.sub
mw.ustring.gsub(s, "()([rluɪaæeiɔuøy])", function(p, c)
if p < skip then return end
local nuc, len = nil, 1
local nxt = sub(s, p+1, p+1)
if (c=="r" or c=="l") and nxt=="̩" then
len = (sub(s, p+2, p+2)=="ː") and 3 or 2
nuc = sub(s, p, p+len-1)
elseif (c=="u" or c=="ɪ") and nxt=="̯" then
len = 3; nuc = sub(s, p, p+2)
elseif mw.ustring.find(c, "[aæeiɔuøy]") then
if sub(s, p+1, p+2) == "u̯" then len = 3; nuc = sub(s, p, p+2)
else len = (nxt=="ː") and 2 or 1; nuc = sub(s, p, p+len-1) end
end
if nuc then table.insert(nuclei, {ipa=nuc, s=p, e=p+len-1}); skip = p+len end
end)
return nuclei, s
end
local function format_rhymes(frame, nuclei, s)
local c = #nuclei
if c == 0 then return "" end
local rhyme = mw.ustring.sub(s, (c > 1 and nuclei[c-1] or nuclei[1]).s)
return "\n*" .. frame:expandTemplate{title="rhymes", args={"sk", rhyme, s=c}}
end
local function format_hyphenation(word, ipa, frame, respelling, nuclei)
if #nuclei <= 1 then return "" end
local sub, find, lower, len = mw.ustring.sub, mw.ustring.find, mw.ustring.lower, mw.ustring.len
local w_lower = lower(word)
-- 1. Parse Respelling (Boundaries & Forbidden Nuclei)
local forced, forbidden, idx, last = {}, {}, 0, ""
if respelling then
local clean_check = mw.ustring.gsub(lower(respelling), "[%.%-%+]", "")
if clean_check == w_lower then
for i = 1, len(respelling) do
local c = sub(respelling, i, i)
if c == "+" then
if last ~= "i" and last ~= "í" then forbidden[idx + 1] = true end
elseif c:match("[%.%-]") then
if idx > 0 then forced[idx] = true end
else
idx = idx + 1; last = lower(c)
end
end
end
end
local map = {
['a']='a', ['aː']='á', ['æ']='ä', ['e']='e', ['eː']='é',
['i']='[iy]', ['iː']='[íý]', ['o']='o', ['oː']='ó', ['ɔ']='o', ['ɔː']='ó',
['u']='u', ['uː']='ú', ['u̯ɔ']='ô', ['ɔu̯']='ou',
['ø']='ö', ['øː']='ő', ['y']='ü', ['yː']='ű',
['ɪ̯a']='ia', ['ɪ̯e']='ie', ['ɪ̯u']='iu',
['r̩']='r', ['r̩ː']='ŕ', ['l̩']='l', ['l̩ː']='ĺ'
}
-- Helper: Find next valid nucleus (skips forbidden off-glides)
local function get_nuc(pat, start)
while true do
local s, e = find(w_lower, pat, start)
if not s or not forbidden[s] then return s, e end
start = s + 1
end
end
local args, pos = {"sk"}, 1
local seg_start = 1
for i = 1, #nuclei do
local s, e = get_nuc(map[nuclei[i].ipa] or ".", pos)
if not s then return "" end
if i < #nuclei then
local s2, _ = get_nuc(map[nuclei[i+1].ipa] or ".", e + 1)
if not s2 then return "" end
-- Default: Split before last consonant (V-CV) or between consonants (VC-CV)
local clust = sub(w_lower, e+1, s2-1)
-- If cluster has space, DO NOT split.
if find(clust, " ") then
pos = e + 1
else
local c_len = len(clust)
local off = 0
if c_len >= 2 then
local dig = sub(clust, 1, 2)
off = (dig == "ch" or dig == "dz" or dig == "dž") and (c_len > 2 and 2 or 0) or 1
end
for k = e, s2 - 1 do
if forced[k] then off = k - e; break end
end
table.insert(args, sub(word, seg_start, e + off))
seg_start = e + off + 1
pos = e + off + 1
end
else
table.insert(args, sub(word, seg_start))
end
end
return "\n*" .. frame:expandTemplate{title="hyph", args=args}
end
-- =============================================================================
-- [[ PROCESSING STEPS ]]
-- =============================================================================
function step_foreign_graphemes(word)
word = mw.ustring.lower(word)
word = mw.ustring.gsub(word, "ů", "ú")
word = mw.ustring.gsub(word, "x", "ks")
word = mw.ustring.gsub(word, "w", "v")
word = mw.ustring.gsub(word, "qu", "kv")
word = mw.ustring.gsub(word, "[,']", "")
return word
end
function step_softening(w)
if LOAN == 1 then return w end
local soft = {['d']='ď',['t']='ť',['n']='ň',['l']='ľ'}
local sub = mw.ustring.sub
local res = {}
for i = 1, mw.ustring.len(w) do
local c = sub(w, i, i)
local s = false
if soft[c] then
local n1 = sub(w, i+1, i+1)
local n2 = sub(w, i+1, i+2)
if n2=="ia" or n2=="ie" or n2=="iu" then
s = true
elseif n1=="i" or n1=="í" or n1=="e" then
s = true
if HARD_SUFFIX == 1 then
local function E(k)
local x = sub(w,k,k); return x=="" or x==" "
end
local n3 = sub(w, i+1, i+3)
if (n1=="i" or n1=="í" or n1=="e") and E(i+2) then s = false
elseif n2=="ej" and E(i+3) then s = false
elseif (n3=="eho" or n3=="emu") and E(i+4) then s = false
end
end
end
end
table.insert(res, s and soft[c] or c)
end
return table.concat(res)
end
function step_prosody(word)
-- 1. Merge Prepositions
word = mw.ustring.gsub(word, "%f[%a](%a+) +", function(w)
return prepositions_set[mw.ustring.lower(w)] and (w .. "_") or nil
end)
-- 2. Add Stress
return mw.ustring.gsub(word, "%S+", function(w)
local raw = mw.ustring.lower(mw.ustring.gsub(w, "_", ""))
-- Exclusions: Clitics OR Starts with hyphen OR Single letter OR No syllabic nucleus
if clitics[raw]
or mw.ustring.sub(w, 1, 1) == "-"
or mw.ustring.sub(w, -1) == "-"
or mw.ustring.len(w) == 1
or not mw.ustring.find(raw, "[aáäeéiíoóuúyýöőüűôrŕlĺ]") then
return w
end
return "'" .. w
end)
end
function step_simplification(word)
local patterns = { "s[tť]s[tk]", "[pd][tz]sk", "[tďdz]st", "[ztd]šť", "[zdt]sk", "ptč" }
local function resolve(w)
local c1 = mw.ustring.sub(w, 1, 1)
if c1 == "s" then return c1 .. mw.ustring.sub(w, 4)
elseif c1 == "p" then return c1 .. mw.ustring.sub(w, 3)
else
w = mw.ustring.gsub(w, "z", "")
if mw.ustring.len(w) <= 2 then return w end
local c2 = mw.ustring.sub(w, 2, 2)
local head = (c2 == "s") and "c" or "č"
return head .. mw.ustring.sub(w, 3)
end
end
for _, pat in ipairs(patterns) do
word = mw.ustring.gsub(word, pat, resolve)
end
return word
end
function step_assimilation(word)
-- [[ 1. Pre-processing & Morphological Exceptions ]] --
word = mw.ustring.gsub(word, "('[nv]ášmu)(%f[%A])", function(match)
return mw.ustring.gsub(match, "š", "ž")
end)
-- 2. sme -> zme (Only if surrounded by boundaries)
if mw.ustring.find(word, "sme") then
word = mw.ustring.gsub(mw.ustring.gsub(word, "^sme$", "zme"), "^sme(%s)", "zme%1")
word = mw.ustring.gsub(mw.ustring.gsub(word, "(%s)sme$", "%1zme"), "(%s)sme(%s)", "%1zme%2")
end
-- A. Prefix "eks-" (eks- + vowel/voiced -> egz-)
local v_set = "[aeiouyáéíóúýäôglmnňrjvzhdbžg]"
word = mw.ustring.gsub(word, "^('?)eks("..v_set..")", "%1egz%2")
word = mw.ustring.gsub(word, "([%s_])('?)eks("..v_set..")", "%1%2egz%3")
word = mw.ustring.gsub(word, "^('?)dis("..v_set..")", "%1diz%2")
word = mw.ustring.gsub(word, "([%s_])('?)dis("..v_set..")", "%1%diz%3")
-- B. Preposition Vocalization (so/ku -> zo/gu)
word = mw.ustring.gsub(word, "([%s'])([sk][ou])(_)([^%s%._]+)", function(before, prep, sep, next_w)
if not preposition_blockers[next_w] then
local voiced = (prep == "so") and "zo" or "gu"
return before .. voiced .. sep .. next_w
end
end)
-- C. Imperative Suffix "-me" (Voice preceding consonant)
if AS_IMP == 1 then
word = mw.ustring.gsub(word, "([ptsťkfcčš])me", function(c)
return (voicing_map[c] or c) .. "me"
end)
end
-- [[ 2. Main Assimilation Logic ]] --
local tokens = get_graphemes(word)
local len = #tokens
local str = table.concat(tokens)
-- Check for "-mo" variant trigger
if mw.ustring.find(word, "[ptsčškcfx]%.mo%f[%A]") or mw.ustring.find(word, "ch%.mo%f[%A]") then
IS_MO_VARIANT = true
end
-- Helpers
local function prev_C(k)
while k >= 1 do local t=tokens[k]; if t~="'" and t~="_" and t~=" " and t~="-" and t~="." then return k end k=k-1 end
end
local function is_bound(k)
return k<1 or k>len or tokens[k]==" " or tokens[k]=="_" or tokens[k]=="-"
end
local function prev_bound(k)
local l, k = 0, k-1 -- Start checking before current index
while k-l >= 1 do
local t = tokens[k-l]
if t=="'" or t=="_" or t==" " or t=="-" then break end
l = l + 1
end
return l
end
-- Init State
local simple = not mw.ustring.find(str, "[ %-_]")
local w_offset = (simple and tokens[1] == "'") and 1 or 0
-- p_len = Exact count of characters before 'i'
local p_len = simple and (len - w_offset - 1) or prev_bound(len)
-- Reverse Loop (Regressive Assimilation)
for i = len, 2, -1 do
-- Reset state if we crossed a word boundary
if not simple and is_bound(i+1) then p_len = prev_bound(i) end
local is_prefix = false
-- A. Prefix Check
if p_len >= 2 and p_len <= 4 then
local sub = table.concat(tokens, "", i - p_len, i - 1)
if prefixes[sub] then
apply_assimilation(tokens, i - 1, i, true)
is_prefix = true
end
end
-- B. General Assimilation (If not prefix)
if not is_prefix then
local tgt = prev_C(i-1)
if tgt then
local is_opt = false
for k = tgt + 1, i - 1 do
if tokens[k]==" " or tokens[k]=="-" or tokens[k]=="_" then is_opt = true; break end
end
-- Handles both Devoicing (standard) and Voicing (at boundaries)
apply_assimilation(tokens, tgt, i, is_opt)
end
end
p_len = p_len - 1
end
return table.concat(tokens)
end
function step_v_f_j_realization(word)
word = mw.ustring.gsub(mw.ustring.gsub(word, "anje[lľ]", "aňɪ̯el"), "_", "")
word = mw.ustring.gsub(mw.ustring.gsub(word, "%+u", "ů"), "%+i", "I")
local syllables = split_into_syllables(word)
local res_syls = {}
local function is_nuc(c)
return vowels_set[c] or diphthongs_set[c] or c=='r' or c=='l' or c=='ŕ' or c=='ĺ'
end
for s_i, syl in ipairs(syllables) do
local s_len, res = mw.ustring.len(syl), {}
local nuc_i = nil
for k = 1, s_len do
if is_nuc(mw.ustring.sub(syl, k, k)) then nuc_i = k; break end
end
for c_i = 1, s_len do
local c = mw.ustring.sub(syl, c_i, c_i)
local out = c
if c ~= "'" and c ~= "." and c ~= "-" then
local function peek(dir, count)
count = count or 1
local k, si = c_i, s_i
while count > 0 do
k = k + dir
if k < 1 then si = si - 1; if not syllables[si] then return nil end; k = mw.ustring.len(syllables[si])
elseif k > mw.ustring.len(syllables[si]) then si = si + 1; if not syllables[si] then return nil end; k = 1 end
local t = mw.ustring.sub(syllables[si], k, k)
if t ~= "'" and t ~= "." and t ~= "-" then count = count - 1; if count == 0 then return t end end
end
end
-- 2. DETECT POSITIONS (Ignore ' and .)
local is_onset = (mw.ustring.gsub(mw.ustring.sub(syl, 1, c_i-1), "['%.%-]", "") == "")
local is_coda = nuc_i and (c_i > nuc_i)
local prev, nxt = peek(-1), peek(1)
if c == 'u' then
if prev == 'o' and (not nxt or nxt == ' ') then out = "ů" end
elseif c == 'v' then
if is_coda and prev and is_nuc(prev) then
local is_u_prev = (prev == 'u' or prev == 'ú')
local is_amb_next = (nxt and (nxt=='n' or nxt=='ň' or nxt=='l' or nxt=='ľ' or nxt=='r'))
out = (is_u_prev or is_amb_next) and "U" or "ů"
else
local prev_syl_clean = (s_i > 1) and mw.ustring.gsub(syllables[s_i-1], "['%.%-]", "") or ""
local prev_nuc = (s_i > 1) and is_nuc(mw.ustring.sub(prev_syl_clean, -1))
local next_is_vn = (nxt and (nxt == 'n' or nxt == 'ň'))
if is_onset and (s_i == 1 or prev_nuc) and next_is_vn then
out = "W"
else
local next_is_z = (nxt == 'z')
local after_z = next_is_z and peek(1, 2) -- Peek 2 steps ahead
local vz_unv = (next_is_z and after_z and voiceless_paired[after_z])
if vz_unv or (nxt and voiceless_paired[nxt]) then out = "f"
elseif nxt and voiced_paired[nxt] and not sonorants[nxt] then out = "w"
else out = "v" end
end
end
elseif c == 'f' then
if is_coda and nxt and (voiced_paired[nxt] or sonorants[nxt]) then out = "F" end
elseif c == 'j' then
local prev_is_iy = (prev == 'i' or prev == 'í' or prev == 'y' or prev == 'ý')
if is_onset then out = "j"
elseif not vowels_set[prev] or prev_is_iy then out = "J"
else out = "I" end
end
end
table.insert(res, out)
end
table.insert(res_syls, table.concat(res))
end
return table.concat(res_syls)
end
function step_final_devoicing(word)
local tokens = get_graphemes(word)
local i = #tokens
while i > 0 do
local c = tokens[i]
if voiced_paired[c] then tokens[i] = voicing_map[c]; i = i - 1
elseif voiceless_paired[c] then i = i - 1
else break end
end
return table.concat(tokens)
end
function generate_all_transcriptions(word, original_word)
local gsub = mw.ustring.gsub
-- A. Base IPA
local base_ipa = ipa_transform_worker(word)
-- B. Phonemic
local phonemic = gsub(gsub(base_ipa, "ˈ", ""), "[vwFůWU]", "v")
phonemic = gsub(gsub(phonemic, "J", "j"), "H", "ɦ")
phonemic = gsub(gsub(phonemic, "ä", "æ"), "ľ", "ʎ")
phonemic = gsub(phonemic, "I", "j")
-- Decode Dental Clusters
phonemic = gsub(phonemic, "(%d['%s_]*%d)", function(k)
local d1, sep, d2 = mw.ustring.match(k, "(%d)(['%s_]*)(%d)")
d1, d2 = tonumber(d1), tonumber(d2)
local d1_fix = ((d1+d2)%2==1) and (d1 + (d2%2==0 and 1 or -1)) or d1
return (c1_dec[d1_fix] or "") .. sep .. (c2_dec[d2] or "")
end)
-- C. Phonetic Base
local phonetic_base = resolve_phonetic_base(base_ipa)
local roots = { phonetic_base }
-- D. Handle "-mo" Variant
if IS_MO_VARIANT and original_word then
local c = mw.ustring.sub(original_word, -4, -4) -- grab the consonant immediately preceding the ".mo" suffix
local c_voiced = voicing_map[c]
if c_voiced then
local ipa_voiceless = (ipa_map[c] or c)
local ipa_voiced = (ipa_map[c_voiced] or c_voiced)
local pattern = mw.ustring.gsub(ipa_voiceless, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") .. "mɔ$" -- escape IPA chars for regex and target the end of string
local new_root, count = mw.ustring.gsub(phonetic_base, pattern, ipa_voiced .. "mɔ")
if count > 0 then
table.insert(roots, new_root)
end
end
end
-- E. Expand Variants
local bases_expanded = {}
for _, root in ipairs(roots) do
local expansions = expand_variants(root)
for _, e in ipairs(expansions) do table.insert(bases_expanded, e) end
end
-- F. Generate Registers
local high_res, low_res = {}, {}
for _, ipa in ipairs(bases_expanded) do
table.insert(high_res, (gsub(ipa, "æ", "ɛɐ̯")))
local l = gsub(gsub(gsub(ipa, "æ", "e"), "ʎ", "l"), "l ?ˈ?l", "lː")
table.insert(low_res, (gsub(l, "n([fvʋ])", "ɱ%1")))
end
return {
phonemic = phonemic,
high = high_res,
low = low_res
}
end
-- =============================================================================
-- [[ MAIN EXPORT ]]
-- =============================================================================
function export.show(frame)
local args = frame:getParent().args
local title = mw.title.getCurrentTitle()
local t = args["t"] or ""
NAMESPACE = title.nsText
PAGENAME = (NAMESPACE == "") and title.text or (args["pagename"] or "Trang tên không được chỉ rõ")
LOAN = mw.ustring.find(t, "loan") and 1 or 0
HARD_SUFFIX = mw.ustring.find(t, "adj") and 1 or 0
AS_IMP = mw.ustring.find(t, "imp") and 1 or 0
IS_MO_VARIANT = false
local word = (args["1"] ~= nil) and args["1"] or PAGENAME
local original_word = word
local manual_hard = (args["1"] ~= nil and mw.ustring.find(args["1"], "[DTNL]"))
-- Display Switches
local show_rhymes = (args["r"] ~= "0")
and not mw.ustring.find(word, "^%-")
and not mw.ustring.find(word, "%-$")
local show_hyph = (args["h"] ~= "0")
local audio = args["a"] or false
local audio_accent = args["aa"] or ""
-- Pipeline
if not manual_hard then word = step_foreign_graphemes(word) end
word = step_softening(word)
if manual_hard then word = step_foreign_graphemes(word) end
word = step_prosody(word)
word = step_simplification(word)
word = step_assimilation(word)
word = step_v_f_j_realization(word)
word = step_final_devoicing(word)
local final = generate_all_transcriptions(word, original_word)
local nuclei, clean_ipa = get_ipa_nuclei(final.phonemic)
local out = format_ipa_output(final, frame)
if audio then out = out .. "\n*" .. frame:expandTemplate{title="audio", args={"sk", audio, a=audio_accent}} end
if show_rhymes then out = out .. format_rhymes(frame, nuclei, clean_ipa) end
if show_hyph then out = out .. format_hyphenation(PAGENAME, final.phonemic, frame, original_word, nuclei) end
return out
end
return export
15q0fy3x8czzberun39fdrdfb5ac604
शत
0
385849
2512303
2332112
2026-08-08T09:03:42Z
Hiyuune
50834
/* Hậu duệ */
2512303
wikitext
text/x-wiki
{{also|शांत}}
=={{langname|hi}}==
==={{ĐM|etym}}===
{{bor+|hi|sa|शत}}. {{doublet|hi|सौ|सद}}.
==={{ĐM|pron}}===
* {{hi-IPA}}
==={{ĐM|numeral}}===
{{hi-num-card}}
# {{lb|hi|literary}} [[trăm|Trăm]].
#: {{syn|hi|सौ|सद|q2=thơ ca}}
===={{ĐM|drv}}====
{{col|hi|प्रतिशत|शताब्दी|शतवर्ष|शतवार्षिक|शतांश|शतशत|शतपाद}}
==={{ĐM|ref}}===
* {{R:hi:McGregor}}
=={{langname|sa}}==
{{number box|sa|100}}
==={{ĐM|alt sc}}===
{{sa-alt}}
==={{ĐM|etym}}===
{{dercat|sa|inc-pro|inh=1}}
<!-- {{ety|sa|id=hundred|:inh|iir-pro:*ćatám<id:hundred>|tree=1}} -->
Từ {{inh|sa|iir-pro|*ćatám|t=trăm}}, từ {{inh|sa|ine-pro|*ḱm̥tóm|t=trăm}}.<ref>{{R:sa:EWAia|vol=2|page=606|head=śatá-}}</ref> Cùng gốc với {{cog|ae|𐬯𐬀𐬙𐬀}}, {{cog|grc|ἑκατόν}}, {{cog|la|centum}}, {{cog|xto|känt}}, {{cog|en|hundred|hund-red}}.
==={{ĐM|pron}}===
{{sa-IPA|a=2}}
==={{ĐM|numeral}}===
{{head|sa|numeral|tr=śatá|g=n}}, hiếm khi {{g|m}}, ở cuối một từ ghép {{g|f}}(ī)
# [[trăm|Trăm]].
# Bất kỳ con [[số]] rất lớn nào.
===={{ĐM|decl}}====
{{sa-decl-noun-n|śatá}}
{{sa-decl-noun-m|śatá}}
{{sa-decl-noun-f|śatī}}
===={{ĐM|desc}}====
* {{desctree|inc-ash|𑀲𑀢}}
* Dard:
** {{desc|ks|ہَتھ|tr=hath}}
** {{desc|scl|شل|tr=śal}}
* {{desctree|bor=1|kaw|śata}}
* {{desc|pi|sata}}
* {{desc|bn|শত|bor=1}}
** {{desc|rhg|cót|bor=1}}
* {{desc|hi|शत|bor=1}}
* {{desc|ta|சதம்|bor=1}}
* {{desc|te|శతము|lbor=1}}
* {{desc|dv|ސަތޭކަ|bor=1|der=1}}
* {{desc|th|ศต|bor=1}}
==={{ĐM|ref}}===
<references />
==={{ĐM|further}}===
* {{R:MW|1048|col=3}}
{{cln|sa|Số đếm}}
78feurf86q7rv6ryfbvxljxv1coow60
Thể loại:Ký hiệu tiếng Hachijō
14
387020
2512350
2334314
2026-08-08T11:38:07Z
Hiyuune
50834
Hiyuune đã đổi [[Thể loại:Ký tự tiếng Hachijō]] thành [[Thể loại:Ký hiệu tiếng Hachijō]]
2334314
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Mô đun:dialect synonyms/niv/пилдж
828
389609
2512154
2338795
2026-08-07T14:44:13Z
Hiyuune
50834
2512154
Scribunto
text/plain
local export = {}
export.gloss = "kích thước lớn"
export.syns = {
-- Nam Sakhalin
["Poronaysk"] = { },
-- Đông Sakhalin
["Chaivo"] = { },
["Nyivo"] = { },
["Nogliki"] = { },
["Chir-unvd"] = { },
-- Bắc Sakhalin
["Kuegda"] = { },
["Ten'gi"] = { },
["Tyk"] = { },
["Trambaus"] = { },
-- Amur
["Men'shikova"] = { "пилкарж:{{IPA|niv|/pilkař/}}" },
["Machlavo"] = { "пилдж:{{IPA|niv|/pilʤ/}}", "пилкар:{{IPA|niv|/pilkar/}}", "пылкар:{{IPA|niv|/pɨlkar/}}" },
["Chomi"] = { "пила:{{IPA|niv|/pila/}}", "пилдж:{{IPA|niv|/pilʤ/}}", "пилы:{{IPA|niv|/pilɨ/}}" },
["Kol'-Nikol'sk"] = { "пилкарч:{{IPA|niv|/pilkarʧ/}}" },
["Novo-Troitskoe"] = { "пилакан:{{IPA|niv|/pila qan/}}" },
}
return export
dgx3xqmwas8dqvx4zxxz7gbodd1yt70
Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ/Ký hiệu đa ngữ
14
399749
2512317
2361783
2026-08-08T09:58:02Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ/Ký tự đa ngữ]] thành [[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ/Ký hiệu đa ngữ]] (đã tắt đổi hướng): Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2361783
wikitext
text/x-wiki
[[Thể loại:Ký tự đa ngữ]]
[[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]
6oix79wnk3kmn1ogeaybh6gsd9jqnh7
2512318
2512317
2026-08-08T09:58:39Z
TheHighFighter2
42988
đã dời [[Thể loại:Ký tự đa ngữ]]; đã thêm [[Thể loại:Ký hiệu đa ngữ]] dùng [[w:WP:HOTCAT|HotCat]]
2512318
wikitext
text/x-wiki
[[Thể loại:Ký hiệu đa ngữ]]
[[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]
3dmh3fshdo751i3zx84q998eiyegnmj
2512319
2512318
2026-08-08T09:59:28Z
TheHighFighter2
42988
đã thêm [[Thể loại:Bảo trì mục từ đa ngữ]] dùng [[w:WP:HOTCAT|HotCat]]
2512319
wikitext
text/x-wiki
[[Thể loại:Ký hiệu đa ngữ]]
[[Thể loại:Mục từ dùng cấu trúc mục từ Wiktionary cũ]]
[[Thể loại:Bảo trì mục từ đa ngữ]]
18y1ua81pele3epnxadi35p0pn80bos
Fettsäure
0
411304
2512137
2026-08-07T12:09:11Z
Kelly zhrm
58416
Trang mới: “=={{langname|de}}== {{wp|de:}} ==={{ĐM|etym}}=== {{ety|de|:af|Fett|Säure}} Từ {{compound|de|Fett|Säure}}. ==={{ĐM|pron}}=== * {{IPA4|de|/ˈfɛtˌzɔʏ̯ʁə/}} * {{audio|de|De-Fettsäure.ogg|a=Berlin}} * {{hyph|de|Fett|säu|re}} ==={{ĐM|n}}=== {{de-noun|f}} # {{lb|de|organic chemistry|biochemistry}} [[acid béo|Acid béo]]. ===={{ĐM|decl}}==== {{de-ndecl|f}} ===={{ĐM|hypo}}==== * {{l|de|gesättigte Fettsäure}}, {{l|de|ungesättigte Fettsäure}} * {{l|de|Om…”
2512137
wikitext
text/x-wiki
=={{langname|de}}==
{{wp|de:}}
==={{ĐM|etym}}===
{{ety|de|:af|Fett|Säure}}
Từ {{compound|de|Fett|Säure}}.
==={{ĐM|pron}}===
* {{IPA4|de|/ˈfɛtˌzɔʏ̯ʁə/}}
* {{audio|de|De-Fettsäure.ogg|a=Berlin}}
* {{hyph|de|Fett|säu|re}}
==={{ĐM|n}}===
{{de-noun|f}}
# {{lb|de|organic chemistry|biochemistry}} [[acid béo|Acid béo]].
===={{ĐM|decl}}====
{{de-ndecl|f}}
===={{ĐM|hypo}}====
* {{l|de|gesättigte Fettsäure}}, {{l|de|ungesättigte Fettsäure}}
* {{l|de|Omega-3-Fettsäure}}, {{l|de|Omega-6-Fettsäure}}
==={{ĐM|further}}===
* {{R:de:DWDS}}
* {{R:de:Grimm}}
* {{R:de:Duden}}
{{C|de|Acid béo|Acid carboxylic}}
334kuru7tugehwdmhprs2jt4ow9it9i
купене
0
411305
2512139
2026-08-07T12:14:18Z
Hiyuune
50834
Trang mới: “=={{langname|rsk}}== ==={{ĐM|etym}}=== {{nonlemma}} ==={{ĐM|pron}}=== * {{rsk-IPA}} * {{rhymes|rsk|ɛnɛ|s=3}} * {{hyph|rsk|ку|пе|не}} ==={{ĐM|n}}=== {{rsk-noun|n}} # {{lb|rsk|nominalized}} [[mua|Mua]]. #: {{syn|rsk|накупене}} ===={{ĐM|decl}}==== {{rsk-decl-noun-table |купене|купеного|купеному|купене|купеним|[[купеним]] / [[купеному]]|купене |купени|купених|купеним|купе…”
2512139
wikitext
text/x-wiki
=={{langname|rsk}}==
==={{ĐM|etym}}===
{{nonlemma}}
==={{ĐM|pron}}===
* {{rsk-IPA}}
* {{rhymes|rsk|ɛnɛ|s=3}}
* {{hyph|rsk|ку|пе|не}}
==={{ĐM|n}}===
{{rsk-noun|n}}
# {{lb|rsk|nominalized}} [[mua|Mua]].
#: {{syn|rsk|накупене}}
===={{ĐM|decl}}====
{{rsk-decl-noun-table
|купене|купеного|купеному|купене|купеним|[[купеним]] / [[купеному]]|купене
|купени|купених|купеним|купене|купенима|купених|купени
}}
==={{ĐM|adj}}===
{{head|rsk|Biến thể hình thái tính từ}}
# {{inflection of|rsk|купени||nom//acc//voc|ở|n|s}}
==={{ĐM|ref}}===
* {{R:rsk:SRS|куповина|578|1}}
* {{R:rsk:ARS|purchase|231}}
ktck21498gopafegh1ms7sohns1a3fg
куповачка
0
411306
2512140
2026-08-07T12:16:40Z
Hiyuune
50834
Trang mới: “=={{langname|rsk}}== ==={{ĐM|etym}}=== {{ety|rsk|:af|куповац|-ачка<ety:inh<zlw-osk:-ačka<ety:af<-ák<ety:inh<sla-pro:*-akъ>>><-áč<ety:inh<sla-pro:*-ačь>>><-ka>>>>|tree=1|text=1}} ==={{ĐM|pron}}=== * {{rsk-IPA}} * {{rhymes|rsk|at͡ʃka|s=4}} * {{hyph|rsk|ку|по|вач|ка}} ==={{ĐM|n}}=== {{rsk-noun|f}} # {{lb|rsk|countable}} [[mua|Mua]]. #: {{nearsyn|rsk|купованє}} ===={{ĐM|decl}}==== {{rsk-decl-noun-f}} ==={{ĐM|ref}}=== * {{R:rsk:S…”
2512140
wikitext
text/x-wiki
=={{langname|rsk}}==
==={{ĐM|etym}}===
{{ety|rsk|:af|куповац|-ачка<ety:inh<zlw-osk:-ačka<ety:af<-ák<ety:inh<sla-pro:*-akъ>>><-áč<ety:inh<sla-pro:*-ačь>>><-ka>>>>|tree=1|text=1}}
==={{ĐM|pron}}===
* {{rsk-IPA}}
* {{rhymes|rsk|at͡ʃka|s=4}}
* {{hyph|rsk|ку|по|вач|ка}}
==={{ĐM|n}}===
{{rsk-noun|f}}
# {{lb|rsk|countable}} [[mua|Mua]].
#: {{nearsyn|rsk|купованє}}
===={{ĐM|decl}}====
{{rsk-decl-noun-f}}
==={{ĐM|ref}}===
* {{R:rsk:SRS|куповина|578|1}}
* {{R:rsk:RSS|+|405}}
* {{R:rsk:ARS|purchase|231}}
e5j7wuqgs3vlqqrv6icvoa9v7cl9yce
Bản mẫu:rsk-verb
10
411307
2512141
2026-08-07T12:19:41Z
Hiyuune
50834
Trang mới: “{{head|rsk|Động từ |head={{{head|}}} |g={{#switch:{{{1}}}|impf=impf|pf=pf|biasp=biasp|?}} |{{#if:{{{2|}}}|{{#switch:{{{1}}}|impf=hoàn thành|pf=chưa hoàn thành}}}} |{{{2|}}} |{{#if:{{{3|}}}|hoặc}} |{{{3|}}} |{{#if:{{{4|}}}|hoặc}} |{{{4|}}} |{{#if:{{{impf|}}}|chưa hoàn thành}} |{{{impf|}}} |{{#if:{{{impf2|}}}|hoặc}} |{{{impf2|}}} |{{#if:{{{pf|}}}|hoàn thành}} |{{{pf|}}} |{{#if:{{{pf2|}}}|hoặc}} |{{{pf2|}}} }}<noinclude>{{tcat|hw}}</noinclude>”
2512141
wikitext
text/x-wiki
{{head|rsk|Động từ
|head={{{head|}}}
|g={{#switch:{{{1}}}|impf=impf|pf=pf|biasp=biasp|?}}
|{{#if:{{{2|}}}|{{#switch:{{{1}}}|impf=hoàn thành|pf=chưa hoàn thành}}}}
|{{{2|}}}
|{{#if:{{{3|}}}|hoặc}}
|{{{3|}}}
|{{#if:{{{4|}}}|hoặc}}
|{{{4|}}}
|{{#if:{{{impf|}}}|chưa hoàn thành}}
|{{{impf|}}}
|{{#if:{{{impf2|}}}|hoặc}}
|{{{impf2|}}}
|{{#if:{{{pf|}}}|hoàn thành}}
|{{{pf|}}}
|{{#if:{{{pf2|}}}|hoặc}}
|{{{pf2|}}}
}}<noinclude>{{tcat|hw}}</noinclude>
1005k61tmbcpz9prfzdg3ozs1bcc35z
куповац
0
411308
2512142
2026-08-07T12:20:53Z
Hiyuune
50834
Trang mới: “=={{langname|rsk}}== ==={{ĐM|etym}}=== {{ety|rsk|:inh|zlw-osk:kupovať<ety:inh<sla-pro:*kupovati<ety:af<*kupiti<id:mua>><*-ovati>>>>|tree=1|text=2}}. Các từ cùng gốc bao gồm {{cog|cs|kupovat}}, {{cog|pl|kupować}}, {{cog|sh|куповати//kupovati}} và {{cog|sk|kupovať}}. {{surf|rsk|купиц|-овац}}. ==={{ĐM|pron}}=== * {{rsk-IPA}} * {{rhymes|rsk|ɔvat͡s|s=3}} * {{hyph|rsk|ку|по|вац}} ==={{ĐM|v}}=== {{rsk-verb|impf|купиц}} # {{lb|rsk…”
2512142
wikitext
text/x-wiki
=={{langname|rsk}}==
==={{ĐM|etym}}===
{{ety|rsk|:inh|zlw-osk:kupovať<ety:inh<sla-pro:*kupovati<ety:af<*kupiti<id:mua>><*-ovati>>>>|tree=1|text=2}}. Các từ cùng gốc bao gồm {{cog|cs|kupovat}}, {{cog|pl|kupować}}, {{cog|sh|куповати//kupovati}} và {{cog|sk|kupovať}}. {{surf|rsk|купиц|-овац}}.
==={{ĐM|pron}}===
* {{rsk-IPA}}
* {{rhymes|rsk|ɔvat͡s|s=3}}
* {{hyph|rsk|ку|по|вац}}
==={{ĐM|v}}===
{{rsk-verb|impf|купиц}}
# {{lb|rsk|transitive}} [[mua|Mua]].
#: {{ant|rsk|предавац}}
# {{lb|rsk|intransitive}} Làm [[kinh doanh]]; [[buôn bán]], [[thương mại]].
lvyb5kaxlskn6ed3g9sk3nzd2zem6lv
2512143
2512142
2026-08-07T12:23:28Z
Hiyuune
50834
/* Động từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512143
wikitext
text/x-wiki
=={{langname|rsk}}==
==={{ĐM|etym}}===
{{ety|rsk|:inh|zlw-osk:kupovať<ety:inh<sla-pro:*kupovati<ety:af<*kupiti<id:mua>><*-ovati>>>>|tree=1|text=2}}. Các từ cùng gốc bao gồm {{cog|cs|kupovat}}, {{cog|pl|kupować}}, {{cog|sh|куповати//kupovati}} và {{cog|sk|kupovať}}. {{surf|rsk|купиц|-овац}}.
==={{ĐM|pron}}===
* {{rsk-IPA}}
* {{rhymes|rsk|ɔvat͡s|s=3}}
* {{hyph|rsk|ку|по|вац}}
==={{ĐM|v}}===
{{rsk-verb|impf|купиц}}
# {{lb|rsk|transitive}} [[mua|Mua]].
#: {{ant|rsk|предавац}}
# {{lb|rsk|intransitive}} Làm [[kinh doanh]]; [[buôn bán]], [[thương mại]].
===={{ĐM|forms}}====
{{rsk-conj|impf|4}}
===={{ĐM|drv}}====
{{col|rsk|title=danh từ|купованє<g:n>|куповачка<g:f>}}
==={{ĐM|ref}}===
* {{R:rsk:RSS|+|405}}
* {{R:rsk:ARS|buy|46}}
pish228opjhz1ydqryrt8lm2icpariw
2512155
2512143
2026-08-07T14:45:40Z
Hiyuune
50834
/* Từ nguyên */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512155
wikitext
text/x-wiki
=={{langname|rsk}}==
==={{ĐM|etym}}===
{{ety|rsk|:inh|zlw-osk:kupovať<ety:inh<sla-pro:*kupovati<ety:af<*kupiti<id:mua>><*-ovati>>>>|tree=1|text=2}} Các từ cùng gốc bao gồm {{cog|cs|kupovat}}, {{cog|pl|kupować}}, {{cog|sh|куповати//kupovati}} và {{cog|sk|kupovať}}. {{surf|rsk|купиц|-овац}}.
==={{ĐM|pron}}===
* {{rsk-IPA}}
* {{rhymes|rsk|ɔvat͡s|s=3}}
* {{hyph|rsk|ку|по|вац}}
==={{ĐM|v}}===
{{rsk-verb|impf|купиц}}
# {{lb|rsk|transitive}} [[mua|Mua]].
#: {{ant|rsk|предавац}}
# {{lb|rsk|intransitive}} Làm [[kinh doanh]]; [[buôn bán]], [[thương mại]].
===={{ĐM|forms}}====
{{rsk-conj|impf|4}}
===={{ĐM|drv}}====
{{col|rsk|title=danh từ|купованє<g:n>|куповачка<g:f>}}
==={{ĐM|ref}}===
* {{R:rsk:RSS|+|405}}
* {{R:rsk:ARS|buy|46}}
2ri856hs0jdk8d3pbrzcmf0amcn3uq0
kupovať
0
411309
2512144
2026-08-07T12:25:39Z
Hiyuune
50834
Trang mới: “{{also|kupovat}} =={{langname|sk}}== ==={{section|pron}}=== * {{sk-IPA}} ==={{section|v}}=== {{sk-verb|a=impf}} # {{imperfective form of|sk|kúpiť}} #: {{ant|sk|predávať}} ===={{section|forms}}==== {{sk-conj|impf|4e}} ==={{section|further}}=== * {{R:sk:SDK}}”
2512144
wikitext
text/x-wiki
{{also|kupovat}}
=={{langname|sk}}==
==={{section|pron}}===
* {{sk-IPA}}
==={{section|v}}===
{{sk-verb|a=impf}}
# {{imperfective form of|sk|kúpiť}}
#: {{ant|sk|predávať}}
===={{section|forms}}====
{{sk-conj|impf|4e}}
==={{section|further}}===
* {{R:sk:SDK}}
7eyym3xh7xyatqu6b24qahnx5iqy9q7
kupujme
0
411310
2512145
2026-08-07T12:26:34Z
Hiyuune
50834
Trang mới: “=={{langname|sk}}== ==={{ĐM|v}}=== {{head|sk|Biến thể hình thái động từ}} # {{infl of|sk|kupovať||imp|ở|1|p}}”
2512145
wikitext
text/x-wiki
=={{langname|sk}}==
==={{ĐM|v}}===
{{head|sk|Biến thể hình thái động từ}}
# {{infl of|sk|kupovať||imp|ở|1|p}}
jow9ufv6ejgbhnejrmtj9s7dzamt0u4
Thể loại:en:Sinh học tế bào
14
411311
2512147
2026-08-07T14:15:52Z
Kelly zhrm
58416
Trang mới: “{{auto cat}}”
2512147
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
엽록체
0
411312
2512148
2026-08-07T14:21:10Z
Kelly zhrm
58416
Trang mới: “=={{langname|ko}}== {{wp|ko:}} ==={{ĐM|etym}}=== {{ko-etym-sino|葉綠體|[[lục lạp]]}}. ==={{ĐM|pron}}=== {{ko-IPA}} ==={{ĐM|n}}=== {{ko-noun|hanja=葉綠體}} # {{lb|ko|biochemistry}} [[lục lạp|Lục lạp]].”
2512148
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{ĐM|etym}}===
{{ko-etym-sino|葉綠體|[[lục lạp]]}}.
==={{ĐM|pron}}===
{{ko-IPA}}
==={{ĐM|n}}===
{{ko-noun|hanja=葉綠體}}
# {{lb|ko|biochemistry}} [[lục lạp|Lục lạp]].
l879eqz0tsr5ro14urb0eaoizqs9ah9
Mô đun:rsk-verb
828
411313
2512158
2026-08-07T15:03:30Z
Hiyuune
50834
Trang mới: “--[=[ This module contains functions for creating inflection tables for Pannonian Rusyn verbs. Based on Module:sk-verb (pre-2026 version). ]=]-- local export = {} -- Within this module, conjugations are the functions that do the actual -- conjugating by creating the forms of a basic verb. -- They are defined further down. local conjugations = {} local lang = require("Module:languages").getByCode("rsk") local m_links = require("Module:links") -- The main entry p…”
2512158
Scribunto
text/plain
--[=[
This module contains functions for creating inflection tables for Pannonian Rusyn
verbs. Based on Module:sk-verb (pre-2026 version).
]=]--
local export = {}
-- Within this module, conjugations are the functions that do the actual
-- conjugating by creating the forms of a basic verb.
-- They are defined further down.
local conjugations = {}
local lang = require("Module:languages").getByCode("rsk")
local m_links = require("Module:links")
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local args = frame:getParent().args
NAMESPACE = mw.title.getCurrentTitle().nsText
if NAMESPACE == "" then
PAGENAME = mw.loadData("Module:headword/data").pagename
else
if args["pagename"] then
PAGENAME = args["pagename"]
else
error("Tên trang không được chỉ rõ.")
end
end
-- Default to impf on the template page so that there is no script error.
local verb_type = args[1] or (NAMESPACE == "Bản_mẫu" and "impf") or error("Verb type has not been specified. Please pass parameter 1")
local conj_type = args[2] or error("Conjugation type has not been specified. Please pass parameter 2")
--reflexive
local refl = false
if mw.ustring.find(verb_type, "se") then
refl = true
PAGENAME = PAGENAME .. " ше"
elseif mw.ustring.find(PAGENAME, " ше$") then
refl = true
end
--perfective
--TODO: "biasp"
local perf = false
if not mw.ustring.find(verb_type, "impf") then perf = true end
--impersonal
local impers = false
if mw.ustring.find(verb_type, "impers") then impers = true end
local cats = {
refl = refl,
perf = perf,
impers = impers
}
PERF_FULL = "perfective"
if not perf then PERF_FULL = "chưa hoàn thành" end
--impersonal (only used in a few verbs)
IMPERS = ""
if impers then IMPERS = "không ngôi; " end
local forms, title, categories
if conjugations[conj_type] then
forms, title, categories = conjugations[conj_type](args)
else
error("Không rõ loại chia động từ '" .. conj_type .. "'")
end
--cách viết khác
--forms["impr_2sg2"] = args["impr_2sg2"]
--forms["impr_1pl2"] = args["impr_1pl2"]
--forms["impr_2pl2"] = args["impr_2pl2"]
forms["pres_actv_part2"] = args["pres_actv_part2"]
forms["past_actv_part2"] = args["past_actv_part2"]
--forms["pres_pasv_part2"] = args["pres_pasv_part2"]
forms["gerund2"] = args["gerund2"]
--forms["past_m2"] = args["past_m2"]
--forms["past_f2"] = args["past_f2"]
--forms["past_n2"] = args["past_n2"]
--forms["past_pl2"] = args["past_pl2"]
forms["pres_futr_1sg2"] = args["pres_futr_1sg2"]
forms["pres_futr_2sg2"] = args["pres_futr_2sg2"]
forms["pres_futr_3sg2"] = args["pres_futr_3sg2"]
forms["pres_futr_1pl2"] = args["pres_futr_1pl2"]
forms["pres_futr_2pl2"] = args["pres_futr_2pl2"]
forms["pres_futr_3pl2"] = args["pres_futr_3pl2"]
if args["gerund"] then forms["gerund"] = args["gerund"] end
if args["pres_pasv_part"] then forms["pres_pasv_part"] = args["pres_pasv_part"] end
--parameters passed by the user
local no_impr = args["no_impr"]
local no_pres_actv_part = args["no_pres_actv_part"]
local no_pasv_part = args["no_pasv_part"]
local no_gerund = args["no_gerund"]
local pres_actv_part = args["pres_actv_part"]
local pasv_part = args["pasv_part"]
local impf_part = args["impf_part"]
local short = args["short"]
local dt = args["dt"]
local nt = args["nt"]
local params = {
no_impr = no_impr,
no_pres_actv_part = no_pres_actv_part,
no_pasv_part = no_pasv_part,
no_gerund = no_gerund,
pres_actv_part = pres_actv_part,
pasv_part = pasv_part,
impf_part = impf_part,
short = short,
dt = dt,
nt = nt
}
-- Hoàn thành/chưa hoàn thành
table.insert(categories, "Động từ " .. PERF_FULL .. " tiếng Rusnak")
-- Phản thân
if refl then
make_reflexive(forms)
table.insert(categories, "Động từ phản thân tiếng Rusnak")
end
local ret = ""
if NAMESPACE == "" then
local sort_key = PAGENAME
for key, cat in ipairs(categories) do
ret = ret .. "[[Thể loại:" .. cat .. "|" .. sort_key .. "]]"
end
end
return make_table(forms, title, cats, params) .. ret
end
--[=[
Conjugation functions
]=]--
-- pattern чит-а-м, чит-ай-у, чит-а-ц
conjugations["1"] = function(params)
local forms = {}
local categories = {"Động từ lớp 1 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 1, loại ''читац'')"
local stem = ""
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local pres_stem1 = stem .. "а"
local pres_stem2 = stem .. "ай"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern видз-и-м, видз--а, видз-и-ц
conjugations["2a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 2 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 2a, loại ''видзиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "и"
local pres_stem2 = stem
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern роб-и-м, роб-й-а, роб-и-ц
conjugations["2b"] = function(params)
local forms = {}
local categories = {"Động từ lớp 2 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 2b, loại ''робиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "и"
local pres_stem2 = stem .. "й"
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, stem)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
--TODO: figure out -nul, -ol paradigm
conjugations["3a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 3 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 3a, loại ''спаднуц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
stem = remove_reflexive_particle_and_suffix(stem, get_last_char(stem))
local last = mw.ustring.sub(stem, -2, -1)
local soft_stem = ""
if last == "сн" then
soft_stem = remove_suffix(stem, "сн")
soft_stem = soft_stem .. "шн"
elseif last == "зн" then
soft_stem = remove_suffix(stem, "зн")
soft_stem = soft_stem .. "жн"
else
soft_stem = stem
end
local pres_stem1 = soft_stem .. "є"
local pres_stem2 = soft_stem .. "ь"
local inf_stem = stem .. "у"
local inf_stem2 = remove_suffix(stem, "н")
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
if params["short"] == "1" then
add_preterite_suffixes(forms, inf_stem, inf_stem2)
elseif params["short"] == "n" then
add_preterite_suffixes(forms, inf_stem, "n")
elseif params["short"] == "o" then
add_preterite_suffixes(forms, inf_stem, "o")
else
add_preterite_suffixes(forms, inf_stem, nil)
end
return forms, title, categories
end
conjugations["3b"] = function()
local forms = {}
local categories = {"Động từ lớp 3 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 3b, loại ''гинуц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
stem = remove_reflexive_particle_and_suffix(stem, get_last_char(stem))
local pres_stem1 = stem .. "є"
local pres_stem2 = stem .. "ь"
local inf_stem = stem .. "у"
local inf_stem2 = remove_suffix(stem, "н")
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["4"] = function()
local forms = {}
local categories = {"Động từ lớp 4 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 4, loại ''куповац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "овац")
local pres_stem1 = stem .. "ує"
local pres_stem2 = stem .. "уй"
local inf_stem = stem .. "ова"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["5"] = function(params)
local forms = {}
local categories = {"Động từ lớp 5 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "loại 5, lớp ''червенїц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "еє"
local pres_stem2 = stem .. "ей"
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern нє-ше-м, нє-ш-у, нє-с-ц
conjugations["6a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 6 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 6a, loại ''нєсц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
local stem_last = get_last_char(stem) -- s or z
local pres_stem_last = ""
if stem_last == "с" then
pres_stem_last = "ш"
elseif stem_last == "з" then
pres_stem_last = "ж"
end
local pres_stem1 = remove_last_char(stem) .. pres_stem_last .. "е"
local pres_stem2 = remove_last_char(pres_stem1)
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, nil, pres_stem1, "н")
if params["short"] then
add_preterite_suffixes(forms, inf_stem, inf_stem)
else
add_preterite_suffixes(forms, inf_stem, "o")
end
return forms, title, categories
end
-- pattern ве-дзе-м, ве-д-у, ве-с-ц
conjugations["6b"] = function(params)
local forms = {}
local categories = {"Động từ lớp 6 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 6b, loại ''весц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "сц")
local dt = ""
local past_stem = ""
if get_last_char(stem) == "и" then
dt = "d"
past_stem = stem .. "ш"
elseif get_last_char(stem) == "й" then
dt = "d"
past_stem = remove_last_char(stem) .. "ш"
else
dt = params["dt"] or error("The conjugation root (\"d\" or \"t\") has not been specified. Please pass parameter 3")
end
local dt_cyrillic = ""
local dt_soft = ""
if dt == "d" then
dt_cyrillic = "д"
dt_soft = "дз"
elseif dt == "t" then
dt_cyrillic = "т"
dt_soft = "ц"
end
local pres_stem1 = stem .. dt_soft .. "е"
local pres_stem2 = stem .. dt_cyrillic
local inf_stem = stem .. dt_soft
if past_stem == "" then past_stem = pres_stem2 end
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, inf_stem)
set_participles_etc(forms, nil, pres_stem1, "н")
if params["short"] then
add_preterite_suffixes(forms, past_stem, past_stem)
else
add_preterite_suffixes(forms, past_stem, "o")
end
return forms, title, categories
end
conjugations["7a"] = function()
local forms = {}
local categories = {"Động từ lớp 7 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 7a, loại ''орац'')"
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local stem2 = nil
if mw.ustring.find(stem, "бр$") then
stem2 = remove_last_char(stem) .. "e" .. get_last_char(stem)
elseif mw.ustring.find(stem, "кл$") then
stem2 = remove_last_char(stem) .. "о" .. get_last_char(stem) .. "ь"
elseif mw.ustring.find(stem, "гн$") then
stem2 = "жень"
else
stem2 = stem
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["7b"] = function()
local forms = {}
local categories = {"Động từ lớp 7 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 7b, loại ''писац'')"
local stem = ""
local stem2 = nil
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
if get_last_char(stem) == "с" or get_last_char(stem) == "х" then
stem2 = remove_last_char(stem) .. "ш"
elseif get_last_char(stem) == "з" then
stem2 = remove_last_char(stem) .. "ж"
elseif get_last_char(stem) == "л" then
if get_last_char(remove_last_char(stem)) == "с" then
stem2 = remove_last_char(remove_last_char(stem)) .. "шль"
elseif get_last_char(remove_last_char(stem)) == "з" then
stem2 = remove_last_char(remove_last_char(stem)) .. "жль"
end
elseif get_last_char(stem) == "к" then
stem2 = remove_last_char(stem) .. "ч"
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["8"] = function()
local forms = {}
local categories = {"Động từ lớp 8 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 8, loại ''клєчац'')"
local stem = ""
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local stem2 = ""
if mw.ustring.find(stem, "сп$") then
if mw.ustring.len(stem) > 2 then
stem2 = mw.ustring.sub(stem, 1, -3) .. "шп"
pres_stem2_2 = mw.ustring.sub(stem, 1, -3) .. "шпй"
else
stem2 = "шп"
pres_stem2_2 = "шпй"
end
else
stem2 = stem
pres_stem2_2 = stem
end
local pres_stem1 = stem2 .. "и"
local pres_stem2 = pres_stem2_2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
if mw.ustring.find(stem, "сп$") then
add_imperative_suffixes(forms, pres_stem1)
else
add_imperative_suffixes(forms, pres_stem2)
end
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["9"] = function()
local forms = {}
local categories = {"Động từ lớp 9 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 9, loại ''жиц'')"
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
local pres_stem1 = stem .. "є"
local pres_stem2 = stem .. "й"
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["10"] = function(params)
local forms = {}
local categories = {"Động từ lớp 10 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 10, loại ''шмец'')"
if mw.ustring.find(PAGENAME, "ец$") or mw.ustring.find(PAGENAME, "ец ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ец")
elseif mw.ustring.find(PAGENAME, "єц$") or mw.ustring.find(PAGENAME, "єц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "єц")
end
local stem2 = nil
local past_stem = ""
if mw.ustring.find(stem, "мль$") then
stem2 = "мель"
past_stem = stem .. "е"
elseif mw.ustring.find(stem, "р$") and not mw.ustring.find(stem, "зр$") then
-- зрец, узрец, дозрец do not give -зар
stem2 = stem
past_stem = remove_last_char(stem) .. "а" .. get_last_char(stem)
else
stem2 = stem
past_stem = stem .. "е"
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2 .. "и")
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т", true)
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн", true)
else
set_participles_etc(forms, inf_stem, inf_stem, "н", true)
end
if mw.ustring.find(stem, "ар$") then
add_preterite_suffixes(forms, past_stem, "no_l")
else
add_preterite_suffixes(forms, past_stem, nil)
end
return forms, title, categories
end
conjugations["11"] = function()
local forms = {}
local categories = {"Động từ lớp 11 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 11, loại ''кляц'')"
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local pres_stem1 = stem .. "еє"
local pres_stem2 = stem .. "ей"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["12"] = function()
local forms = {}
local categories = {"Động từ lớp 12 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 12, loại ''жац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
local stem2 = stem
local stem_last = get_last_char(stem)
if stem_last == "ц" then
stem2 = remove_last_char(stem) .. "т"
elseif mw.ustring.find(stem, "ст$") then
stem2 = stem .. "а"
elseif mw.ustring.find(stem, "вж$") then
stem2 = "веж"
end
local pres_stem1 = stem2 .. "нє"
local pres_stem2 = stem2 .. "нь"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["13"] = function()
local forms = {}
local categories = {"Động từ lớp 13 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 13, loại ''бац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
local stem2 = stem .. "ой"
local pres_stem1 = stem2 .. "и"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["14"] = function(params)
local forms = {}
local categories = {"Động từ lớp 14 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 14, loại ''печиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "мочи$") then
stem = remove_suffix(PAGENAME, "чи") .. "ж"
else
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
end
local stem2 = ""
if get_last_char(stem) == "ч" then
stem2 = remove_last_char(stem) .. "к"
elseif get_last_char(stem) == "ж" then
stem2 = remove_last_char(stem) .. "г"
end
local pres_stem1 = stem .. "е"
local pres_stem2 = stem
local inf_stem = stem2
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, pres_stem1, "н")
if mw.ustring.find(PAGENAME, "мочи$") then
if mw.ustring.find(PAGENAME, "$мочи") then
params["no_impr"] = 1
end
forms["pres_actv_part"] = ""
forms["past_actv_part"] = ""
forms["gerund"] = ""
forms["pres_pasv_part"] = ""
end
if params["short"] or mw.ustring.find(PAGENAME, "мочи$") then
add_preterite_suffixes(forms, inf_stem, inf_stem)
else
add_preterite_suffixes(forms, inf_stem, "o")
end
return forms, title, categories
end
conjugations["irreg-буц"] = function()
-- irregular, only for verbs derived from буц derivatives
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local prefix = remove_suffix(remove_reflexive_particle_and_suffix(PAGENAME, ""), "буц")
forms["infinitive"] = PAGENAME
add_imperative_suffixes(forms, prefix .. "будз")
if prefix == "" then
forms["pres_futr_1sg"] = "[[сом]]"
forms["pres_futr_2sg"] = "[[ши]]"
forms["pres_futr_3sg"] = "[[є]]"
forms["pres_futr_1pl"] = "[[зме]]"
forms["pres_futr_2pl"] = "[[сце]]"
forms["pres_futr_3pl"] = "[[су]]"
forms["pres_actv_part"] = ""
forms["gerund"] = ""
forms["pres_pasv_part"] = ""
else
local pres_stem1 = prefix .. "будзе"
local pres_stem2 = prefix .. "буд"
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
set_participles_etc(forms, prefix .. "бу", prefix .. "бу", "т")
end
add_preterite_suffixes(forms, prefix .. "бу", nil)
return forms, title, categories
end
conjugations["irreg-єсц"] = function()
-- irregular, only for verbs derived from єсц and повесц
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local prefix = ""
if mw.ustring.find(PAGENAME, "есц$") then
prefix = remove_suffix(PAGENAME, "есц")
else
prefix = remove_suffix(PAGENAME, "єсц") .. "й"
end
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, prefix .. "е", prefix .. "едз", "а")
add_imperative_suffixes(forms, prefix .. "едз")
set_participles_etc(forms, nil, prefix .. "едзе", "н")
forms["past_actv_part"] = ""
if mw.ustring.find(prefix, "пов$") then
add_preterite_suffixes(forms, prefix .. "ед", prefix .. "ед")
else
add_preterite_suffixes(forms, prefix .. "ед", "o")
end
return forms, title, categories
end
conjugations["irreg-прияц"] = function()
-- irregular, only for verbs derived from прияц
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local stem = remove_suffix(PAGENAME, "ц")
local stem2 = remove_suffix(PAGENAME, "яц")
local pres_stem1 = stem2 .. "ме"
local pres_stem2 = stem2 .. "м"
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2 .. "и")
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
--[=[
Partial conjugation functions
]=]--
function get_last_char(str)
local last = mw.ustring.sub(str, -1, -1)
return last
end
function remove_last_char(str)
local stem = mw.ustring.sub(str, 1, -2)
return stem
end
function ends_with_2_consonants(str)
local cond = false
if mw.ustring.find(str, "[бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь]$") and not mw.ustring.find(str, "д[зж]$") then
cond = true
end
return cond
end
function ends_with_3_consonants(str)
local cond = false
if mw.ustring.find(str, "[бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь]$") and not mw.ustring.find(str, "д[зж]$") then
cond = true
end
return cond
end
function remove_suffix(form, suffix)
local base = form
if mw.ustring.find(base, suffix .. "$") then
local length = mw.ustring.len(suffix)
base = mw.ustring.sub(base, 1, -length-1)
end
return base
end
function remove_reflexive_particle_and_suffix(inf, suffix)
local stem = null
if mw.ustring.find(inf, " ше$") then
stem = remove_suffix(inf, suffix .. " ше")
else
stem = remove_suffix(inf, suffix)
end
if suffix == "яц" or suffix == "їц" then
if (mw.ustring.find(stem, "[аеиоуяєїю]$")) then
stem = stem .. "й"
else
stem = stem .. "ь"
end
end
return stem
end
-- TODO: rename this
function repl_dtnl_ei(str)
local new_string = str
new_string = mw.ustring.gsub(new_string, "йу", "ю")
new_string = mw.ustring.gsub(new_string, "йа", "я")
new_string = mw.ustring.gsub(new_string, "йе", "є")
new_string = mw.ustring.gsub(new_string, "йи", "ї")
new_string = mw.ustring.gsub(new_string, "ьу", "ю")
new_string = mw.ustring.gsub(new_string, "ьа", "я")
new_string = mw.ustring.gsub(new_string, "ье", "є")
new_string = mw.ustring.gsub(new_string, "ьи", "ї")
return new_string
end
function add_present_suffixes(forms, stem1, stem2, stem2suffix)
local suffix2 = stem2suffix
local stem1_dtnl = repl_dtnl_ei(stem1)
forms["pres_futr_1sg"] = stem1_dtnl .. "м"
forms["pres_futr_2sg"] = stem1_dtnl .. "ш"
forms["pres_futr_3sg"] = stem1_dtnl
forms["pres_futr_1pl"] = stem1_dtnl .. "ме"
forms["pres_futr_2pl"] = stem1_dtnl .. "це"
forms["pres_futr_3pl"] = repl_dtnl_ei(stem2 .. suffix2)
end
function add_imperative_suffixes(forms, stem)
local st = stem
local st2 = ""
local extra_i = ""
if ends_with_3_consonants(st) then
extra_i = "и"
elseif ends_with_2_consonants(st) and not mw.ustring.find(mw.ustring.sub(st, -2, -1), "ь") then
extra_i = "и"
end
if mw.ustring.sub(stem, -4, -1) == "патр" then
st2 = mw.ustring.gsub(stem, "патр", "пать")
elseif stem == "вежнь" then
st2 = "веж"
end
forms["impr_2sg"] = repl_dtnl_ei(st .. extra_i)
forms["impr_1pl"] = repl_dtnl_ei(st .. extra_i .. "ме")
forms["impr_2pl"] = repl_dtnl_ei(st .. extra_i .. "це")
if st2 ~= "" then
forms["impr_2sg2"] = repl_dtnl_ei(st2)
forms["impr_1pl2"] = repl_dtnl_ei(st2 .. "ме")
forms["impr_2pl2"] = repl_dtnl_ei(st2 .. "це")
end
end
function add_preterite_suffixes(forms, stem, stem2)
local extra_o = ""
if stem == stem2 or stem2 == "o" then
extra_o = "о"
end
local short_stem = ""
if mw.ustring.find(stem, "ну$") and ends_with_2_consonants(remove_last_char(stem)) then
short_stem = remove_suffix(stem, "ну")
else
short_stem = stem
end
if stem2 == "no_l" then
forms["past_m"] = repl_dtnl_ei(stem)
elseif mw.ustring.find(stem, "повед$") then
forms["past_m"] = repl_dtnl_ei(stem)
forms["past_m2"] = repl_dtnl_ei(stem .. extra_o .. "л")
elseif mw.ustring.find(stem, "ну$") and stem2 == "o" then
forms["past_m"] = repl_dtnl_ei(short_stem .. extra_o .. "л")
else
forms["past_m"] = repl_dtnl_ei(stem .. extra_o .. "л")
if mw.ustring.find(stem, "ну$") and stem2 == nil and ends_with_2_consonants(remove_last_char(stem)) and not mw.ustring.find(stem, "цагну$") then
forms["past_m2"] = repl_dtnl_ei(short_stem .. "ол")
end
end
forms["past_f"] = repl_dtnl_ei(short_stem .. "ла")
forms["past_n"] = repl_dtnl_ei(short_stem .. "ло")
forms["past_pl"] = repl_dtnl_ei(short_stem .. "ли")
if stem2 ~= nil and stem2 ~= "o" and stem2 ~= "n" and stem2 ~= "no_l" and not mw.ustring.find(stem, "повед$") then
forms["past_m2"] = repl_dtnl_ei(stem2)
if stem2 ~= stem and not mw.ustring.find(stem, "ну$") then
forms["past_f2"] = repl_dtnl_ei(stem2 .. "ла")
forms["past_n2"] = repl_dtnl_ei(stem2 .. "ло")
forms["past_pl2"] = repl_dtnl_ei(stem2 .. "ли")
end
end
end
function set_participles_etc(forms, stem1, stem2, pas_part_suffix, is_class_10)
forms["pres_actv_part"] = forms["pres_futr_3pl"] .. "ци"
if stem1 == nil then
forms["past_actv_part"] = ""
else
forms["past_actv_part"] = repl_dtnl_ei(stem1 .. "вши")
end
local is_class_10 = is_class_10
local pas_part_suffix1 = pas_part_suffix
local pas_part_suffix2 = ""
if pas_part_suffix1 == "тн" then
pas_part_suffix1 = "н"
pas_part_suffix2 = "т"
end
if mw.ustring.find(stem2, "ре$") and is_class_10 and not mw.ustring.find(stem2, "зре$") then
forms["pres_pasv_part"] = repl_dtnl_ei(remove_suffix(stem2, "ре") .. "ар" .. pas_part_suffix1 .. "и")
else
forms["pres_pasv_part"] = repl_dtnl_ei(stem2 .. pas_part_suffix1 .. "и")
end
if pas_part_suffix2 ~= "" then
forms["pres_pasv_part2"] = repl_dtnl_ei(stem2 .. pas_part_suffix2 .. "и")
end
if pas_part_suffix == "т" and not mw.ustring.find(stem1, "нье$") then
forms["gerund"] = repl_dtnl_ei(stem2 .. "це")
else
forms["gerund"] = repl_dtnl_ei(stem2 .. "нє")
end
end
function create_composite(form, inf, tense, mood, person, gender, subject)
subject = subject or false
gender = gender or "p"
local buc_pres = {" [[сом#Tiếng_Rusnak|сом]]", " [[ши#Tiếng_Rusnak|ши]]", "", " [[зме#Tiếng_Rusnak|зме]]", " [[сце#Tiếng_Rusnak|сце]]", ""}
local bul_gend = {m="[[бул#Tiếng_Rusnak|бул]]", f="[[була#Tiếng_Rusnak|була]]", n="[[було#Tiếng_Rusnak|було]]", p="[[були#Tiếng_Rusnak|були]]"}
local bude = {"[[будзем#Tiếng_Rusnak|будзем]]", "[[будзеш#Tiếng_Rusnak|будзеш]]", "[[будзе#Tiếng_Rusnak|будзе]]", "[[будземе#Tiếng_Rusnak|будземе]]", "[[будзеце#Tiếng_Rusnak|будзеце]]", "[[буду#Tiếng_Rusnak|буду]]"}
local bude_nl = {"[[будзем#Tiếng_Rusnak|будзем]]", "[[будзеш#Tiếng_Rusnak|будзеш]]", "[[будзе#Tiếng_Rusnak|будзе]]", "[[будземе#Tiếng_Rusnak|будземе]]", "[[будзеце#Tiếng_Rusnak|будзеце]]", "[[буду#Tiếng_Rusnak|буду]]"}
local by = {" [[бим#Tiếng_Rusnak|бим]]", " [[биш#Tiếng_Rusnak|биш]]", " [[би#Tiếng_Rusnak|би]]", " [[бизме#Tiếng_Rusnak|бизме]]", " [[бисце#Tiếng_Rusnak|бисце]]", " [[би#Tiếng_Rusnak|би]]"}
local refl = ""
if mw.ustring.find(inf, " ше$") then refl = " ше" end
local refl_space = refl .. " "
if person > 3 then gender = "p" end
local accel_form = ""
if tense == "past" and mood == "ind" and person % 3 == 0 then
if person == 3 then
accel_form = gender .. "|3|s|past|ind"
elseif person == 6 then
accel_form = "3|p|past|ind"
end
elseif gender == "p" then
accel_form = "p|l-ptcp"
else
accel_form = gender .. "|s|l-ptcp"
end
if tense ~= "fut" then form = make_link(form, accel_form) end
local result = nil
if tense == "past" then
if mood == "ind" then
result = form .. buc_pres[person] .. refl
elseif mood == "cond" then
if subject then
result = by[person] .. " " .. bul_gend[gender] .. refl_space .. form
else
result = bul_gend[gender] .. by[person] .. refl_space .. form
end
if gender ~= "p" and person ~= 3 then
result = result .. ", " .. bul_gend[gender] .. by[3] .. buc_pres[person] .. refl_space .. form
end
-- result = bul_gend[gender] .. by[3] .. buc_pres[person] .. refl_space .. form
end
elseif tense == "past perfect" and mood == "ind" then
result = bul_gend[gender] .. buc_pres[person] .. refl_space .. form
elseif tense == "present" and mood == "cond" then
if subject then
result = by[person] .. " " .. form .. refl
else
result = form .. by[person] .. refl
end
if gender ~= "p" and person ~= 3 then
result = result .. ", " .. form .. by[3] .. buc_pres[person] .. refl
end
-- result = form .. by[3] .. buc_pres[person] .. refl
elseif subject == "subject" and person == 3 then
result = "—"
elseif tense == "fut" then
if inf == "буц" and not subject then
result = make_link(bude_nl[person], (((person - 1) % 3) + 1) .. "|" .. ((person <= 3) and "s" or "p") .. "|fut|ind")
elseif subject == "subject" and gender == "p" then
result = "—"
else
result = bude[person] .. refl_space .. remove_suffix(inf, refl)
end
end
return result
end
-- Add the reflexive particle to all verb forms
function make_reflexive(forms)
for key, form in pairs(forms) do
if form ~= "" and not mw.ustring.find(form, " ше$") and not mw.ustring.find(key, "past_[mfnp]") and not mw.ustring.find(key, "pres_pasv_part") then
forms[key] = form .. " ше"
end
end
end
function make_link(link, accel_form)
local new_link = link
-- Check if the link ends with " ше"
local ending = ""
if mw.ustring.find(link, " ше$") then ending = "ше" end
if #ending > 0 then
-- Remove the ending from the link
link = remove_suffix(link, " " .. ending)
end
-- If link is not empty, valid, and not "—", create the full link
if link ~= "" and link and link ~= "—" then
new_link = m_links.full_link({lang = lang, term = link, accel = {form = accel_form}})
end
if #ending > 0 then
new_link = new_link .. " " .. ending
end
return new_link
end
function convert_to_accel(input)
-- Define mappings for person, number, tense, mood, and other specific cases
local mood_map = {
pres = "ind",
futr = "ind",
impr = "imp"
}
local tense_map = {
pres = "pres",
futr = "fut",
impr = "pres" -- For imperative, tense is always present
}
-- Handle special cases
local special_cases = {
["pres_actv_part"] = "pres|act|part",
["past_actv_part"] = "past|act|part", -- Assuming 'past' is passive
["pres_pasv_part"] = "pasv|part",
["past_m"] = "m|s|l-ptcp",
["gerund"] = "vnoun"
}
-- Check if the input matches any special case
if special_cases[input] then
return special_cases[input]
end
-- Otherwise, proceed with regular tense/mood parsing
local tense_mood, person_number = input:match("([a-z]+)_([0-9]+[sp]+)")
-- Extract person and number
local person = person_number:match("([1-3])")
local number = person_number:match("([sp])")
-- Convert tense/mood
local tense = tense_map[tense_mood]
local mood = mood_map[tense_mood]
-- Format the result as "person|number|(tense)|mood"
if tense_mood == "impr" then
return string.format("%s|%s|%s", person, number, mood)
else
return string.format("%s|%s|%s|%s", person, number, tense, mood)
end
end
function check_add_alt(forms, id, impers)
local accel_form = convert_to_accel(id)
local result = make_link(forms[id], accel_form)
local imp = forms["imperative"]
if id == "past_m" and impers then
result = make_link(forms["past_n"]) .. ", " .. make_link(forms["past_pl"])
if forms["past_n2"] then result = result .. ",<br />" .. make_link(forms["past_n2"], accel_form) end
elseif id == "past_m" then
result = make_link(forms[id], accel_form) .. ", "
.. make_link(forms["past_f"], "f|s|l-ptcp") .. ", "
.. make_link(forms["past_n"], "n|s|l-ptcp") .. ", "
.. make_link(forms["past_pl"], "p|l-ptcp")
if forms[id .. "2"] and forms["past_f2"] and forms["past_n2"] and forms["past_pl2"] then
result = result .. "<br />" .. make_link(forms[id .. "2"], accel_form) .. ", "
.. make_link(forms["past_f2"], "f|s|l-ptcp") .. ", "
.. make_link(forms["past_n2"], "n|s|l-ptcp") .. ", "
.. make_link(forms["past_pl2"], "p|l-ptcp")
end
elseif impers == "subject" then
result = "—"
else
if forms[id .. "2"] then result = result .. ",<br />" .. make_link(forms[id .. "2"], accel_form) end
end
return result
end
function check_add_alt_comp(forms, tense, mood, gender, person, subject)
local result = ""
result = create_composite(forms["past_" .. gender], forms["infinitive"], tense, mood, person, gender, subject)
if forms["past_" .. gender .. "2"] then
result = result .. ",<br />" .. create_composite(forms["past_" .. gender .. "2"], forms["infinitive"], tense, mood, person, gender)
end
return result
end
function make_table_header(title)
local header = [=[<div class="NavFrame">
<div class="NavHead">]=] .. title .. [=[</div>
<div class="NavContent">
<table style="text-align:center; width:100%" class="inflection-table">]=]
return header
end
function make_simple_row(label, form)
local row = [=[<tr style="height:2em;">
<th colspan="3" style="background:var(--wikt-palette-grey-3,#d0d0d0);color:inherit">]=] .. label .. [=[</th>
<td colspan="5"><span lang=\"rsk\">''']=] .. form .. [=['''</span></td>
</tr>]=]
return row
end
function make_mood_header(mood, colour)
local header = [=[<tr>
<th colspan="2" rowspan="2" style="background:]=] .. colour .. [=[">]=] .. mood .. [=[</th>
<th colspan="4" style="background:]=] .. colour .. [=[">''số ít''</th>
<th colspan="4" style="background:]=] .. colour .. [=[">''số nhiều''</th>
</tr>
<tr>
<th style="background:]=] .. colour .. [=[">ngôi thứ nhất</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ hai</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ ba</th>
<th style="background:]=] .. colour .. [=[">chủ ngữ</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ nhất</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ hai</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ ba</th>
<th style="background:]=] .. colour .. [=[">chủ ngữ</th>
</tr>]=]
return header
end
function make_indecl_header(colour)
local header = [=[<tr>
<th colspan="2" rowspan="3" style="background:]=] .. colour .. [=[">không nguyên mẫu</th>
<th colspan="7" style="background:]=] .. colour .. [=[">phân từ</th>
<th rowspan="2" style="background:]=] .. colour .. [=[">vị danh từ</th>
</tr>
<tr>
<th style="background:]=] .. colour .. [=[">hiện tại chủ động</th>
<th style="background:]=] .. colour .. [=[">quá khứ chủ động</th>
<th style="background:]=] .. colour .. [=[">bị động</th>
<th colspan="4" style="background:]=] .. colour .. [=[">phân từ l</th>
</tr>]=]
return header
end
function make_full_row(tense, colour, form1, form2, form3, form4, form5, form6, form7, form8)
local first_col = ""
if tense ~= "non-finite" then
first_col = [=[<th colspan="2" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>]=]
end
local row = [=[<tr>]=]
.. first_col ..
[=[<td><span lang=\"rsk\">]=] .. form1 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form2 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form3 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form4 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form5 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form6 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form7 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form8 .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
return row
end
function make_full_row5(tense, colour, form1, form2, form3, form4, form5)
local first_col = ""
if tense ~= "non-finite" then
first_col = [=[<th colspan="2" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>]=]
end
local row = [=[<tr>]=]
.. first_col ..
[=[<td><span lang=\"rsk\">]=] .. form1 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form2 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form3 .. [=[</span></td>
<td colspan="4"><span lang=\"rsk\">]=] .. form4 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form5 .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
return row
end
function add_row_separator()
if #IMPERS > 0 then
return ""
else
return "<tr style=\"height: 0px;\"><td colspan=\"8\" style=\"height: 0px; padding: 0;\"></td></tr>"
end
end
function make_full_row_comp(tense, colour, forms, mood, impers, subject)
local row = ""
if impers then
row = make_full_row(tense, colour, "—", "—", check_add_alt_comp(forms, tense, mood, "n", 3), "—", "—", "—", check_add_alt_comp(forms, tense, mood, "pl", 6), "—")
elseif subject == nil then
row = [=[<tr style="line-height: 1.2;">
<th rowspan="3" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>
<th style="background:]=] .. colour .. [=[; width:7em; padding-bottom: 0;">giống đực</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 4) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 5) .. [=[</span></td>
<td colspan="2" rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0; padding-bottom: 0;"">giống cái</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0;">giống trung</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3) .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
else
row = [=[<tr style="line-height: 1.2;">
<th rowspan="3" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>
<th style="background:]=] .. colour .. [=[; width:7em; padding-bottom: 0;">giống đực</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3, 1) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 4) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 5) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6, 1) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0; padding-bottom: 0;"">giống cái</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3, 1) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0;">giống trung</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3, 1) .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
end
return row
end
function make_table_footer()
local header = [=[</table></div></div>]=]
return header
end
-- Make the table
function make_table(forms, title, cats, params)
if cats["impers"] then
forms["pres_futr_1sg"] = ""
forms["pres_futr_2sg"] = ""
forms["pres_futr_1pl"] = ""
forms["pres_futr_2pl"] = ""
forms["past_m"] = ""
forms["past_f"] = ""
--forms["pres_actv_part"] = ""
forms["past_actv_part"] = ""
forms["impr_2sg"] = ""
forms["impr_1pl"] = ""
forms["impr_2pl"] = ""
--alternatives
forms["pres_futr_1sg2"] = nil
forms["pres_futr_2sg2"] = nil
forms["pres_futr_1pl2"] = nil
forms["pres_futr_2pl2"] = nil
forms["pres_futr_3pl2"] = nil
--forms["past_m2"] = nil
--forms["past_m3"] = nil
--forms["past_f2"] = nil
--forms["past_pl2"] = nil
forms["pres_actv_part2"] = nil
forms["past_actv_part2"] = nil
forms["impr_2sg"] = nil
forms["impr_1pl"] = nil
forms["impr_2pl"] = nil
end
-- Perfective verbs have no present forms.
if cats["perf"] then
if not params["impf_part"] then
forms["pres_actv_part"] = ""
end
forms["pres_1sg"] = ""
forms["pres_2sg"] = ""
forms["pres_3sg"] = ""
forms["pres_1pl"] = ""
forms["pres_2pl"] = ""
forms["pres_3pl"] = ""
--alternatives
forms["pres_actv_part2"] = nil
forms["pres_1sg2"] = nil
forms["pres_2sg2"] = nil
forms["pres_3sg2"] = nil
forms["pres_1pl2"] = nil
forms["pres_2pl2"] = nil
forms["pres_3pl2"] = nil
forms["futr_1sg"] = forms["pres_futr_1sg"]
forms["futr_2sg"] = forms["pres_futr_2sg"]
forms["futr_3sg"] = forms["pres_futr_3sg"]
forms["futr_1pl"] = forms["pres_futr_1pl"]
forms["futr_2pl"] = forms["pres_futr_2pl"]
forms["futr_3pl"] = forms["pres_futr_3pl"]
-- alternatives
forms["futr_1sg2"] = forms["pres_futr_1sg2"]
forms["futr_2sg2"] = forms["pres_futr_2sg2"]
forms["futr_3sg2"] = forms["pres_futr_3sg2"]
forms["futr_1pl2"] = forms["pres_futr_1pl2"]
forms["futr_2pl2"] = forms["pres_futr_2pl2"]
forms["futr_3pl2"] = forms["pres_futr_3pl2"]
else
forms["past_actv_part"] = ""
forms["pres_1sg"] = forms["pres_futr_1sg"]
forms["pres_2sg"] = forms["pres_futr_2sg"]
forms["pres_3sg"] = forms["pres_futr_3sg"]
forms["pres_1pl"] = forms["pres_futr_1pl"]
forms["pres_2pl"] = forms["pres_futr_2pl"]
forms["pres_3pl"] = forms["pres_futr_3pl"]
forms["pres_2sg"] = forms["pres_futr_2sg"]
-- alternatives
forms["pres_1sg2"] = forms["pres_futr_1sg2"]
forms["pres_2sg2"] = forms["pres_futr_2sg2"]
forms["pres_3sg2"] = forms["pres_futr_3sg2"]
forms["pres_1pl2"] = forms["pres_futr_1pl2"]
forms["pres_2pl2"] = forms["pres_futr_2pl2"]
forms["pres_3pl2"] = forms["pres_futr_3pl2"]
end
if cats["impers"] then
forms["futr_1sg"] = ""
forms["futr_2sg"] = ""
forms["futr_1pl"] = ""
forms["futr_2pl"] = ""
--alternatives
forms["futr_1sg2"] = nil
forms["futr_2sg2"] = nil
forms["futr_1pl2"] = nil
forms["futr_2pl2"] = nil
end
local inf = forms["infinitive"]
for key, form in pairs(forms) do
-- check for empty strings and nil's
if form == "" or not form then
forms[key] = "—"
end
end
local final = make_table_header(title)
final = final .. make_simple_row("nguyên mẫu", inf)
final = final .. make_mood_header("trần thuật", "var(--wikt-palette-grey-blue-3,#A0ADE3);color:inherit")
if not cats["perf"] then
final = final .. make_full_row(
"hiện tại",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
check_add_alt(forms, "pres_1sg", cats["impers"]),
check_add_alt(forms, "pres_2sg", cats["impers"]),
check_add_alt(forms, "pres_3sg", cats["impers"]),
check_add_alt(forms, "pres_3sg", "subject"),
check_add_alt(forms, "pres_1pl", cats["impers"]),
check_add_alt(forms, "pres_2pl", cats["impers"]),
check_add_alt(forms, "pres_3pl", cats["impers"]),
check_add_alt(forms, "pres_3pl", "subject")
)
end
final = final .. make_full_row_comp("quá khứ", "var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit", forms, "ind", cats["impers"], nil)
final = final .. make_full_row_comp("quá khứ hoàn thành", "var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit", forms, "ind", cats["impers"], nil)
if cats["perf"] then
final = final .. make_full_row(
"tương lai",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
check_add_alt(forms, "futr_1sg", cats["impers"]),
check_add_alt(forms, "futr_2sg", cats["impers"]),
check_add_alt(forms, "futr_3sg", cats["impers"]),
check_add_alt(forms, "futr_3sg", "subject"),
check_add_alt(forms, "futr_1pl", cats["impers"]),
check_add_alt(forms, "futr_2pl", cats["impers"]),
check_add_alt(forms, "futr_3pl", cats["impers"]),
check_add_alt(forms, "futr_3pl", "subject")
)
else
final = final .. make_full_row(
"tương lai",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
create_composite(nil, inf, "fut", nil, 1, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 2, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 3, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 3, nil, "subject"),
create_composite(nil, inf, "fut", nil, 4, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 5, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 6, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 6, nil, "subject")
)
end
final = final .. make_mood_header("điều kiện", "var(--wikt-palette-green-3,#A7D8B8);color:inherit")
final = final .. make_full_row_comp("hiện tại", "var(--wikt-palette-green-2,#B2E8A6);color:inherit", forms, "cond", cats["impers"], 1)
final = final .. make_full_row_comp("quá khứ", "var(--wikt-palette-green-2,#B2E8A6);color:inherit", forms, "cond", cats["impers"], 1)
if (forms["impr_2sg"] and forms["impr_1pl"] and forms["impr_2pl"] and not params["no_impr"] and not cats["impers"]) then
final = final .. make_mood_header("mệnh lệnh", "var(--wikt-palette-red-3,#F4A7A7);color:inherit")
final = final .. make_full_row(
"hiện tại",
"var(--wikt-palette-red-2,#F7B2B7);color:inherit",
"—",
check_add_alt(forms, "impr_2sg", cats["impers"]),
"—",
"—",
check_add_alt(forms, "impr_1pl", cats["impers"]),
check_add_alt(forms, "impr_2pl", cats["impers"]),
"—",
"—"
)
end
local pres_actv_part_final, pasv_part_final, gerund_final = "—", "—", "—"
if not params["no_pres_actv_part"] and (not cats["refl"] or params["pres_actv_part"]) and (not cats["perf"] or params["pres_actv_part"]) then
pres_actv_part_final = check_add_alt(forms, "pres_actv_part", cats["impers"])
end
if not params["no_pasv_part"] and not params["pasv_part"] and (not cats["impers"] or cats["perf"] or params["pasv_part"]) then
pasv_part_final = check_add_alt(forms, "pres_pasv_part", cats["impers"])
end
if params["impf_part"] then
pres_actv_part_final = check_add_alt(forms, "pres_actv_part", cats["impers"])
forms["past_actv_part"] = "—"
pasv_part_final = check_add_alt(forms, "pres_pasv_part", cats["impers"])
end
if not params["no_gerund"] then
gerund_final = check_add_alt(forms, "gerund", cats["impers"])
end
final = final .. make_indecl_header("var(--wikt-palette-lime-3,#F3F781);color:inherit")
final = final .. make_full_row5(
"không nguyên mẫu",
"var(--wikt-palette-lime-2,#F2F5A9);color:inherit",
pres_actv_part_final,
check_add_alt(forms, "past_actv_part", cats["impers"]),
pasv_part_final,
check_add_alt(forms, "past_m", cats["impers"]),
gerund_final
)
final = final .. make_table_footer()
return final
end
return export
s29fqlruhpjwem692kguucwiq73n77m
2512163
2512158
2026-08-07T15:25:46Z
Hiyuune
50834
2512163
Scribunto
text/plain
--[=[
This module contains functions for creating inflection tables for Pannonian Rusyn
verbs. Based on Module:sk-verb (pre-2026 version).
]=]--
local export = {}
-- Within this module, conjugations are the functions that do the actual
-- conjugating by creating the forms of a basic verb.
-- They are defined further down.
local conjugations = {}
local lang = require("Module:languages").getByCode("rsk")
local m_links = require("Module:links")
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local args = frame:getParent().args
NAMESPACE = mw.title.getCurrentTitle().nsText
if NAMESPACE == "" then
PAGENAME = mw.loadData("Module:headword/data").pagename
else
if args["pagename"] then
PAGENAME = args["pagename"]
else
error("Tên trang không được chỉ rõ.")
end
end
-- Default to impf on the template page so that there is no script error.
local verb_type = args[1] or (NAMESPACE == "Bản_mẫu" and "impf") or error("Verb type has not been specified. Please pass parameter 1")
local conj_type = args[2] or error("Conjugation type has not been specified. Please pass parameter 2")
--reflexive
local refl = false
if mw.ustring.find(verb_type, "se") then
refl = true
PAGENAME = PAGENAME .. " ше"
elseif mw.ustring.find(PAGENAME, " ше$") then
refl = true
end
--perfective
--TODO: "biasp"
local perf = false
if not mw.ustring.find(verb_type, "impf") then perf = true end
--impersonal
local impers = false
if mw.ustring.find(verb_type, "impers") then impers = true end
local cats = {
refl = refl,
perf = perf,
impers = impers
}
PERF_FULL = "perfective"
if not perf then PERF_FULL = "chưa hoàn thành" end
--impersonal (only used in a few verbs)
IMPERS = ""
if impers then IMPERS = "không ngôi; " end
local forms, title, categories
if conjugations[conj_type] then
forms, title, categories = conjugations[conj_type](args)
else
error("Không rõ loại chia động từ '" .. conj_type .. "'")
end
--cách viết khác
--forms["impr_2sg2"] = args["impr_2sg2"]
--forms["impr_1pl2"] = args["impr_1pl2"]
--forms["impr_2pl2"] = args["impr_2pl2"]
forms["pres_actv_part2"] = args["pres_actv_part2"]
forms["past_actv_part2"] = args["past_actv_part2"]
--forms["pres_pasv_part2"] = args["pres_pasv_part2"]
forms["gerund2"] = args["gerund2"]
--forms["past_m2"] = args["past_m2"]
--forms["past_f2"] = args["past_f2"]
--forms["past_n2"] = args["past_n2"]
--forms["past_pl2"] = args["past_pl2"]
forms["pres_futr_1sg2"] = args["pres_futr_1sg2"]
forms["pres_futr_2sg2"] = args["pres_futr_2sg2"]
forms["pres_futr_3sg2"] = args["pres_futr_3sg2"]
forms["pres_futr_1pl2"] = args["pres_futr_1pl2"]
forms["pres_futr_2pl2"] = args["pres_futr_2pl2"]
forms["pres_futr_3pl2"] = args["pres_futr_3pl2"]
if args["gerund"] then forms["gerund"] = args["gerund"] end
if args["pres_pasv_part"] then forms["pres_pasv_part"] = args["pres_pasv_part"] end
--parameters passed by the user
local no_impr = args["no_impr"]
local no_pres_actv_part = args["no_pres_actv_part"]
local no_pasv_part = args["no_pasv_part"]
local no_gerund = args["no_gerund"]
local pres_actv_part = args["pres_actv_part"]
local pasv_part = args["pasv_part"]
local impf_part = args["impf_part"]
local short = args["short"]
local dt = args["dt"]
local nt = args["nt"]
local params = {
no_impr = no_impr,
no_pres_actv_part = no_pres_actv_part,
no_pasv_part = no_pasv_part,
no_gerund = no_gerund,
pres_actv_part = pres_actv_part,
pasv_part = pasv_part,
impf_part = impf_part,
short = short,
dt = dt,
nt = nt
}
-- Hoàn thành/chưa hoàn thành
table.insert(categories, "Động từ " .. PERF_FULL .. " tiếng Rusnak")
-- Phản thân
if refl then
make_reflexive(forms)
table.insert(categories, "Động từ phản thân tiếng Rusnak")
end
local ret = ""
if NAMESPACE == "" then
local sort_key = PAGENAME
for key, cat in ipairs(categories) do
ret = ret .. "[[Thể loại:" .. cat .. "|" .. sort_key .. "]]"
end
end
return make_table(forms, title, cats, params) .. ret
end
--[=[
Conjugation functions
]=]--
-- pattern чит-а-м, чит-ай-у, чит-а-ц
conjugations["1"] = function(params)
local forms = {}
local categories = {"Động từ lớp 1 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 1, loại ''читац'')"
local stem = ""
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local pres_stem1 = stem .. "а"
local pres_stem2 = stem .. "ай"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern видз-и-м, видз--а, видз-и-ц
conjugations["2a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 2 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 2a, loại ''видзиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "и"
local pres_stem2 = stem
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern роб-и-м, роб-й-а, роб-и-ц
conjugations["2b"] = function(params)
local forms = {}
local categories = {"Động từ lớp 2 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 2b, loại ''робиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "и"
local pres_stem2 = stem .. "й"
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, stem)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
--TODO: figure out -nul, -ol paradigm
conjugations["3a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 3 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 3a, loại ''спаднуц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
stem = remove_reflexive_particle_and_suffix(stem, get_last_char(stem))
local last = mw.ustring.sub(stem, -2, -1)
local soft_stem = ""
if last == "сн" then
soft_stem = remove_suffix(stem, "сн")
soft_stem = soft_stem .. "шн"
elseif last == "зн" then
soft_stem = remove_suffix(stem, "зн")
soft_stem = soft_stem .. "жн"
else
soft_stem = stem
end
local pres_stem1 = soft_stem .. "є"
local pres_stem2 = soft_stem .. "ь"
local inf_stem = stem .. "у"
local inf_stem2 = remove_suffix(stem, "н")
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
if params["short"] == "1" then
add_preterite_suffixes(forms, inf_stem, inf_stem2)
elseif params["short"] == "n" then
add_preterite_suffixes(forms, inf_stem, "n")
elseif params["short"] == "o" then
add_preterite_suffixes(forms, inf_stem, "o")
else
add_preterite_suffixes(forms, inf_stem, nil)
end
return forms, title, categories
end
conjugations["3b"] = function()
local forms = {}
local categories = {"Động từ lớp 3 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 3b, loại ''гинуц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
stem = remove_reflexive_particle_and_suffix(stem, get_last_char(stem))
local pres_stem1 = stem .. "є"
local pres_stem2 = stem .. "ь"
local inf_stem = stem .. "у"
local inf_stem2 = remove_suffix(stem, "н")
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["4"] = function()
local forms = {}
local categories = {"Động từ lớp 4 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 4, loại ''куповац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "овац")
local pres_stem1 = stem .. "ує"
local pres_stem2 = stem .. "уй"
local inf_stem = stem .. "ова"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["5"] = function(params)
local forms = {}
local categories = {"Động từ lớp 5 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "loại 5, lớp ''червенїц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "еє"
local pres_stem2 = stem .. "ей"
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern нє-ше-м, нє-ш-у, нє-с-ц
conjugations["6a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 6 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 6a, loại ''нєсц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
local stem_last = get_last_char(stem) -- s or z
local pres_stem_last = ""
if stem_last == "с" then
pres_stem_last = "ш"
elseif stem_last == "з" then
pres_stem_last = "ж"
end
local pres_stem1 = remove_last_char(stem) .. pres_stem_last .. "е"
local pres_stem2 = remove_last_char(pres_stem1)
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, nil, pres_stem1, "н")
if params["short"] then
add_preterite_suffixes(forms, inf_stem, inf_stem)
else
add_preterite_suffixes(forms, inf_stem, "o")
end
return forms, title, categories
end
-- pattern ве-дзе-м, ве-д-у, ве-с-ц
conjugations["6b"] = function(params)
local forms = {}
local categories = {"Động từ lớp 6 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 6b, loại ''весц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "сц")
local dt = ""
local past_stem = ""
if get_last_char(stem) == "и" then
dt = "d"
past_stem = stem .. "ш"
elseif get_last_char(stem) == "й" then
dt = "d"
past_stem = remove_last_char(stem) .. "ш"
else
dt = params["dt"] or error("The conjugation root (\"d\" or \"t\") has not been specified. Please pass parameter 3")
end
local dt_cyrillic = ""
local dt_soft = ""
if dt == "d" then
dt_cyrillic = "д"
dt_soft = "дз"
elseif dt == "t" then
dt_cyrillic = "т"
dt_soft = "ц"
end
local pres_stem1 = stem .. dt_soft .. "е"
local pres_stem2 = stem .. dt_cyrillic
local inf_stem = stem .. dt_soft
if past_stem == "" then past_stem = pres_stem2 end
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, inf_stem)
set_participles_etc(forms, nil, pres_stem1, "н")
if params["short"] then
add_preterite_suffixes(forms, past_stem, past_stem)
else
add_preterite_suffixes(forms, past_stem, "o")
end
return forms, title, categories
end
conjugations["7a"] = function()
local forms = {}
local categories = {"Động từ lớp 7 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 7a, loại ''орац'')"
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local stem2 = nil
if mw.ustring.find(stem, "бр$") then
stem2 = remove_last_char(stem) .. "e" .. get_last_char(stem)
elseif mw.ustring.find(stem, "кл$") then
stem2 = remove_last_char(stem) .. "о" .. get_last_char(stem) .. "ь"
elseif mw.ustring.find(stem, "гн$") then
stem2 = "жень"
else
stem2 = stem
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["7b"] = function()
local forms = {}
local categories = {"Động từ lớp 7 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 7b, loại ''писац'')"
local stem = ""
local stem2 = nil
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
if get_last_char(stem) == "с" or get_last_char(stem) == "х" then
stem2 = remove_last_char(stem) .. "ш"
elseif get_last_char(stem) == "з" then
stem2 = remove_last_char(stem) .. "ж"
elseif get_last_char(stem) == "л" then
if get_last_char(remove_last_char(stem)) == "с" then
stem2 = remove_last_char(remove_last_char(stem)) .. "шль"
elseif get_last_char(remove_last_char(stem)) == "з" then
stem2 = remove_last_char(remove_last_char(stem)) .. "жль"
end
elseif get_last_char(stem) == "к" then
stem2 = remove_last_char(stem) .. "ч"
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["8"] = function()
local forms = {}
local categories = {"Động từ lớp 8 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 8, loại ''клєчац'')"
local stem = ""
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local stem2 = ""
if mw.ustring.find(stem, "сп$") then
if mw.ustring.len(stem) > 2 then
stem2 = mw.ustring.sub(stem, 1, -3) .. "шп"
pres_stem2_2 = mw.ustring.sub(stem, 1, -3) .. "шпй"
else
stem2 = "шп"
pres_stem2_2 = "шпй"
end
else
stem2 = stem
pres_stem2_2 = stem
end
local pres_stem1 = stem2 .. "и"
local pres_stem2 = pres_stem2_2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
if mw.ustring.find(stem, "сп$") then
add_imperative_suffixes(forms, pres_stem1)
else
add_imperative_suffixes(forms, pres_stem2)
end
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["9"] = function()
local forms = {}
local categories = {"Động từ lớp 9 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 9, loại ''жиц'')"
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
local pres_stem1 = stem .. "є"
local pres_stem2 = stem .. "й"
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["10"] = function(params)
local forms = {}
local categories = {"Động từ lớp 10 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 10, loại ''шмец'')"
if mw.ustring.find(PAGENAME, "ец$") or mw.ustring.find(PAGENAME, "ец ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ец")
elseif mw.ustring.find(PAGENAME, "єц$") or mw.ustring.find(PAGENAME, "єц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "єц")
end
local stem2 = nil
local past_stem = ""
if mw.ustring.find(stem, "мль$") then
stem2 = "мель"
past_stem = stem .. "е"
elseif mw.ustring.find(stem, "р$") and not mw.ustring.find(stem, "зр$") then
-- зрец, узрец, дозрец do not give -зар
stem2 = stem
past_stem = remove_last_char(stem) .. "а" .. get_last_char(stem)
else
stem2 = stem
past_stem = stem .. "е"
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2 .. "и")
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т", true)
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн", true)
else
set_participles_etc(forms, inf_stem, inf_stem, "н", true)
end
if mw.ustring.find(stem, "ар$") then
add_preterite_suffixes(forms, past_stem, "no_l")
else
add_preterite_suffixes(forms, past_stem, nil)
end
return forms, title, categories
end
conjugations["11"] = function()
local forms = {}
local categories = {"Động từ lớp 11 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 11, loại ''кляц'')"
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local pres_stem1 = stem .. "еє"
local pres_stem2 = stem .. "ей"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["12"] = function()
local forms = {}
local categories = {"Động từ lớp 12 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 12, loại ''жац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
local stem2 = stem
local stem_last = get_last_char(stem)
if stem_last == "ц" then
stem2 = remove_last_char(stem) .. "т"
elseif mw.ustring.find(stem, "ст$") then
stem2 = stem .. "а"
elseif mw.ustring.find(stem, "вж$") then
stem2 = "веж"
end
local pres_stem1 = stem2 .. "нє"
local pres_stem2 = stem2 .. "нь"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["13"] = function()
local forms = {}
local categories = {"Động từ lớp 13 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 13, loại ''бац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
local stem2 = stem .. "ой"
local pres_stem1 = stem2 .. "и"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["14"] = function(params)
local forms = {}
local categories = {"Động từ lớp 14 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 14, loại ''печиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "мочи$") then
stem = remove_suffix(PAGENAME, "чи") .. "ж"
else
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
end
local stem2 = ""
if get_last_char(stem) == "ч" then
stem2 = remove_last_char(stem) .. "к"
elseif get_last_char(stem) == "ж" then
stem2 = remove_last_char(stem) .. "г"
end
local pres_stem1 = stem .. "е"
local pres_stem2 = stem
local inf_stem = stem2
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, pres_stem1, "н")
if mw.ustring.find(PAGENAME, "мочи$") then
if mw.ustring.find(PAGENAME, "$мочи") then
params["no_impr"] = 1
end
forms["pres_actv_part"] = ""
forms["past_actv_part"] = ""
forms["gerund"] = ""
forms["pres_pasv_part"] = ""
end
if params["short"] or mw.ustring.find(PAGENAME, "мочи$") then
add_preterite_suffixes(forms, inf_stem, inf_stem)
else
add_preterite_suffixes(forms, inf_stem, "o")
end
return forms, title, categories
end
conjugations["irreg-буц"] = function()
-- irregular, only for verbs derived from буц derivatives
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local prefix = remove_suffix(remove_reflexive_particle_and_suffix(PAGENAME, ""), "буц")
forms["infinitive"] = PAGENAME
add_imperative_suffixes(forms, prefix .. "будз")
if prefix == "" then
forms["pres_futr_1sg"] = "[[сом]]"
forms["pres_futr_2sg"] = "[[ши]]"
forms["pres_futr_3sg"] = "[[є]]"
forms["pres_futr_1pl"] = "[[зме]]"
forms["pres_futr_2pl"] = "[[сце]]"
forms["pres_futr_3pl"] = "[[су]]"
forms["pres_actv_part"] = ""
forms["gerund"] = ""
forms["pres_pasv_part"] = ""
else
local pres_stem1 = prefix .. "будзе"
local pres_stem2 = prefix .. "буд"
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
set_participles_etc(forms, prefix .. "бу", prefix .. "бу", "т")
end
add_preterite_suffixes(forms, prefix .. "бу", nil)
return forms, title, categories
end
conjugations["irreg-єсц"] = function()
-- irregular, only for verbs derived from єсц and повесц
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local prefix = ""
if mw.ustring.find(PAGENAME, "есц$") then
prefix = remove_suffix(PAGENAME, "есц")
else
prefix = remove_suffix(PAGENAME, "єсц") .. "й"
end
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, prefix .. "е", prefix .. "едз", "а")
add_imperative_suffixes(forms, prefix .. "едз")
set_participles_etc(forms, nil, prefix .. "едзе", "н")
forms["past_actv_part"] = ""
if mw.ustring.find(prefix, "пов$") then
add_preterite_suffixes(forms, prefix .. "ед", prefix .. "ед")
else
add_preterite_suffixes(forms, prefix .. "ед", "o")
end
return forms, title, categories
end
conjugations["irreg-прияц"] = function()
-- irregular, only for verbs derived from прияц
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local stem = remove_suffix(PAGENAME, "ц")
local stem2 = remove_suffix(PAGENAME, "яц")
local pres_stem1 = stem2 .. "ме"
local pres_stem2 = stem2 .. "м"
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2 .. "и")
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
--[=[
Partial conjugation functions
]=]--
function get_last_char(str)
local last = mw.ustring.sub(str, -1, -1)
return last
end
function remove_last_char(str)
local stem = mw.ustring.sub(str, 1, -2)
return stem
end
function ends_with_2_consonants(str)
local cond = false
if mw.ustring.find(str, "[бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь]$") and not mw.ustring.find(str, "д[зж]$") then
cond = true
end
return cond
end
function ends_with_3_consonants(str)
local cond = false
if mw.ustring.find(str, "[бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь]$") and not mw.ustring.find(str, "д[зж]$") then
cond = true
end
return cond
end
function remove_suffix(form, suffix)
local base = form
if mw.ustring.find(base, suffix .. "$") then
local length = mw.ustring.len(suffix)
base = mw.ustring.sub(base, 1, -length-1)
end
return base
end
function remove_reflexive_particle_and_suffix(inf, suffix)
local stem = null
if mw.ustring.find(inf, " ше$") then
stem = remove_suffix(inf, suffix .. " ше")
else
stem = remove_suffix(inf, suffix)
end
if suffix == "яц" or suffix == "їц" then
if (mw.ustring.find(stem, "[аеиоуяєїю]$")) then
stem = stem .. "й"
else
stem = stem .. "ь"
end
end
return stem
end
-- TODO: rename this
function repl_dtnl_ei(str)
local new_string = str
new_string = mw.ustring.gsub(new_string, "йу", "ю")
new_string = mw.ustring.gsub(new_string, "йа", "я")
new_string = mw.ustring.gsub(new_string, "йе", "є")
new_string = mw.ustring.gsub(new_string, "йи", "ї")
new_string = mw.ustring.gsub(new_string, "ьу", "ю")
new_string = mw.ustring.gsub(new_string, "ьа", "я")
new_string = mw.ustring.gsub(new_string, "ье", "є")
new_string = mw.ustring.gsub(new_string, "ьи", "ї")
return new_string
end
function add_present_suffixes(forms, stem1, stem2, stem2suffix)
local suffix2 = stem2suffix
local stem1_dtnl = repl_dtnl_ei(stem1)
forms["pres_futr_1sg"] = stem1_dtnl .. "м"
forms["pres_futr_2sg"] = stem1_dtnl .. "ш"
forms["pres_futr_3sg"] = stem1_dtnl
forms["pres_futr_1pl"] = stem1_dtnl .. "ме"
forms["pres_futr_2pl"] = stem1_dtnl .. "це"
forms["pres_futr_3pl"] = repl_dtnl_ei(stem2 .. suffix2)
end
function add_imperative_suffixes(forms, stem)
local st = stem
local st2 = ""
local extra_i = ""
if ends_with_3_consonants(st) then
extra_i = "и"
elseif ends_with_2_consonants(st) and not mw.ustring.find(mw.ustring.sub(st, -2, -1), "ь") then
extra_i = "и"
end
if mw.ustring.sub(stem, -4, -1) == "патр" then
st2 = mw.ustring.gsub(stem, "патр", "пать")
elseif stem == "вежнь" then
st2 = "веж"
end
forms["impr_2sg"] = repl_dtnl_ei(st .. extra_i)
forms["impr_1pl"] = repl_dtnl_ei(st .. extra_i .. "ме")
forms["impr_2pl"] = repl_dtnl_ei(st .. extra_i .. "це")
if st2 ~= "" then
forms["impr_2sg2"] = repl_dtnl_ei(st2)
forms["impr_1pl2"] = repl_dtnl_ei(st2 .. "ме")
forms["impr_2pl2"] = repl_dtnl_ei(st2 .. "це")
end
end
function add_preterite_suffixes(forms, stem, stem2)
local extra_o = ""
if stem == stem2 or stem2 == "o" then
extra_o = "о"
end
local short_stem = ""
if mw.ustring.find(stem, "ну$") and ends_with_2_consonants(remove_last_char(stem)) then
short_stem = remove_suffix(stem, "ну")
else
short_stem = stem
end
if stem2 == "no_l" then
forms["past_m"] = repl_dtnl_ei(stem)
elseif mw.ustring.find(stem, "повед$") then
forms["past_m"] = repl_dtnl_ei(stem)
forms["past_m2"] = repl_dtnl_ei(stem .. extra_o .. "л")
elseif mw.ustring.find(stem, "ну$") and stem2 == "o" then
forms["past_m"] = repl_dtnl_ei(short_stem .. extra_o .. "л")
else
forms["past_m"] = repl_dtnl_ei(stem .. extra_o .. "л")
if mw.ustring.find(stem, "ну$") and stem2 == nil and ends_with_2_consonants(remove_last_char(stem)) and not mw.ustring.find(stem, "цагну$") then
forms["past_m2"] = repl_dtnl_ei(short_stem .. "ол")
end
end
forms["past_f"] = repl_dtnl_ei(short_stem .. "ла")
forms["past_n"] = repl_dtnl_ei(short_stem .. "ло")
forms["past_pl"] = repl_dtnl_ei(short_stem .. "ли")
if stem2 ~= nil and stem2 ~= "o" and stem2 ~= "n" and stem2 ~= "no_l" and not mw.ustring.find(stem, "повед$") then
forms["past_m2"] = repl_dtnl_ei(stem2)
if stem2 ~= stem and not mw.ustring.find(stem, "ну$") then
forms["past_f2"] = repl_dtnl_ei(stem2 .. "ла")
forms["past_n2"] = repl_dtnl_ei(stem2 .. "ло")
forms["past_pl2"] = repl_dtnl_ei(stem2 .. "ли")
end
end
end
function set_participles_etc(forms, stem1, stem2, pas_part_suffix, is_class_10)
forms["pres_actv_part"] = forms["pres_futr_3pl"] .. "ци"
if stem1 == nil then
forms["past_actv_part"] = ""
else
forms["past_actv_part"] = repl_dtnl_ei(stem1 .. "вши")
end
local is_class_10 = is_class_10
local pas_part_suffix1 = pas_part_suffix
local pas_part_suffix2 = ""
if pas_part_suffix1 == "тн" then
pas_part_suffix1 = "н"
pas_part_suffix2 = "т"
end
if mw.ustring.find(stem2, "ре$") and is_class_10 and not mw.ustring.find(stem2, "зре$") then
forms["pres_pasv_part"] = repl_dtnl_ei(remove_suffix(stem2, "ре") .. "ар" .. pas_part_suffix1 .. "и")
else
forms["pres_pasv_part"] = repl_dtnl_ei(stem2 .. pas_part_suffix1 .. "и")
end
if pas_part_suffix2 ~= "" then
forms["pres_pasv_part2"] = repl_dtnl_ei(stem2 .. pas_part_suffix2 .. "и")
end
if pas_part_suffix == "т" and not mw.ustring.find(stem1, "нье$") then
forms["gerund"] = repl_dtnl_ei(stem2 .. "це")
else
forms["gerund"] = repl_dtnl_ei(stem2 .. "нє")
end
end
function create_composite(form, inf, tense, mood, person, gender, subject)
subject = subject or false
gender = gender or "p"
local buc_pres = {" [[сом#Tiếng_Rusnak|сом]]", " [[ши#Tiếng_Rusnak|ши]]", "", " [[зме#Tiếng_Rusnak|зме]]", " [[сце#Tiếng_Rusnak|сце]]", ""}
local bul_gend = {m="[[бул#Tiếng_Rusnak|бул]]", f="[[була#Tiếng_Rusnak|була]]", n="[[було#Tiếng_Rusnak|було]]", p="[[були#Tiếng_Rusnak|були]]"}
local bude = {"[[будзем#Tiếng_Rusnak|будзем]]", "[[будзеш#Tiếng_Rusnak|будзеш]]", "[[будзе#Tiếng_Rusnak|будзе]]", "[[будземе#Tiếng_Rusnak|будземе]]", "[[будзеце#Tiếng_Rusnak|будзеце]]", "[[буду#Tiếng_Rusnak|буду]]"}
local bude_nl = {"[[будзем#Tiếng_Rusnak|будзем]]", "[[будзеш#Tiếng_Rusnak|будзеш]]", "[[будзе#Tiếng_Rusnak|будзе]]", "[[будземе#Tiếng_Rusnak|будземе]]", "[[будзеце#Tiếng_Rusnak|будзеце]]", "[[буду#Tiếng_Rusnak|буду]]"}
local by = {" [[бим#Tiếng_Rusnak|бим]]", " [[биш#Tiếng_Rusnak|биш]]", " [[би#Tiếng_Rusnak|би]]", " [[бизме#Tiếng_Rusnak|бизме]]", " [[бисце#Tiếng_Rusnak|бисце]]", " [[би#Tiếng_Rusnak|би]]"}
local refl = ""
if mw.ustring.find(inf, " ше$") then refl = " ше" end
local refl_space = refl .. " "
if person > 3 then gender = "p" end
local accel_form = ""
if tense == "quá khứ" and mood == "ind" and person % 3 == 0 then
if person == 3 then
accel_form = gender .. "|3|s|past|ind"
elseif person == 6 then
accel_form = "3|p|past|ind"
end
elseif gender == "p" then
accel_form = "p|l-ptcp"
else
accel_form = gender .. "|s|l-ptcp"
end
if tense ~= "fut" then form = make_link(form, accel_form) end
local result = nil
if tense == "quá khứ" then
if mood == "ind" then
result = form .. buc_pres[person] .. refl
elseif mood == "cond" then
if subject then
result = by[person] .. " " .. bul_gend[gender] .. refl_space .. form
else
result = bul_gend[gender] .. by[person] .. refl_space .. form
end
if gender ~= "p" and person ~= 3 then
result = result .. ", " .. bul_gend[gender] .. by[3] .. buc_pres[person] .. refl_space .. form
end
-- result = bul_gend[gender] .. by[3] .. buc_pres[person] .. refl_space .. form
end
elseif tense == "quá khứ hoàn thành" and mood == "ind" then
result = bul_gend[gender] .. buc_pres[person] .. refl_space .. form
elseif tense == "hiện tại" and mood == "cond" then
if subject then
result = by[person] .. " " .. form .. refl
else
result = form .. by[person] .. refl
end
if gender ~= "p" and person ~= 3 then
result = result .. ", " .. form .. by[3] .. buc_pres[person] .. refl
end
-- result = form .. by[3] .. buc_pres[person] .. refl
elseif subject == "subject" and person == 3 then
result = "—"
elseif tense == "fut" then
if inf == "буц" and not subject then
result = make_link(bude_nl[person], (((person - 1) % 3) + 1) .. "|" .. ((person <= 3) and "s" or "p") .. "|fut|ind")
elseif subject == "subject" and gender == "p" then
result = "—"
else
result = bude[person] .. refl_space .. remove_suffix(inf, refl)
end
end
return result
end
-- Add the reflexive particle to all verb forms
function make_reflexive(forms)
for key, form in pairs(forms) do
if form ~= "" and not mw.ustring.find(form, " ше$") and not mw.ustring.find(key, "past_[mfnp]") and not mw.ustring.find(key, "pres_pasv_part") then
forms[key] = form .. " ше"
end
end
end
function make_link(link, accel_form)
local new_link = link
-- Check if the link ends with " ше"
local ending = ""
if mw.ustring.find(link, " ше$") then ending = "ше" end
if #ending > 0 then
-- Remove the ending from the link
link = remove_suffix(link, " " .. ending)
end
-- If link is not empty, valid, and not "—", create the full link
if link ~= "" and link and link ~= "—" then
new_link = m_links.full_link({lang = lang, term = link, accel = {form = accel_form}})
end
if #ending > 0 then
new_link = new_link .. " " .. ending
end
return new_link
end
function convert_to_accel(input)
-- Define mappings for person, number, tense, mood, and other specific cases
local mood_map = {
pres = "ind",
futr = "ind",
impr = "imp"
}
local tense_map = {
pres = "pres",
futr = "fut",
impr = "pres" -- For imperative, tense is always present
}
-- Handle special cases
local special_cases = {
["pres_actv_part"] = "pres|act|part",
["past_actv_part"] = "past|act|part", -- Assuming 'past' is passive
["pres_pasv_part"] = "pasv|part",
["past_m"] = "m|s|l-ptcp",
["gerund"] = "vnoun"
}
-- Check if the input matches any special case
if special_cases[input] then
return special_cases[input]
end
-- Otherwise, proceed with regular tense/mood parsing
local tense_mood, person_number = input:match("([a-z]+)_([0-9]+[sp]+)")
-- Extract person and number
local person = person_number:match("([1-3])")
local number = person_number:match("([sp])")
-- Convert tense/mood
local tense = tense_map[tense_mood]
local mood = mood_map[tense_mood]
-- Format the result as "person|number|(tense)|mood"
if tense_mood == "impr" then
return string.format("%s|%s|%s", person, number, mood)
else
return string.format("%s|%s|%s|%s", person, number, tense, mood)
end
end
function check_add_alt(forms, id, impers)
local accel_form = convert_to_accel(id)
local result = make_link(forms[id], accel_form)
local imp = forms["imperative"]
if id == "past_m" and impers then
result = make_link(forms["past_n"]) .. ", " .. make_link(forms["past_pl"])
if forms["past_n2"] then result = result .. ",<br />" .. make_link(forms["past_n2"], accel_form) end
elseif id == "past_m" then
result = make_link(forms[id], accel_form) .. ", "
.. make_link(forms["past_f"], "f|s|l-ptcp") .. ", "
.. make_link(forms["past_n"], "n|s|l-ptcp") .. ", "
.. make_link(forms["past_pl"], "p|l-ptcp")
if forms[id .. "2"] and forms["past_f2"] and forms["past_n2"] and forms["past_pl2"] then
result = result .. "<br />" .. make_link(forms[id .. "2"], accel_form) .. ", "
.. make_link(forms["past_f2"], "f|s|l-ptcp") .. ", "
.. make_link(forms["past_n2"], "n|s|l-ptcp") .. ", "
.. make_link(forms["past_pl2"], "p|l-ptcp")
end
elseif impers == "subject" then
result = "—"
else
if forms[id .. "2"] then result = result .. ",<br />" .. make_link(forms[id .. "2"], accel_form) end
end
return result
end
function check_add_alt_comp(forms, tense, mood, gender, person, subject)
local result = ""
result = create_composite(forms["past_" .. gender], forms["infinitive"], tense, mood, person, gender, subject)
if forms["past_" .. gender .. "2"] then
result = result .. ",<br />" .. create_composite(forms["past_" .. gender .. "2"], forms["infinitive"], tense, mood, person, gender)
end
return result
end
function make_table_header(title)
local header = [=[<div class="NavFrame">
<div class="NavHead">]=] .. title .. [=[</div>
<div class="NavContent">
<table style="text-align:center; width:100%" class="inflection-table">]=]
return header
end
function make_simple_row(label, form)
local row = [=[<tr style="height:2em;">
<th colspan="3" style="background:var(--wikt-palette-grey-3,#d0d0d0);color:inherit">]=] .. label .. [=[</th>
<td colspan="5"><span lang=\"rsk\">''']=] .. form .. [=['''</span></td>
</tr>]=]
return row
end
function make_mood_header(mood, colour)
local header = [=[<tr>
<th colspan="2" rowspan="2" style="background:]=] .. colour .. [=[">]=] .. mood .. [=[</th>
<th colspan="4" style="background:]=] .. colour .. [=[">''số ít''</th>
<th colspan="4" style="background:]=] .. colour .. [=[">''số nhiều''</th>
</tr>
<tr>
<th style="background:]=] .. colour .. [=[">ngôi thứ nhất</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ hai</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ ba</th>
<th style="background:]=] .. colour .. [=[">chủ ngữ</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ nhất</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ hai</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ ba</th>
<th style="background:]=] .. colour .. [=[">chủ ngữ</th>
</tr>]=]
return header
end
function make_indecl_header(colour)
local header = [=[<tr>
<th colspan="2" rowspan="3" style="background:]=] .. colour .. [=[">không nguyên mẫu</th>
<th colspan="7" style="background:]=] .. colour .. [=[">phân từ</th>
<th rowspan="2" style="background:]=] .. colour .. [=[">vị danh từ</th>
</tr>
<tr>
<th style="background:]=] .. colour .. [=[">hiện tại chủ động</th>
<th style="background:]=] .. colour .. [=[">quá khứ chủ động</th>
<th style="background:]=] .. colour .. [=[">bị động</th>
<th colspan="4" style="background:]=] .. colour .. [=[">phân từ l</th>
</tr>]=]
return header
end
function make_full_row(tense, colour, form1, form2, form3, form4, form5, form6, form7, form8)
local first_col = ""
if tense ~= "non-finite" then
first_col = [=[<th colspan="2" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>]=]
end
local row = [=[<tr>]=]
.. first_col ..
[=[<td><span lang=\"rsk\">]=] .. form1 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form2 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form3 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form4 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form5 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form6 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form7 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form8 .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
return row
end
function make_full_row5(tense, colour, form1, form2, form3, form4, form5)
local first_col = ""
if tense ~= "non-finite" then
first_col = [=[<th colspan="2" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>]=]
end
local row = [=[<tr>]=]
.. first_col ..
[=[<td><span lang=\"rsk\">]=] .. form1 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form2 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form3 .. [=[</span></td>
<td colspan="4"><span lang=\"rsk\">]=] .. form4 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form5 .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
return row
end
function add_row_separator()
if #IMPERS > 0 then
return ""
else
return "<tr style=\"height: 0px;\"><td colspan=\"8\" style=\"height: 0px; padding: 0;\"></td></tr>"
end
end
function make_full_row_comp(tense, colour, forms, mood, impers, subject)
local row = ""
if impers then
row = make_full_row(tense, colour, "—", "—", check_add_alt_comp(forms, tense, mood, "n", 3), "—", "—", "—", check_add_alt_comp(forms, tense, mood, "pl", 6), "—")
elseif subject == nil then
row = [=[<tr style="line-height: 1.2;">
<th rowspan="3" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>
<th style="background:]=] .. colour .. [=[; width:7em; padding-bottom: 0;">giống đực</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 4) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 5) .. [=[</span></td>
<td colspan="2" rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0; padding-bottom: 0;"">giống cái</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0;">giống trung</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3) .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
else
row = [=[<tr style="line-height: 1.2;">
<th rowspan="3" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>
<th style="background:]=] .. colour .. [=[; width:7em; padding-bottom: 0;">giống đực</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3, 1) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 4) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 5) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6, 1) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0; padding-bottom: 0;"">giống cái</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3, 1) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0;">giống trung</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3, 1) .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
end
return row
end
function make_table_footer()
local header = [=[</table></div></div>]=]
return header
end
-- Make the table
function make_table(forms, title, cats, params)
if cats["impers"] then
forms["pres_futr_1sg"] = ""
forms["pres_futr_2sg"] = ""
forms["pres_futr_1pl"] = ""
forms["pres_futr_2pl"] = ""
forms["past_m"] = ""
forms["past_f"] = ""
--forms["pres_actv_part"] = ""
forms["past_actv_part"] = ""
forms["impr_2sg"] = ""
forms["impr_1pl"] = ""
forms["impr_2pl"] = ""
--alternatives
forms["pres_futr_1sg2"] = nil
forms["pres_futr_2sg2"] = nil
forms["pres_futr_1pl2"] = nil
forms["pres_futr_2pl2"] = nil
forms["pres_futr_3pl2"] = nil
--forms["past_m2"] = nil
--forms["past_m3"] = nil
--forms["past_f2"] = nil
--forms["past_pl2"] = nil
forms["pres_actv_part2"] = nil
forms["past_actv_part2"] = nil
forms["impr_2sg"] = nil
forms["impr_1pl"] = nil
forms["impr_2pl"] = nil
end
-- Perfective verbs have no present forms.
if cats["perf"] then
if not params["impf_part"] then
forms["pres_actv_part"] = ""
end
forms["pres_1sg"] = ""
forms["pres_2sg"] = ""
forms["pres_3sg"] = ""
forms["pres_1pl"] = ""
forms["pres_2pl"] = ""
forms["pres_3pl"] = ""
--alternatives
forms["pres_actv_part2"] = nil
forms["pres_1sg2"] = nil
forms["pres_2sg2"] = nil
forms["pres_3sg2"] = nil
forms["pres_1pl2"] = nil
forms["pres_2pl2"] = nil
forms["pres_3pl2"] = nil
forms["futr_1sg"] = forms["pres_futr_1sg"]
forms["futr_2sg"] = forms["pres_futr_2sg"]
forms["futr_3sg"] = forms["pres_futr_3sg"]
forms["futr_1pl"] = forms["pres_futr_1pl"]
forms["futr_2pl"] = forms["pres_futr_2pl"]
forms["futr_3pl"] = forms["pres_futr_3pl"]
-- alternatives
forms["futr_1sg2"] = forms["pres_futr_1sg2"]
forms["futr_2sg2"] = forms["pres_futr_2sg2"]
forms["futr_3sg2"] = forms["pres_futr_3sg2"]
forms["futr_1pl2"] = forms["pres_futr_1pl2"]
forms["futr_2pl2"] = forms["pres_futr_2pl2"]
forms["futr_3pl2"] = forms["pres_futr_3pl2"]
else
forms["past_actv_part"] = ""
forms["pres_1sg"] = forms["pres_futr_1sg"]
forms["pres_2sg"] = forms["pres_futr_2sg"]
forms["pres_3sg"] = forms["pres_futr_3sg"]
forms["pres_1pl"] = forms["pres_futr_1pl"]
forms["pres_2pl"] = forms["pres_futr_2pl"]
forms["pres_3pl"] = forms["pres_futr_3pl"]
forms["pres_2sg"] = forms["pres_futr_2sg"]
-- alternatives
forms["pres_1sg2"] = forms["pres_futr_1sg2"]
forms["pres_2sg2"] = forms["pres_futr_2sg2"]
forms["pres_3sg2"] = forms["pres_futr_3sg2"]
forms["pres_1pl2"] = forms["pres_futr_1pl2"]
forms["pres_2pl2"] = forms["pres_futr_2pl2"]
forms["pres_3pl2"] = forms["pres_futr_3pl2"]
end
if cats["impers"] then
forms["futr_1sg"] = ""
forms["futr_2sg"] = ""
forms["futr_1pl"] = ""
forms["futr_2pl"] = ""
--alternatives
forms["futr_1sg2"] = nil
forms["futr_2sg2"] = nil
forms["futr_1pl2"] = nil
forms["futr_2pl2"] = nil
end
local inf = forms["infinitive"]
for key, form in pairs(forms) do
-- check for empty strings and nil's
if form == "" or not form then
forms[key] = "—"
end
end
local final = make_table_header(title)
final = final .. make_simple_row("nguyên mẫu", inf)
final = final .. make_mood_header("nguyên mẫu", "var(--wikt-palette-grey-blue-3,#A0ADE3);color:inherit")
if not cats["perf"] then
final = final .. make_full_row(
"hiện tại",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
check_add_alt(forms, "pres_1sg", cats["impers"]),
check_add_alt(forms, "pres_2sg", cats["impers"]),
check_add_alt(forms, "pres_3sg", cats["impers"]),
check_add_alt(forms, "pres_3sg", "subject"),
check_add_alt(forms, "pres_1pl", cats["impers"]),
check_add_alt(forms, "pres_2pl", cats["impers"]),
check_add_alt(forms, "pres_3pl", cats["impers"]),
check_add_alt(forms, "pres_3pl", "subject")
)
end
final = final .. make_full_row_comp("quá khứ", "var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit", forms, "ind", cats["impers"], nil)
final = final .. make_full_row_comp("quá khứ hoàn thành", "var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit", forms, "ind", cats["impers"], nil)
if cats["perf"] then
final = final .. make_full_row(
"future",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
check_add_alt(forms, "futr_1sg", cats["impers"]),
check_add_alt(forms, "futr_2sg", cats["impers"]),
check_add_alt(forms, "futr_3sg", cats["impers"]),
check_add_alt(forms, "futr_3sg", "subject"),
check_add_alt(forms, "futr_1pl", cats["impers"]),
check_add_alt(forms, "futr_2pl", cats["impers"]),
check_add_alt(forms, "futr_3pl", cats["impers"]),
check_add_alt(forms, "futr_3pl", "subject")
)
else
final = final .. make_full_row(
"tương lai",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
create_composite(nil, inf, "fut", nil, 1, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 2, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 3, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 3, nil, "subject"),
create_composite(nil, inf, "fut", nil, 4, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 5, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 6, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 6, nil, "subject")
)
end
final = final .. make_mood_header("điều kiện", "var(--wikt-palette-green-3,#A7D8B8);color:inherit")
final = final .. make_full_row_comp("hiện tại", "var(--wikt-palette-green-2,#B2E8A6);color:inherit", forms, "cond", cats["impers"], 1)
final = final .. make_full_row_comp("quá khứ", "var(--wikt-palette-green-2,#B2E8A6);color:inherit", forms, "cond", cats["impers"], 1)
if (forms["impr_2sg"] and forms["impr_1pl"] and forms["impr_2pl"] and not params["no_impr"] and not cats["impers"]) then
final = final .. make_mood_header("mệnh lệnh", "var(--wikt-palette-red-3,#F4A7A7);color:inherit")
final = final .. make_full_row(
"hiện tại",
"var(--wikt-palette-red-2,#F7B2B7);color:inherit",
"—",
check_add_alt(forms, "impr_2sg", cats["impers"]),
"—",
"—",
check_add_alt(forms, "impr_1pl", cats["impers"]),
check_add_alt(forms, "impr_2pl", cats["impers"]),
"—",
"—"
)
end
local pres_actv_part_final, pasv_part_final, gerund_final = "—", "—", "—"
if not params["no_pres_actv_part"] and (not cats["refl"] or params["pres_actv_part"]) and (not cats["perf"] or params["pres_actv_part"]) then
pres_actv_part_final = check_add_alt(forms, "pres_actv_part", cats["impers"])
end
if not params["no_pasv_part"] and not params["pasv_part"] and (not cats["impers"] or cats["perf"] or params["pasv_part"]) then
pasv_part_final = check_add_alt(forms, "pres_pasv_part", cats["impers"])
end
if params["impf_part"] then
pres_actv_part_final = check_add_alt(forms, "pres_actv_part", cats["impers"])
forms["past_actv_part"] = "—"
pasv_part_final = check_add_alt(forms, "pres_pasv_part", cats["impers"])
end
if not params["no_gerund"] then
gerund_final = check_add_alt(forms, "gerund", cats["impers"])
end
final = final .. make_indecl_header("var(--wikt-palette-lime-3,#F3F781);color:inherit")
final = final .. make_full_row5(
"non-finite", -- giữ nguyên
"var(--wikt-palette-lime-2,#F2F5A9);color:inherit",
pres_actv_part_final,
check_add_alt(forms, "past_actv_part", cats["impers"]),
pasv_part_final,
check_add_alt(forms, "past_m", cats["impers"]),
gerund_final
)
final = final .. make_table_footer()
return final
end
return export
sw8vgfuf6honbvl6u2ltqjoag2f57g6
2512164
2512163
2026-08-07T15:28:29Z
Hiyuune
50834
2512164
Scribunto
text/plain
--[=[
This module contains functions for creating inflection tables for Pannonian Rusyn
verbs. Based on Module:sk-verb (pre-2026 version).
]=]--
local export = {}
-- Within this module, conjugations are the functions that do the actual
-- conjugating by creating the forms of a basic verb.
-- They are defined further down.
local conjugations = {}
local lang = require("Module:languages").getByCode("rsk")
local m_links = require("Module:links")
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local args = frame:getParent().args
NAMESPACE = mw.title.getCurrentTitle().nsText
if NAMESPACE == "" then
PAGENAME = mw.loadData("Module:headword/data").pagename
else
if args["pagename"] then
PAGENAME = args["pagename"]
else
error("Tên trang không được chỉ rõ.")
end
end
-- Default to impf on the template page so that there is no script error.
local verb_type = args[1] or (NAMESPACE == "Bản_mẫu" and "impf") or error("Verb type has not been specified. Please pass parameter 1")
local conj_type = args[2] or error("Conjugation type has not been specified. Please pass parameter 2")
--reflexive
local refl = false
if mw.ustring.find(verb_type, "se") then
refl = true
PAGENAME = PAGENAME .. " ше"
elseif mw.ustring.find(PAGENAME, " ше$") then
refl = true
end
--perfective
--TODO: "biasp"
local perf = false
if not mw.ustring.find(verb_type, "impf") then perf = true end
--impersonal
local impers = false
if mw.ustring.find(verb_type, "impers") then impers = true end
local cats = {
refl = refl,
perf = perf,
impers = impers
}
PERF_FULL = "perfective"
if not perf then PERF_FULL = "chưa hoàn thành" end
--impersonal (only used in a few verbs)
IMPERS = ""
if impers then IMPERS = "không ngôi; " end
local forms, title, categories
if conjugations[conj_type] then
forms, title, categories = conjugations[conj_type](args)
else
error("Không rõ loại chia động từ '" .. conj_type .. "'")
end
--cách viết khác
--forms["impr_2sg2"] = args["impr_2sg2"]
--forms["impr_1pl2"] = args["impr_1pl2"]
--forms["impr_2pl2"] = args["impr_2pl2"]
forms["pres_actv_part2"] = args["pres_actv_part2"]
forms["past_actv_part2"] = args["past_actv_part2"]
--forms["pres_pasv_part2"] = args["pres_pasv_part2"]
forms["gerund2"] = args["gerund2"]
--forms["past_m2"] = args["past_m2"]
--forms["past_f2"] = args["past_f2"]
--forms["past_n2"] = args["past_n2"]
--forms["past_pl2"] = args["past_pl2"]
forms["pres_futr_1sg2"] = args["pres_futr_1sg2"]
forms["pres_futr_2sg2"] = args["pres_futr_2sg2"]
forms["pres_futr_3sg2"] = args["pres_futr_3sg2"]
forms["pres_futr_1pl2"] = args["pres_futr_1pl2"]
forms["pres_futr_2pl2"] = args["pres_futr_2pl2"]
forms["pres_futr_3pl2"] = args["pres_futr_3pl2"]
if args["gerund"] then forms["gerund"] = args["gerund"] end
if args["pres_pasv_part"] then forms["pres_pasv_part"] = args["pres_pasv_part"] end
--parameters passed by the user
local no_impr = args["no_impr"]
local no_pres_actv_part = args["no_pres_actv_part"]
local no_pasv_part = args["no_pasv_part"]
local no_gerund = args["no_gerund"]
local pres_actv_part = args["pres_actv_part"]
local pasv_part = args["pasv_part"]
local impf_part = args["impf_part"]
local short = args["short"]
local dt = args["dt"]
local nt = args["nt"]
local params = {
no_impr = no_impr,
no_pres_actv_part = no_pres_actv_part,
no_pasv_part = no_pasv_part,
no_gerund = no_gerund,
pres_actv_part = pres_actv_part,
pasv_part = pasv_part,
impf_part = impf_part,
short = short,
dt = dt,
nt = nt
}
-- Hoàn thành/chưa hoàn thành
table.insert(categories, "Động từ " .. PERF_FULL .. " tiếng Rusnak")
-- Phản thân
if refl then
make_reflexive(forms)
table.insert(categories, "Động từ phản thân tiếng Rusnak")
end
local ret = ""
if NAMESPACE == "" then
local sort_key = PAGENAME
for key, cat in ipairs(categories) do
ret = ret .. "[[Thể loại:" .. cat .. "|" .. sort_key .. "]]"
end
end
return make_table(forms, title, cats, params) .. ret
end
--[=[
Conjugation functions
]=]--
-- pattern чит-а-м, чит-ай-у, чит-а-ц
conjugations["1"] = function(params)
local forms = {}
local categories = {"Động từ lớp 1 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 1, loại ''читац'')"
local stem = ""
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local pres_stem1 = stem .. "а"
local pres_stem2 = stem .. "ай"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern видз-и-м, видз--а, видз-и-ц
conjugations["2a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 2 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 2a, loại ''видзиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "и"
local pres_stem2 = stem
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern роб-и-м, роб-й-а, роб-и-ц
conjugations["2b"] = function(params)
local forms = {}
local categories = {"Động từ lớp 2 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 2b, loại ''робиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "и"
local pres_stem2 = stem .. "й"
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, stem)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
--TODO: figure out -nul, -ol paradigm
conjugations["3a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 3 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 3a, loại ''спаднуц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
stem = remove_reflexive_particle_and_suffix(stem, get_last_char(stem))
local last = mw.ustring.sub(stem, -2, -1)
local soft_stem = ""
if last == "сн" then
soft_stem = remove_suffix(stem, "сн")
soft_stem = soft_stem .. "шн"
elseif last == "зн" then
soft_stem = remove_suffix(stem, "зн")
soft_stem = soft_stem .. "жн"
else
soft_stem = stem
end
local pres_stem1 = soft_stem .. "є"
local pres_stem2 = soft_stem .. "ь"
local inf_stem = stem .. "у"
local inf_stem2 = remove_suffix(stem, "н")
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
if params["short"] == "1" then
add_preterite_suffixes(forms, inf_stem, inf_stem2)
elseif params["short"] == "n" then
add_preterite_suffixes(forms, inf_stem, "n")
elseif params["short"] == "o" then
add_preterite_suffixes(forms, inf_stem, "o")
else
add_preterite_suffixes(forms, inf_stem, nil)
end
return forms, title, categories
end
conjugations["3b"] = function()
local forms = {}
local categories = {"Động từ lớp 3 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 3b, loại ''гинуц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
stem = remove_reflexive_particle_and_suffix(stem, get_last_char(stem))
local pres_stem1 = stem .. "є"
local pres_stem2 = stem .. "ь"
local inf_stem = stem .. "у"
local inf_stem2 = remove_suffix(stem, "н")
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["4"] = function()
local forms = {}
local categories = {"Động từ lớp 4 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 4, loại ''куповац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "овац")
local pres_stem1 = stem .. "ує"
local pres_stem2 = stem .. "уй"
local inf_stem = stem .. "ова"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["5"] = function(params)
local forms = {}
local categories = {"Động từ lớp 5 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "loại 5, lớp ''червенїц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "иц$") or mw.ustring.find(PAGENAME, "иц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
elseif mw.ustring.find(PAGENAME, "їц$") or mw.ustring.find(PAGENAME, "їц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "їц")
end
local pres_stem1 = stem .. "еє"
local pres_stem2 = stem .. "ей"
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т")
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн")
else
set_participles_etc(forms, inf_stem, inf_stem, "н")
end
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
-- pattern нє-ше-м, нє-ш-у, нє-с-ц
conjugations["6a"] = function(params)
local forms = {}
local categories = {"Động từ lớp 6 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 6a, loại ''нєсц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
local stem_last = get_last_char(stem) -- s or z
local pres_stem_last = ""
if stem_last == "с" then
pres_stem_last = "ш"
elseif stem_last == "з" then
pres_stem_last = "ж"
end
local pres_stem1 = remove_last_char(stem) .. pres_stem_last .. "е"
local pres_stem2 = remove_last_char(pres_stem1)
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, nil, pres_stem1, "н")
if params["short"] then
add_preterite_suffixes(forms, inf_stem, inf_stem)
else
add_preterite_suffixes(forms, inf_stem, "o")
end
return forms, title, categories
end
-- pattern ве-дзе-м, ве-д-у, ве-с-ц
conjugations["6b"] = function(params)
local forms = {}
local categories = {"Động từ lớp 6 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 6b, loại ''весц'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "сц")
local dt = ""
local past_stem = ""
if get_last_char(stem) == "и" then
dt = "d"
past_stem = stem .. "ш"
elseif get_last_char(stem) == "й" then
dt = "d"
past_stem = remove_last_char(stem) .. "ш"
else
dt = params["dt"] or error("The conjugation root (\"d\" or \"t\") has not been specified. Please pass parameter 3")
end
local dt_cyrillic = ""
local dt_soft = ""
if dt == "d" then
dt_cyrillic = "д"
dt_soft = "дз"
elseif dt == "t" then
dt_cyrillic = "т"
dt_soft = "ц"
end
local pres_stem1 = stem .. dt_soft .. "е"
local pres_stem2 = stem .. dt_cyrillic
local inf_stem = stem .. dt_soft
if past_stem == "" then past_stem = pres_stem2 end
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, inf_stem)
set_participles_etc(forms, nil, pres_stem1, "н")
if params["short"] then
add_preterite_suffixes(forms, past_stem, past_stem)
else
add_preterite_suffixes(forms, past_stem, "o")
end
return forms, title, categories
end
conjugations["7a"] = function()
local forms = {}
local categories = {"Động từ lớp 7 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 7a, loại ''орац'')"
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local stem2 = nil
if mw.ustring.find(stem, "бр$") then
stem2 = remove_last_char(stem) .. "e" .. get_last_char(stem)
elseif mw.ustring.find(stem, "кл$") then
stem2 = remove_last_char(stem) .. "о" .. get_last_char(stem) .. "ь"
elseif mw.ustring.find(stem, "гн$") then
stem2 = "жень"
else
stem2 = stem
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["7b"] = function()
local forms = {}
local categories = {"Động từ lớp 7 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 7b, loại ''писац'')"
local stem = ""
local stem2 = nil
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
if get_last_char(stem) == "с" or get_last_char(stem) == "х" then
stem2 = remove_last_char(stem) .. "ш"
elseif get_last_char(stem) == "з" then
stem2 = remove_last_char(stem) .. "ж"
elseif get_last_char(stem) == "л" then
if get_last_char(remove_last_char(stem)) == "с" then
stem2 = remove_last_char(remove_last_char(stem)) .. "шль"
elseif get_last_char(remove_last_char(stem)) == "з" then
stem2 = remove_last_char(remove_last_char(stem)) .. "жль"
end
elseif get_last_char(stem) == "к" then
stem2 = remove_last_char(stem) .. "ч"
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["8"] = function()
local forms = {}
local categories = {"Động từ lớp 8 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 8, loại ''клєчац'')"
local stem = ""
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local stem2 = ""
if mw.ustring.find(stem, "сп$") then
if mw.ustring.len(stem) > 2 then
stem2 = mw.ustring.sub(stem, 1, -3) .. "шп"
pres_stem2_2 = mw.ustring.sub(stem, 1, -3) .. "шпй"
else
stem2 = "шп"
pres_stem2_2 = "шпй"
end
else
stem2 = stem
pres_stem2_2 = stem
end
local pres_stem1 = stem2 .. "и"
local pres_stem2 = pres_stem2_2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
if mw.ustring.find(stem, "сп$") then
add_imperative_suffixes(forms, pres_stem1)
else
add_imperative_suffixes(forms, pres_stem2)
end
set_participles_etc(forms, inf_stem, inf_stem, "н")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["9"] = function()
local forms = {}
local categories = {"Động từ lớp 9 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 9, loại ''жиц'')"
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ц")
local pres_stem1 = stem .. "є"
local pres_stem2 = stem .. "й"
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["10"] = function(params)
local forms = {}
local categories = {"Động từ lớp 10 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 10, loại ''шмец'')"
if mw.ustring.find(PAGENAME, "ец$") or mw.ustring.find(PAGENAME, "ец ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ец")
elseif mw.ustring.find(PAGENAME, "єц$") or mw.ustring.find(PAGENAME, "єц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "єц")
end
local stem2 = nil
local past_stem = ""
if mw.ustring.find(stem, "мль$") then
stem2 = "мель"
past_stem = stem .. "е"
elseif mw.ustring.find(stem, "р$") and not mw.ustring.find(stem, "зр$") then
-- зрец, узрец, дозрец do not give -зар
stem2 = stem
past_stem = remove_last_char(stem) .. "а" .. get_last_char(stem)
else
stem2 = stem
past_stem = stem .. "е"
end
local pres_stem1 = stem2 .. "е"
local pres_stem2 = stem2
local inf_stem = stem .. "е"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2 .. "и")
local nt = params["nt"]
if nt == "t" then
set_participles_etc(forms, inf_stem, inf_stem, "т", true)
elseif nt == "nt" then
set_participles_etc(forms, inf_stem, inf_stem, "тн", true)
else
set_participles_etc(forms, inf_stem, inf_stem, "н", true)
end
if mw.ustring.find(stem, "ар$") then
add_preterite_suffixes(forms, past_stem, "no_l")
else
add_preterite_suffixes(forms, past_stem, nil)
end
return forms, title, categories
end
conjugations["11"] = function()
local forms = {}
local categories = {"Động từ lớp 11 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 11, loại ''кляц'')"
if mw.ustring.find(PAGENAME, "ац$") or mw.ustring.find(PAGENAME, "ац ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
elseif mw.ustring.find(PAGENAME, "яц$") or mw.ustring.find(PAGENAME, "яц ше$") then
stem = remove_reflexive_particle_and_suffix(PAGENAME, "яц")
end
local pres_stem1 = stem .. "еє"
local pres_stem2 = stem .. "ей"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["12"] = function()
local forms = {}
local categories = {"Động từ lớp 12 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 12, loại ''жац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
local stem2 = stem
local stem_last = get_last_char(stem)
if stem_last == "ц" then
stem2 = remove_last_char(stem) .. "т"
elseif mw.ustring.find(stem, "ст$") then
stem2 = stem .. "а"
elseif mw.ustring.find(stem, "вж$") then
stem2 = "веж"
end
local pres_stem1 = stem2 .. "нє"
local pres_stem2 = stem2 .. "нь"
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["13"] = function()
local forms = {}
local categories = {"Động từ lớp 13 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 13, loại ''бац'')"
local stem = remove_reflexive_particle_and_suffix(PAGENAME, "ац")
local stem2 = stem .. "ой"
local pres_stem1 = stem2 .. "и"
local pres_stem2 = stem2
local inf_stem = stem .. "а"
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "а")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
conjugations["14"] = function(params)
local forms = {}
local categories = {"Động từ lớp 14 tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (" .. PERF_FULL .. "; " .. IMPERS .. "lớp 14, loại ''печиц'')"
local stem = ""
if mw.ustring.find(PAGENAME, "мочи$") then
stem = remove_suffix(PAGENAME, "чи") .. "ж"
else
stem = remove_reflexive_particle_and_suffix(PAGENAME, "иц")
end
local stem2 = ""
if get_last_char(stem) == "ч" then
stem2 = remove_last_char(stem) .. "к"
elseif get_last_char(stem) == "ж" then
stem2 = remove_last_char(stem) .. "г"
end
local pres_stem1 = stem .. "е"
local pres_stem2 = stem
local inf_stem = stem2
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2)
set_participles_etc(forms, inf_stem, pres_stem1, "н")
if mw.ustring.find(PAGENAME, "мочи$") then
if mw.ustring.find(PAGENAME, "$мочи") then
params["no_impr"] = 1
end
forms["pres_actv_part"] = ""
forms["past_actv_part"] = ""
forms["gerund"] = ""
forms["pres_pasv_part"] = ""
end
if params["short"] or mw.ustring.find(PAGENAME, "мочи$") then
add_preterite_suffixes(forms, inf_stem, inf_stem)
else
add_preterite_suffixes(forms, inf_stem, "o")
end
return forms, title, categories
end
conjugations["irreg-буц"] = function()
-- irregular, only for verbs derived from буц derivatives
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local prefix = remove_suffix(remove_reflexive_particle_and_suffix(PAGENAME, ""), "буц")
forms["infinitive"] = PAGENAME
add_imperative_suffixes(forms, prefix .. "будз")
if prefix == "" then
forms["pres_futr_1sg"] = "[[сом]]"
forms["pres_futr_2sg"] = "[[ши]]"
forms["pres_futr_3sg"] = "[[є]]"
forms["pres_futr_1pl"] = "[[зме]]"
forms["pres_futr_2pl"] = "[[сце]]"
forms["pres_futr_3pl"] = "[[су]]"
forms["pres_actv_part"] = ""
forms["gerund"] = ""
forms["pres_pasv_part"] = ""
else
local pres_stem1 = prefix .. "будзе"
local pres_stem2 = prefix .. "буд"
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
set_participles_etc(forms, prefix .. "бу", prefix .. "бу", "т")
end
add_preterite_suffixes(forms, prefix .. "бу", nil)
return forms, title, categories
end
conjugations["irreg-єсц"] = function()
-- irregular, only for verbs derived from єсц and повесц
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local prefix = ""
if mw.ustring.find(PAGENAME, "есц$") then
prefix = remove_suffix(PAGENAME, "есц")
else
prefix = remove_suffix(PAGENAME, "єсц") .. "й"
end
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, prefix .. "е", prefix .. "едз", "а")
add_imperative_suffixes(forms, prefix .. "едз")
set_participles_etc(forms, nil, prefix .. "едзе", "н")
forms["past_actv_part"] = ""
if mw.ustring.find(prefix, "пов$") then
add_preterite_suffixes(forms, prefix .. "ед", prefix .. "ед")
else
add_preterite_suffixes(forms, prefix .. "ед", "o")
end
return forms, title, categories
end
conjugations["irreg-прияц"] = function()
-- irregular, only for verbs derived from прияц
local forms = {}
local categories = {"Động từ bất quy tắc tiếng Rusnak"}
local title = "Bảng chia động từ của ''" .. PAGENAME .. "'' (bất quy tắc)"
local stem = remove_suffix(PAGENAME, "ц")
local stem2 = remove_suffix(PAGENAME, "яц")
local pres_stem1 = stem2 .. "ме"
local pres_stem2 = stem2 .. "м"
local inf_stem = stem
forms["infinitive"] = PAGENAME
add_present_suffixes(forms, pres_stem1, pres_stem2, "у")
add_imperative_suffixes(forms, pres_stem2 .. "и")
set_participles_etc(forms, inf_stem, inf_stem, "т")
add_preterite_suffixes(forms, inf_stem, nil)
return forms, title, categories
end
--[=[
Partial conjugation functions
]=]--
function get_last_char(str)
local last = mw.ustring.sub(str, -1, -1)
return last
end
function remove_last_char(str)
local stem = mw.ustring.sub(str, 1, -2)
return stem
end
function ends_with_2_consonants(str)
local cond = false
if mw.ustring.find(str, "[бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь]$") and not mw.ustring.find(str, "д[зж]$") then
cond = true
end
return cond
end
function ends_with_3_consonants(str)
local cond = false
if mw.ustring.find(str, "[бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь][бвгґджзйклмнпрстфхцчшщь]$") and not mw.ustring.find(str, "д[зж]$") then
cond = true
end
return cond
end
function remove_suffix(form, suffix)
local base = form
if mw.ustring.find(base, suffix .. "$") then
local length = mw.ustring.len(suffix)
base = mw.ustring.sub(base, 1, -length-1)
end
return base
end
function remove_reflexive_particle_and_suffix(inf, suffix)
local stem = null
if mw.ustring.find(inf, " ше$") then
stem = remove_suffix(inf, suffix .. " ше")
else
stem = remove_suffix(inf, suffix)
end
if suffix == "яц" or suffix == "їц" then
if (mw.ustring.find(stem, "[аеиоуяєїю]$")) then
stem = stem .. "й"
else
stem = stem .. "ь"
end
end
return stem
end
-- TODO: rename this
function repl_dtnl_ei(str)
local new_string = str
new_string = mw.ustring.gsub(new_string, "йу", "ю")
new_string = mw.ustring.gsub(new_string, "йа", "я")
new_string = mw.ustring.gsub(new_string, "йе", "є")
new_string = mw.ustring.gsub(new_string, "йи", "ї")
new_string = mw.ustring.gsub(new_string, "ьу", "ю")
new_string = mw.ustring.gsub(new_string, "ьа", "я")
new_string = mw.ustring.gsub(new_string, "ье", "є")
new_string = mw.ustring.gsub(new_string, "ьи", "ї")
return new_string
end
function add_present_suffixes(forms, stem1, stem2, stem2suffix)
local suffix2 = stem2suffix
local stem1_dtnl = repl_dtnl_ei(stem1)
forms["pres_futr_1sg"] = stem1_dtnl .. "м"
forms["pres_futr_2sg"] = stem1_dtnl .. "ш"
forms["pres_futr_3sg"] = stem1_dtnl
forms["pres_futr_1pl"] = stem1_dtnl .. "ме"
forms["pres_futr_2pl"] = stem1_dtnl .. "це"
forms["pres_futr_3pl"] = repl_dtnl_ei(stem2 .. suffix2)
end
function add_imperative_suffixes(forms, stem)
local st = stem
local st2 = ""
local extra_i = ""
if ends_with_3_consonants(st) then
extra_i = "и"
elseif ends_with_2_consonants(st) and not mw.ustring.find(mw.ustring.sub(st, -2, -1), "ь") then
extra_i = "и"
end
if mw.ustring.sub(stem, -4, -1) == "патр" then
st2 = mw.ustring.gsub(stem, "патр", "пать")
elseif stem == "вежнь" then
st2 = "веж"
end
forms["impr_2sg"] = repl_dtnl_ei(st .. extra_i)
forms["impr_1pl"] = repl_dtnl_ei(st .. extra_i .. "ме")
forms["impr_2pl"] = repl_dtnl_ei(st .. extra_i .. "це")
if st2 ~= "" then
forms["impr_2sg2"] = repl_dtnl_ei(st2)
forms["impr_1pl2"] = repl_dtnl_ei(st2 .. "ме")
forms["impr_2pl2"] = repl_dtnl_ei(st2 .. "це")
end
end
function add_preterite_suffixes(forms, stem, stem2)
local extra_o = ""
if stem == stem2 or stem2 == "o" then
extra_o = "о"
end
local short_stem = ""
if mw.ustring.find(stem, "ну$") and ends_with_2_consonants(remove_last_char(stem)) then
short_stem = remove_suffix(stem, "ну")
else
short_stem = stem
end
if stem2 == "no_l" then
forms["past_m"] = repl_dtnl_ei(stem)
elseif mw.ustring.find(stem, "повед$") then
forms["past_m"] = repl_dtnl_ei(stem)
forms["past_m2"] = repl_dtnl_ei(stem .. extra_o .. "л")
elseif mw.ustring.find(stem, "ну$") and stem2 == "o" then
forms["past_m"] = repl_dtnl_ei(short_stem .. extra_o .. "л")
else
forms["past_m"] = repl_dtnl_ei(stem .. extra_o .. "л")
if mw.ustring.find(stem, "ну$") and stem2 == nil and ends_with_2_consonants(remove_last_char(stem)) and not mw.ustring.find(stem, "цагну$") then
forms["past_m2"] = repl_dtnl_ei(short_stem .. "ол")
end
end
forms["past_f"] = repl_dtnl_ei(short_stem .. "ла")
forms["past_n"] = repl_dtnl_ei(short_stem .. "ло")
forms["past_pl"] = repl_dtnl_ei(short_stem .. "ли")
if stem2 ~= nil and stem2 ~= "o" and stem2 ~= "n" and stem2 ~= "no_l" and not mw.ustring.find(stem, "повед$") then
forms["past_m2"] = repl_dtnl_ei(stem2)
if stem2 ~= stem and not mw.ustring.find(stem, "ну$") then
forms["past_f2"] = repl_dtnl_ei(stem2 .. "ла")
forms["past_n2"] = repl_dtnl_ei(stem2 .. "ло")
forms["past_pl2"] = repl_dtnl_ei(stem2 .. "ли")
end
end
end
function set_participles_etc(forms, stem1, stem2, pas_part_suffix, is_class_10)
forms["pres_actv_part"] = forms["pres_futr_3pl"] .. "ци"
if stem1 == nil then
forms["past_actv_part"] = ""
else
forms["past_actv_part"] = repl_dtnl_ei(stem1 .. "вши")
end
local is_class_10 = is_class_10
local pas_part_suffix1 = pas_part_suffix
local pas_part_suffix2 = ""
if pas_part_suffix1 == "тн" then
pas_part_suffix1 = "н"
pas_part_suffix2 = "т"
end
if mw.ustring.find(stem2, "ре$") and is_class_10 and not mw.ustring.find(stem2, "зре$") then
forms["pres_pasv_part"] = repl_dtnl_ei(remove_suffix(stem2, "ре") .. "ар" .. pas_part_suffix1 .. "и")
else
forms["pres_pasv_part"] = repl_dtnl_ei(stem2 .. pas_part_suffix1 .. "и")
end
if pas_part_suffix2 ~= "" then
forms["pres_pasv_part2"] = repl_dtnl_ei(stem2 .. pas_part_suffix2 .. "и")
end
if pas_part_suffix == "т" and not mw.ustring.find(stem1, "нье$") then
forms["gerund"] = repl_dtnl_ei(stem2 .. "це")
else
forms["gerund"] = repl_dtnl_ei(stem2 .. "нє")
end
end
function create_composite(form, inf, tense, mood, person, gender, subject)
subject = subject or false
gender = gender or "p"
local buc_pres = {" [[сом#Tiếng_Rusnak|сом]]", " [[ши#Tiếng_Rusnak|ши]]", "", " [[зме#Tiếng_Rusnak|зме]]", " [[сце#Tiếng_Rusnak|сце]]", ""}
local bul_gend = {m="[[бул#Tiếng_Rusnak|бул]]", f="[[була#Tiếng_Rusnak|була]]", n="[[було#Tiếng_Rusnak|було]]", p="[[були#Tiếng_Rusnak|були]]"}
local bude = {"[[будзем#Tiếng_Rusnak|будзем]]", "[[будзеш#Tiếng_Rusnak|будзеш]]", "[[будзе#Tiếng_Rusnak|будзе]]", "[[будземе#Tiếng_Rusnak|будземе]]", "[[будзеце#Tiếng_Rusnak|будзеце]]", "[[буду#Tiếng_Rusnak|буду]]"}
local bude_nl = {"[[будзем#Tiếng_Rusnak|будзем]]", "[[будзеш#Tiếng_Rusnak|будзеш]]", "[[будзе#Tiếng_Rusnak|будзе]]", "[[будземе#Tiếng_Rusnak|будземе]]", "[[будзеце#Tiếng_Rusnak|будзеце]]", "[[буду#Tiếng_Rusnak|буду]]"}
local by = {" [[бим#Tiếng_Rusnak|бим]]", " [[биш#Tiếng_Rusnak|биш]]", " [[би#Tiếng_Rusnak|би]]", " [[бизме#Tiếng_Rusnak|бизме]]", " [[бисце#Tiếng_Rusnak|бисце]]", " [[би#Tiếng_Rusnak|би]]"}
local refl = ""
if mw.ustring.find(inf, " ше$") then refl = " ше" end
local refl_space = refl .. " "
if person > 3 then gender = "p" end
local accel_form = ""
if tense == "quá khứ" and mood == "ind" and person % 3 == 0 then
if person == 3 then
accel_form = gender .. "|3|s|past|ind"
elseif person == 6 then
accel_form = "3|p|past|ind"
end
elseif gender == "p" then
accel_form = "p|l-ptcp"
else
accel_form = gender .. "|s|l-ptcp"
end
if tense ~= "fut" then form = make_link(form, accel_form) end
local result = nil
if tense == "quá khứ" then
if mood == "ind" then
result = form .. buc_pres[person] .. refl
elseif mood == "cond" then
if subject then
result = by[person] .. " " .. bul_gend[gender] .. refl_space .. form
else
result = bul_gend[gender] .. by[person] .. refl_space .. form
end
if gender ~= "p" and person ~= 3 then
result = result .. ", " .. bul_gend[gender] .. by[3] .. buc_pres[person] .. refl_space .. form
end
-- result = bul_gend[gender] .. by[3] .. buc_pres[person] .. refl_space .. form
end
elseif tense == "quá khứ hoàn thành" and mood == "ind" then
result = bul_gend[gender] .. buc_pres[person] .. refl_space .. form
elseif tense == "hiện tại" and mood == "cond" then
if subject then
result = by[person] .. " " .. form .. refl
else
result = form .. by[person] .. refl
end
if gender ~= "p" and person ~= 3 then
result = result .. ", " .. form .. by[3] .. buc_pres[person] .. refl
end
-- result = form .. by[3] .. buc_pres[person] .. refl
elseif subject == "subject" and person == 3 then
result = "—"
elseif tense == "fut" then
if inf == "буц" and not subject then
result = make_link(bude_nl[person], (((person - 1) % 3) + 1) .. "|" .. ((person <= 3) and "s" or "p") .. "|fut|ind")
elseif subject == "subject" and gender == "p" then
result = "—"
else
result = bude[person] .. refl_space .. remove_suffix(inf, refl)
end
end
return result
end
-- Add the reflexive particle to all verb forms
function make_reflexive(forms)
for key, form in pairs(forms) do
if form ~= "" and not mw.ustring.find(form, " ше$") and not mw.ustring.find(key, "past_[mfnp]") and not mw.ustring.find(key, "pres_pasv_part") then
forms[key] = form .. " ше"
end
end
end
function make_link(link, accel_form)
local new_link = link
-- Check if the link ends with " ше"
local ending = ""
if mw.ustring.find(link, " ше$") then ending = "ше" end
if #ending > 0 then
-- Remove the ending from the link
link = remove_suffix(link, " " .. ending)
end
-- If link is not empty, valid, and not "—", create the full link
if link ~= "" and link and link ~= "—" then
new_link = m_links.full_link({lang = lang, term = link, accel = {form = accel_form}})
end
if #ending > 0 then
new_link = new_link .. " " .. ending
end
return new_link
end
function convert_to_accel(input)
-- Define mappings for person, number, tense, mood, and other specific cases
local mood_map = {
pres = "ind",
futr = "ind",
impr = "imp"
}
local tense_map = {
pres = "pres",
futr = "fut",
impr = "pres" -- For imperative, tense is always present
}
-- Handle special cases
local special_cases = {
["pres_actv_part"] = "pres|act|part",
["past_actv_part"] = "past|act|part", -- Assuming 'past' is passive
["pres_pasv_part"] = "pasv|part",
["past_m"] = "m|s|l-ptcp",
["gerund"] = "vnoun"
}
-- Check if the input matches any special case
if special_cases[input] then
return special_cases[input]
end
-- Otherwise, proceed with regular tense/mood parsing
local tense_mood, person_number = input:match("([a-z]+)_([0-9]+[sp]+)")
-- Extract person and number
local person = person_number:match("([1-3])")
local number = person_number:match("([sp])")
-- Convert tense/mood
local tense = tense_map[tense_mood]
local mood = mood_map[tense_mood]
-- Format the result as "person|number|(tense)|mood"
if tense_mood == "impr" then
return string.format("%s|%s|%s", person, number, mood)
else
return string.format("%s|%s|%s|%s", person, number, tense, mood)
end
end
function check_add_alt(forms, id, impers)
local accel_form = convert_to_accel(id)
local result = make_link(forms[id], accel_form)
local imp = forms["imperative"]
if id == "past_m" and impers then
result = make_link(forms["past_n"]) .. ", " .. make_link(forms["past_pl"])
if forms["past_n2"] then result = result .. ",<br />" .. make_link(forms["past_n2"], accel_form) end
elseif id == "past_m" then
result = make_link(forms[id], accel_form) .. ", "
.. make_link(forms["past_f"], "f|s|l-ptcp") .. ", "
.. make_link(forms["past_n"], "n|s|l-ptcp") .. ", "
.. make_link(forms["past_pl"], "p|l-ptcp")
if forms[id .. "2"] and forms["past_f2"] and forms["past_n2"] and forms["past_pl2"] then
result = result .. "<br />" .. make_link(forms[id .. "2"], accel_form) .. ", "
.. make_link(forms["past_f2"], "f|s|l-ptcp") .. ", "
.. make_link(forms["past_n2"], "n|s|l-ptcp") .. ", "
.. make_link(forms["past_pl2"], "p|l-ptcp")
end
elseif impers == "subject" then
result = "—"
else
if forms[id .. "2"] then result = result .. ",<br />" .. make_link(forms[id .. "2"], accel_form) end
end
return result
end
function check_add_alt_comp(forms, tense, mood, gender, person, subject)
local result = ""
result = create_composite(forms["past_" .. gender], forms["infinitive"], tense, mood, person, gender, subject)
if forms["past_" .. gender .. "2"] then
result = result .. ",<br />" .. create_composite(forms["past_" .. gender .. "2"], forms["infinitive"], tense, mood, person, gender)
end
return result
end
function make_table_header(title)
local header = [=[<div class="NavFrame">
<div class="NavHead">]=] .. title .. [=[</div>
<div class="NavContent">
<table style="text-align:center; width:100%" class="inflection-table">]=]
return header
end
function make_simple_row(label, form)
local row = [=[<tr style="height:2em;">
<th colspan="3" style="background:var(--wikt-palette-grey-3,#d0d0d0);color:inherit">]=] .. label .. [=[</th>
<td colspan="5"><span lang=\"rsk\">''']=] .. form .. [=['''</span></td>
</tr>]=]
return row
end
function make_mood_header(mood, colour)
local header = [=[<tr>
<th colspan="2" rowspan="2" style="background:]=] .. colour .. [=[">]=] .. mood .. [=[</th>
<th colspan="4" style="background:]=] .. colour .. [=[">''số ít''</th>
<th colspan="4" style="background:]=] .. colour .. [=[">''số nhiều''</th>
</tr>
<tr>
<th style="background:]=] .. colour .. [=[">ngôi thứ nhất</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ hai</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ ba</th>
<th style="background:]=] .. colour .. [=[">chủ ngữ</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ nhất</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ hai</th>
<th style="background:]=] .. colour .. [=[">ngôi thứ ba</th>
<th style="background:]=] .. colour .. [=[">chủ ngữ</th>
</tr>]=]
return header
end
function make_indecl_header(colour)
local header = [=[<tr>
<th colspan="2" rowspan="3" style="background:]=] .. colour .. [=[">không nguyên mẫu</th>
<th colspan="7" style="background:]=] .. colour .. [=[">phân từ</th>
<th rowspan="2" style="background:]=] .. colour .. [=[">vị danh từ</th>
</tr>
<tr>
<th style="background:]=] .. colour .. [=[">hiện tại chủ động</th>
<th style="background:]=] .. colour .. [=[">quá khứ chủ động</th>
<th style="background:]=] .. colour .. [=[">bị động</th>
<th colspan="4" style="background:]=] .. colour .. [=[">phân từ l</th>
</tr>]=]
return header
end
function make_full_row(tense, colour, form1, form2, form3, form4, form5, form6, form7, form8)
local first_col = ""
if tense ~= "non-finite" then
first_col = [=[<th colspan="2" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>]=]
end
local row = [=[<tr>]=]
.. first_col ..
[=[<td><span lang=\"rsk\">]=] .. form1 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form2 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form3 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form4 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form5 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form6 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form7 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form8 .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
return row
end
function make_full_row5(tense, colour, form1, form2, form3, form4, form5)
local first_col = ""
if tense ~= "non-finite" then
first_col = [=[<th colspan="2" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>]=]
end
local row = [=[<tr>]=]
.. first_col ..
[=[<td><span lang=\"rsk\">]=] .. form1 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form2 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form3 .. [=[</span></td>
<td colspan="4"><span lang=\"rsk\">]=] .. form4 .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. form5 .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
return row
end
function add_row_separator()
if #IMPERS > 0 then
return ""
else
return "<tr style=\"height: 0px;\"><td colspan=\"8\" style=\"height: 0px; padding: 0;\"></td></tr>"
end
end
function make_full_row_comp(tense, colour, forms, mood, impers, subject)
local row = ""
if impers then
row = make_full_row(tense, colour, "—", "—", check_add_alt_comp(forms, tense, mood, "n", 3), "—", "—", "—", check_add_alt_comp(forms, tense, mood, "pl", 6), "—")
elseif subject == nil then
row = [=[<tr style="line-height: 1.2;">
<th rowspan="3" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>
<th style="background:]=] .. colour .. [=[; width:7em; padding-bottom: 0;">giống đực</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 4) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 5) .. [=[</span></td>
<td colspan="2" rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0; padding-bottom: 0;"">giống cái</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0;">giống trung</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 2) .. [=[</span></td>
<td colspan="2"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3) .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
else
row = [=[<tr style="line-height: 1.2;">
<th rowspan="3" style="background:]=] .. colour .. [=[; width:7em">]=] .. tense .. [=[</th>
<th style="background:]=] .. colour .. [=[; width:7em; padding-bottom: 0;">giống đực</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "m", 3, 1) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 4) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 5) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6) .. [=[</span></td>
<td rowspan="3"><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "pl", 6, 1) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0; padding-bottom: 0;"">giống cái</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "f", 3, 1) .. [=[</span></td>
</tr>
<tr style="line-height: 1.2;">
<th style="background:]=] .. colour .. [=[; width:7em; padding-top: 0;">giống trung</th>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 1) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 2) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3) .. [=[</span></td>
<td><span lang=\"rsk\">]=] .. check_add_alt_comp(forms, tense, mood, "n", 3, 1) .. [=[</span></td>
</tr>]=]
row = row .. add_row_separator()
end
return row
end
function make_table_footer()
local header = [=[</table></div></div>]=]
return header
end
-- Make the table
function make_table(forms, title, cats, params)
if cats["impers"] then
forms["pres_futr_1sg"] = ""
forms["pres_futr_2sg"] = ""
forms["pres_futr_1pl"] = ""
forms["pres_futr_2pl"] = ""
forms["past_m"] = ""
forms["past_f"] = ""
--forms["pres_actv_part"] = ""
forms["past_actv_part"] = ""
forms["impr_2sg"] = ""
forms["impr_1pl"] = ""
forms["impr_2pl"] = ""
--alternatives
forms["pres_futr_1sg2"] = nil
forms["pres_futr_2sg2"] = nil
forms["pres_futr_1pl2"] = nil
forms["pres_futr_2pl2"] = nil
forms["pres_futr_3pl2"] = nil
--forms["past_m2"] = nil
--forms["past_m3"] = nil
--forms["past_f2"] = nil
--forms["past_pl2"] = nil
forms["pres_actv_part2"] = nil
forms["past_actv_part2"] = nil
forms["impr_2sg"] = nil
forms["impr_1pl"] = nil
forms["impr_2pl"] = nil
end
-- Perfective verbs have no present forms.
if cats["perf"] then
if not params["impf_part"] then
forms["pres_actv_part"] = ""
end
forms["pres_1sg"] = ""
forms["pres_2sg"] = ""
forms["pres_3sg"] = ""
forms["pres_1pl"] = ""
forms["pres_2pl"] = ""
forms["pres_3pl"] = ""
--alternatives
forms["pres_actv_part2"] = nil
forms["pres_1sg2"] = nil
forms["pres_2sg2"] = nil
forms["pres_3sg2"] = nil
forms["pres_1pl2"] = nil
forms["pres_2pl2"] = nil
forms["pres_3pl2"] = nil
forms["futr_1sg"] = forms["pres_futr_1sg"]
forms["futr_2sg"] = forms["pres_futr_2sg"]
forms["futr_3sg"] = forms["pres_futr_3sg"]
forms["futr_1pl"] = forms["pres_futr_1pl"]
forms["futr_2pl"] = forms["pres_futr_2pl"]
forms["futr_3pl"] = forms["pres_futr_3pl"]
-- alternatives
forms["futr_1sg2"] = forms["pres_futr_1sg2"]
forms["futr_2sg2"] = forms["pres_futr_2sg2"]
forms["futr_3sg2"] = forms["pres_futr_3sg2"]
forms["futr_1pl2"] = forms["pres_futr_1pl2"]
forms["futr_2pl2"] = forms["pres_futr_2pl2"]
forms["futr_3pl2"] = forms["pres_futr_3pl2"]
else
forms["past_actv_part"] = ""
forms["pres_1sg"] = forms["pres_futr_1sg"]
forms["pres_2sg"] = forms["pres_futr_2sg"]
forms["pres_3sg"] = forms["pres_futr_3sg"]
forms["pres_1pl"] = forms["pres_futr_1pl"]
forms["pres_2pl"] = forms["pres_futr_2pl"]
forms["pres_3pl"] = forms["pres_futr_3pl"]
forms["pres_2sg"] = forms["pres_futr_2sg"]
-- alternatives
forms["pres_1sg2"] = forms["pres_futr_1sg2"]
forms["pres_2sg2"] = forms["pres_futr_2sg2"]
forms["pres_3sg2"] = forms["pres_futr_3sg2"]
forms["pres_1pl2"] = forms["pres_futr_1pl2"]
forms["pres_2pl2"] = forms["pres_futr_2pl2"]
forms["pres_3pl2"] = forms["pres_futr_3pl2"]
end
if cats["impers"] then
forms["futr_1sg"] = ""
forms["futr_2sg"] = ""
forms["futr_1pl"] = ""
forms["futr_2pl"] = ""
--alternatives
forms["futr_1sg2"] = nil
forms["futr_2sg2"] = nil
forms["futr_1pl2"] = nil
forms["futr_2pl2"] = nil
end
local inf = forms["infinitive"]
for key, form in pairs(forms) do
-- check for empty strings and nil's
if form == "" or not form then
forms[key] = "—"
end
end
local final = make_table_header(title)
final = final .. make_simple_row("nguyên mẫu", inf)
final = final .. make_mood_header("trần thuật", "var(--wikt-palette-grey-blue-3,#A0ADE3);color:inherit")
if not cats["perf"] then
final = final .. make_full_row(
"hiện tại",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
check_add_alt(forms, "pres_1sg", cats["impers"]),
check_add_alt(forms, "pres_2sg", cats["impers"]),
check_add_alt(forms, "pres_3sg", cats["impers"]),
check_add_alt(forms, "pres_3sg", "subject"),
check_add_alt(forms, "pres_1pl", cats["impers"]),
check_add_alt(forms, "pres_2pl", cats["impers"]),
check_add_alt(forms, "pres_3pl", cats["impers"]),
check_add_alt(forms, "pres_3pl", "subject")
)
end
final = final .. make_full_row_comp("quá khứ", "var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit", forms, "ind", cats["impers"], nil)
final = final .. make_full_row_comp("quá khứ hoàn thành", "var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit", forms, "ind", cats["impers"], nil)
if cats["perf"] then
final = final .. make_full_row(
"future",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
check_add_alt(forms, "futr_1sg", cats["impers"]),
check_add_alt(forms, "futr_2sg", cats["impers"]),
check_add_alt(forms, "futr_3sg", cats["impers"]),
check_add_alt(forms, "futr_3sg", "subject"),
check_add_alt(forms, "futr_1pl", cats["impers"]),
check_add_alt(forms, "futr_2pl", cats["impers"]),
check_add_alt(forms, "futr_3pl", cats["impers"]),
check_add_alt(forms, "futr_3pl", "subject")
)
else
final = final .. make_full_row(
"tương lai",
"var(--wikt-palette-grey-blue-2,#C0CFE4);color:inherit",
create_composite(nil, inf, "fut", nil, 1, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 2, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 3, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 3, nil, "subject"),
create_composite(nil, inf, "fut", nil, 4, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 5, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 6, nil, cats["impers"]),
create_composite(nil, inf, "fut", nil, 6, nil, "subject")
)
end
final = final .. make_mood_header("điều kiện", "var(--wikt-palette-green-3,#A7D8B8);color:inherit")
final = final .. make_full_row_comp("hiện tại", "var(--wikt-palette-green-2,#B2E8A6);color:inherit", forms, "cond", cats["impers"], 1)
final = final .. make_full_row_comp("quá khứ", "var(--wikt-palette-green-2,#B2E8A6);color:inherit", forms, "cond", cats["impers"], 1)
if (forms["impr_2sg"] and forms["impr_1pl"] and forms["impr_2pl"] and not params["no_impr"] and not cats["impers"]) then
final = final .. make_mood_header("mệnh lệnh", "var(--wikt-palette-red-3,#F4A7A7);color:inherit")
final = final .. make_full_row(
"hiện tại",
"var(--wikt-palette-red-2,#F7B2B7);color:inherit",
"—",
check_add_alt(forms, "impr_2sg", cats["impers"]),
"—",
"—",
check_add_alt(forms, "impr_1pl", cats["impers"]),
check_add_alt(forms, "impr_2pl", cats["impers"]),
"—",
"—"
)
end
local pres_actv_part_final, pasv_part_final, gerund_final = "—", "—", "—"
if not params["no_pres_actv_part"] and (not cats["refl"] or params["pres_actv_part"]) and (not cats["perf"] or params["pres_actv_part"]) then
pres_actv_part_final = check_add_alt(forms, "pres_actv_part", cats["impers"])
end
if not params["no_pasv_part"] and not params["pasv_part"] and (not cats["impers"] or cats["perf"] or params["pasv_part"]) then
pasv_part_final = check_add_alt(forms, "pres_pasv_part", cats["impers"])
end
if params["impf_part"] then
pres_actv_part_final = check_add_alt(forms, "pres_actv_part", cats["impers"])
forms["past_actv_part"] = "—"
pasv_part_final = check_add_alt(forms, "pres_pasv_part", cats["impers"])
end
if not params["no_gerund"] then
gerund_final = check_add_alt(forms, "gerund", cats["impers"])
end
final = final .. make_indecl_header("var(--wikt-palette-lime-3,#F3F781);color:inherit")
final = final .. make_full_row5(
"non-finite", -- giữ nguyên
"var(--wikt-palette-lime-2,#F2F5A9);color:inherit",
pres_actv_part_final,
check_add_alt(forms, "past_actv_part", cats["impers"]),
pasv_part_final,
check_add_alt(forms, "past_m", cats["impers"]),
gerund_final
)
final = final .. make_table_footer()
return final
end
return export
e5qbn34nw1dxqg2qipsu4bgtf5l4oz9
Bản mẫu:rsk-conj
10
411314
2512159
2026-08-07T15:05:49Z
Hiyuune
50834
Trang mới: “<includeonly>{{#invoke:rsk-verb|show}}</includeonly><!--- --><noinclude>{{documentation}}</noinclude>”
2512159
wikitext
text/x-wiki
<includeonly>{{#invoke:rsk-verb|show}}</includeonly><!---
--><noinclude>{{documentation}}</noinclude>
0tvu11f5uo1yloer4m4eqe2pmogln8k
ᠵᡳᡵᠠᠮᡳᠨ
0
411315
2512160
2026-08-07T15:09:18Z
TheHighFighter2
42988
Trang mới: “=={{langname|mnc}}== ==={{ĐM|pron}}=== {{mnc-IPA}} ==={{ĐM|adj}}=== {{head|mnc|adjective}} # [[dày|Dày]].”
2512160
wikitext
text/x-wiki
=={{langname|mnc}}==
==={{ĐM|pron}}===
{{mnc-IPA}}
==={{ĐM|adj}}===
{{head|mnc|adjective}}
# [[dày|Dày]].
m16m6o0lbs4dk6q23hv8upmdqlyioql
ᡨᠠᡵᡶᡠ
0
411316
2512161
2026-08-07T15:16:47Z
TheHighFighter2
42988
Trang mới: “=={{langname|mnc}}== ==={{ĐM|pron}}=== {{mnc-IPA}} ==={{ĐM|n}}=== {{head|mnc|noun}} # [[hổ|Hổ]]. ===={{ĐM|syn}}==== * {{l|mnc|ᡨᠠᠰᡥᠠ}} {{top|mnc|Chi Báo}}”
2512161
wikitext
text/x-wiki
=={{langname|mnc}}==
==={{ĐM|pron}}===
{{mnc-IPA}}
==={{ĐM|n}}===
{{head|mnc|noun}}
# [[hổ|Hổ]].
===={{ĐM|syn}}====
* {{l|mnc|ᡨᠠᠰᡥᠠ}}
{{top|mnc|Chi Báo}}
cdolbezzekli3cso19o2trmapgdy0nc
ސައި
0
411317
2512165
2026-08-07T15:33:34Z
TheHighFighter2
42988
Trang mới: “=={{langname|dv}}== {{wp|dv:}} ==={{ĐM|etym}}=== Từ {{bor|dv|zh|茶}}. ==={{ĐM|pron}}=== * {{IPA|dv|/s̺a.i/|[s̺ä.i]}} * {{IPA|dv|[s̺æː]|a=[[w:Malé|Malé]]}} * {{hyph|dv|ސަ|އި}} ==={{ĐM|n}}=== {{dv-noun}} # [[trà|Trà]]. {{c|dv|Đồ uống}}”
2512165
wikitext
text/x-wiki
=={{langname|dv}}==
{{wp|dv:}}
==={{ĐM|etym}}===
Từ {{bor|dv|zh|茶}}.
==={{ĐM|pron}}===
* {{IPA|dv|/s̺a.i/|[s̺ä.i]}}
* {{IPA|dv|[s̺æː]|a=[[w:Malé|Malé]]}}
* {{hyph|dv|ސަ|އި}}
==={{ĐM|n}}===
{{dv-noun}}
# [[trà|Trà]].
{{c|dv|Đồ uống}}
qobqi7gkrds7h1ndwpk83j9mrkepgls
裝備
0
411318
2512166
2026-08-07T15:46:54Z
Hiyuune
50834
Trang mới: “{{also|装備}} =={{langname|zh}}== {{zh-forms|s=装备}} ==={{ĐM|pron}}=== {{zh-pron |m=zhuāngbèi |ma=y |c=zong1 bei6 |h=pfs=chông-phi |mn=chong-pī |mn-t=zuang1 bi6 |cat=v,n }} ==={{ĐM|v}}=== {{head|zh|Động từ}} # [[trang bị|Trang bị]]. ===={{ĐM|rel}}==== * {{zh-l|配備}} ==={{ĐM|n}}=== {{head|zh|Danh từ}} # Sự [[trang bị]]. ===={{ĐM|syn}}==== {{syn-saurus|zh|設備}} ===={{ĐM|see}}==== * {{zh-l|設備}} * {{zh-l|設施}} * {{zh-l|裝置}}”
2512166
wikitext
text/x-wiki
{{also|装備}}
=={{langname|zh}}==
{{zh-forms|s=装备}}
==={{ĐM|pron}}===
{{zh-pron
|m=zhuāngbèi
|ma=y
|c=zong1 bei6
|h=pfs=chông-phi
|mn=chong-pī
|mn-t=zuang1 bi6
|cat=v,n
}}
==={{ĐM|v}}===
{{head|zh|Động từ}}
# [[trang bị|Trang bị]].
===={{ĐM|rel}}====
* {{zh-l|配備}}
==={{ĐM|n}}===
{{head|zh|Danh từ}}
# Sự [[trang bị]].
===={{ĐM|syn}}====
{{syn-saurus|zh|設備}}
===={{ĐM|see}}====
* {{zh-l|設備}}
* {{zh-l|設施}}
* {{zh-l|裝置}}
iafhr368bkl46wxf7xit0u8tq02yao7
Thể loại:dv:Đồ uống
14
411319
2512169
2026-08-07T15:49:41Z
Hiyuune
50834
Trang mới: “{{auto cat}}”
2512169
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:dv:Ăn uống
14
411320
2512170
2026-08-07T15:50:26Z
Hiyuune
50834
Trang mới: “{{auto cat}}”
2512170
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:dv:Tất cả chủ đề
14
411321
2512171
2026-08-07T15:50:55Z
Hiyuune
50834
Trang mới: “{{auto cat}}”
2512171
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
𑀕𑀪𑀺𑀦𑀻
0
411322
2512173
2026-08-07T15:55:41Z
Hiyuune
50834
Trang mới: “=={{langname|inc-ash}}== ==={{section|etym}}=== {{etymon|inc-ash|id=có thai|:inh|sa:ग॒र्भिणी॑<id:có thai>|text=++|tree=1}}{{ref|{{R:CDIAL|garbhíṇī|page=217|passage=Aś. ''gabhinī''}}}}{{ref|{{R:inc:CGMIA|75}}}} ==={{section|adj}}=== {{h|inc-ash|Tính từ|ts={{xlit|inc-ash|𑀕𑀩𑁆𑀪𑀺𑀦𑀻}}}} {{lb|inc-ash|Delhi-Topra}}{{ref|{{R:inc-ash:Hultzsch|424|column=2}}}} # Có [[thai]]. ===={{section|desc}}==== * {{desctree|pra|𑀕𑀩𑁆…”
2512173
wikitext
text/x-wiki
=={{langname|inc-ash}}==
==={{section|etym}}===
{{etymon|inc-ash|id=có thai|:inh|sa:ग॒र्भिणी॑<id:có thai>|text=++|tree=1}}{{ref|{{R:CDIAL|garbhíṇī|page=217|passage=Aś. ''gabhinī''}}}}{{ref|{{R:inc:CGMIA|75}}}}
==={{section|adj}}===
{{h|inc-ash|Tính từ|ts={{xlit|inc-ash|𑀕𑀩𑁆𑀪𑀺𑀦𑀻}}}} {{lb|inc-ash|Delhi-Topra}}{{ref|{{R:inc-ash:Hultzsch|424|column=2}}}}
# Có [[thai]].
===={{section|desc}}====
* {{desctree|pra|𑀕𑀩𑁆𑀪𑀺𑀡𑀻}}
==={{section|ref}}===
{{box-top}}
{{reflist}}
{{box-bottom}}
{{topics|inc-ash|Mang thai}}
tgl5ga94ys7f93z6ev2scw6nkjw50tz
2512177
2512173
2026-08-07T16:00:44Z
Hiyuune
50834
/* Tiếng Prakrit Ashoka */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512177
wikitext
text/x-wiki
=={{langname|inc-ash}}==
==={{section|etym}}===
{{etymon|inc-ash|id=có thai|:inh|sa:गर्भिणी<id:có thai>|text=++|tree=1}}{{ref|{{R:CDIAL|garbhíṇī|page=217|passage=Aś. ''gabhinī''}}}}{{ref|{{R:inc:CGMIA|75}}}}
==={{section|adj}}===
{{h|inc-ash|Tính từ|ts={{xlit|inc-ash|𑀕𑀩𑁆𑀪𑀺𑀦𑀻}}}} {{lb|inc-ash|Delhi-Topra}}{{ref|{{R:inc-ash:Hultzsch|424|column=2}}}}
# Có [[thai]].
===={{section|desc}}====
* {{desctree|pra|𑀕𑀩𑁆𑀪𑀺𑀡𑀻}}
==={{section|ref}}===
{{box-top}}
{{reflist}}
{{box-bottom}}
{{topics|inc-ash|Mang thai}}
5lk2t23fquz4h2or36okn6cyc55tljt
गर्भिणी
0
411323
2512174
2026-08-07T15:58:36Z
Hiyuune
50834
Trang mới: “=={{langname|sa}}== ==={{section|alternative script}}=== {{sa-alt}} ==={{section|etym}}=== {{dercat|sa|ine-pro}} {{etymon|sa|id=có thai}} From {{af|sa|गर्भ॒|-इनी}}. ==={{section|pron}}=== {{sa-IPA|a=2}} ==={{section|adj}}=== {{sa-adj form|head=ग॒र्भिणी॑}} # {{infl of|sa|ग॒र्भिन्॑||f|t=có [[thai]], [[thụ thai]]}} ==={{section|n}}=== {{sa-noun|g=f|head=ग॒र्भिणी॑}} # Người [[phụ nữ]] có…”
2512174
wikitext
text/x-wiki
=={{langname|sa}}==
==={{section|alternative script}}===
{{sa-alt}}
==={{section|etym}}===
{{dercat|sa|ine-pro}}
{{etymon|sa|id=có thai}}
From {{af|sa|गर्भ॒|-इनी}}.
==={{section|pron}}===
{{sa-IPA|a=2}}
==={{section|adj}}===
{{sa-adj form|head=ग॒र्भिणी॑}}
# {{infl of|sa|ग॒र्भिन्॑||f|t=có [[thai]], [[thụ thai]]}}
==={{section|n}}===
{{sa-noun|g=f|head=ग॒र्भिणी॑}}
# Người [[phụ nữ]] có [[thai]].
#* {{Q|sa||RV|3|29|2||quote=अ॒रण्यो॒र् निहि॑तो जा॒तवे॑दा॒ गर्भ॑ इव॒ सुधि॑तो '''ग॒र्भिणी॑षु''' ।<br>दि॒वे दि॑व॒ ईड्यो॑ जागृ॒वद्भि॑र् ह॒विष्म॑द्भिर् मनु॒ष्ये॑भिर् अ॒ग्निः ॥}}
===={{section|decl}}====
{{sa-decl-noun-f|{{xlit|sa|ग॒र्भिणी॑}}}}
===={{section|desc}}====
{{col-top|2|Từ kế thừa}}
* {{desctree|inc-ash|𑀕𑀪𑀺𑀦𑀻<ts:{{xlit|inc-ash|𑀕𑀩𑁆𑀪𑀺𑀦𑀻}}>}}
* {{desc|inc-dar|-}}
** {{desc|khw|گاربین|tr=garbiín}}
* {{desc|pra-niy|𐨒𐨪𐨿𐨧𐨁𐨣𐨁}}
* {{desc|pi|gabbhinī}}
{{col-bottom}}
{{col-top|2|Từ vay mượn}}
* {{desc|as|গৰ্ভিণী|bor=1}}
* {{desc|bn|গর্ভিণী|bor=1}}
* {{desc|gu|ગર્ભિણી|bor=1}}
* {{desc|hi|गर्भिणी|bor=1}}
* {{desc|kn|ಗರ್ಭಿಣಿ|bor=1}}
* {{desc|mai|-|bor=1}} {{xlit|mai|गर्भिणी}}
*: {{desc|mai|गर्भिणी<tr:->|sclang=1}}
*: {{desc|mai|𑒑𑒩𑓂𑒦𑒱𑒝𑒲<tr:->|sclang=1}}
* {{desc|ml|ഗര്ഭിണി|bor=1}}
* {{desc|mr|-|bor=1}}
*: {{desc|mr|गर्भिणी|sclang=1}}
*: {{desc|mr|𑘐𑘨𑘿𑘥𑘲𑘜𑘲|sclang=1}}
* {{desc|or|ଗର୍ଭିଣୀ|bor=1}}
* {{desc|ta|கருப்பிணி|bor=1}}
* {{desc|te|గర్భిణి|bor=1}}
* {{desc|tcy|ಗರ್ಭಿಣಿ|bor=1}}
{{col-bottom}}
==={{section|ref}}===
{{box-top}}
* {{R:sa:Apte||653}}
* {{R:sa:Macdonell|83|गर्भिन्|disp=गर्भिन्-î}}
* {{R:sa:MW|head=Garbhiṇī|350|column=2}}
* {{R:CDIAL|garbhíṇī|page=217}}
{{box-bottom}}
{{C|sa|Mang thai}}
btfk4at4zrgvtjck5b7gsu6tfq4lbrw
2512175
2512174
2026-08-07T15:59:45Z
Hiyuune
50834
Hiyuune đã đổi [[ग॒र्भिणी॑]] thành [[गर्भिणी]]: không có dấu phụ
2512174
wikitext
text/x-wiki
=={{langname|sa}}==
==={{section|alternative script}}===
{{sa-alt}}
==={{section|etym}}===
{{dercat|sa|ine-pro}}
{{etymon|sa|id=có thai}}
From {{af|sa|गर्भ॒|-इनी}}.
==={{section|pron}}===
{{sa-IPA|a=2}}
==={{section|adj}}===
{{sa-adj form|head=ग॒र्भिणी॑}}
# {{infl of|sa|ग॒र्भिन्॑||f|t=có [[thai]], [[thụ thai]]}}
==={{section|n}}===
{{sa-noun|g=f|head=ग॒र्भिणी॑}}
# Người [[phụ nữ]] có [[thai]].
#* {{Q|sa||RV|3|29|2||quote=अ॒रण्यो॒र् निहि॑तो जा॒तवे॑दा॒ गर्भ॑ इव॒ सुधि॑तो '''ग॒र्भिणी॑षु''' ।<br>दि॒वे दि॑व॒ ईड्यो॑ जागृ॒वद्भि॑र् ह॒विष्म॑द्भिर् मनु॒ष्ये॑भिर् अ॒ग्निः ॥}}
===={{section|decl}}====
{{sa-decl-noun-f|{{xlit|sa|ग॒र्भिणी॑}}}}
===={{section|desc}}====
{{col-top|2|Từ kế thừa}}
* {{desctree|inc-ash|𑀕𑀪𑀺𑀦𑀻<ts:{{xlit|inc-ash|𑀕𑀩𑁆𑀪𑀺𑀦𑀻}}>}}
* {{desc|inc-dar|-}}
** {{desc|khw|گاربین|tr=garbiín}}
* {{desc|pra-niy|𐨒𐨪𐨿𐨧𐨁𐨣𐨁}}
* {{desc|pi|gabbhinī}}
{{col-bottom}}
{{col-top|2|Từ vay mượn}}
* {{desc|as|গৰ্ভিণী|bor=1}}
* {{desc|bn|গর্ভিণী|bor=1}}
* {{desc|gu|ગર્ભિણી|bor=1}}
* {{desc|hi|गर्भिणी|bor=1}}
* {{desc|kn|ಗರ್ಭಿಣಿ|bor=1}}
* {{desc|mai|-|bor=1}} {{xlit|mai|गर्भिणी}}
*: {{desc|mai|गर्भिणी<tr:->|sclang=1}}
*: {{desc|mai|𑒑𑒩𑓂𑒦𑒱𑒝𑒲<tr:->|sclang=1}}
* {{desc|ml|ഗര്ഭിണി|bor=1}}
* {{desc|mr|-|bor=1}}
*: {{desc|mr|गर्भिणी|sclang=1}}
*: {{desc|mr|𑘐𑘨𑘿𑘥𑘲𑘜𑘲|sclang=1}}
* {{desc|or|ଗର୍ଭିଣୀ|bor=1}}
* {{desc|ta|கருப்பிணி|bor=1}}
* {{desc|te|గర్భిణి|bor=1}}
* {{desc|tcy|ಗರ್ಭಿಣಿ|bor=1}}
{{col-bottom}}
==={{section|ref}}===
{{box-top}}
* {{R:sa:Apte||653}}
* {{R:sa:Macdonell|83|गर्भिन्|disp=गर्भिन्-î}}
* {{R:sa:MW|head=Garbhiṇī|350|column=2}}
* {{R:CDIAL|garbhíṇī|page=217}}
{{box-bottom}}
{{C|sa|Mang thai}}
btfk4at4zrgvtjck5b7gsu6tfq4lbrw
2512304
2512175
2026-08-08T09:04:52Z
Hiyuune
50834
/* Từ nguyên */
2512304
wikitext
text/x-wiki
=={{langname|sa}}==
==={{section|alternative script}}===
{{sa-alt}}
==={{section|etym}}===
{{dercat|sa|ine-pro}}
{{etymon|sa|id=có thai}}
Từ {{af|sa|गर्भ॒|-इनी}}.
==={{section|pron}}===
{{sa-IPA|a=2}}
==={{section|adj}}===
{{sa-adj form|head=ग॒र्भिणी॑}}
# {{infl of|sa|ग॒र्भिन्॑||f|t=có [[thai]], [[thụ thai]]}}
==={{section|n}}===
{{sa-noun|g=f|head=ग॒र्भिणी॑}}
# Người [[phụ nữ]] có [[thai]].
#* {{Q|sa||RV|3|29|2||quote=अ॒रण्यो॒र् निहि॑तो जा॒तवे॑दा॒ गर्भ॑ इव॒ सुधि॑तो '''ग॒र्भिणी॑षु''' ।<br>दि॒वे दि॑व॒ ईड्यो॑ जागृ॒वद्भि॑र् ह॒विष्म॑द्भिर् मनु॒ष्ये॑भिर् अ॒ग्निः ॥}}
===={{section|decl}}====
{{sa-decl-noun-f|{{xlit|sa|ग॒र्भिणी॑}}}}
===={{section|desc}}====
{{col-top|2|Từ kế thừa}}
* {{desctree|inc-ash|𑀕𑀪𑀺𑀦𑀻<ts:{{xlit|inc-ash|𑀕𑀩𑁆𑀪𑀺𑀦𑀻}}>}}
* {{desc|inc-dar|-}}
** {{desc|khw|گاربین|tr=garbiín}}
* {{desc|pra-niy|𐨒𐨪𐨿𐨧𐨁𐨣𐨁}}
* {{desc|pi|gabbhinī}}
{{col-bottom}}
{{col-top|2|Từ vay mượn}}
* {{desc|as|গৰ্ভিণী|bor=1}}
* {{desc|bn|গর্ভিণী|bor=1}}
* {{desc|gu|ગર્ભિણી|bor=1}}
* {{desc|hi|गर्भिणी|bor=1}}
* {{desc|kn|ಗರ್ಭಿಣಿ|bor=1}}
* {{desc|mai|-|bor=1}} {{xlit|mai|गर्भिणी}}
*: {{desc|mai|गर्भिणी<tr:->|sclang=1}}
*: {{desc|mai|𑒑𑒩𑓂𑒦𑒱𑒝𑒲<tr:->|sclang=1}}
* {{desc|ml|ഗര്ഭിണി|bor=1}}
* {{desc|mr|-|bor=1}}
*: {{desc|mr|गर्भिणी|sclang=1}}
*: {{desc|mr|𑘐𑘨𑘿𑘥𑘲𑘜𑘲|sclang=1}}
* {{desc|or|ଗର୍ଭିଣୀ|bor=1}}
* {{desc|ta|கருப்பிணி|bor=1}}
* {{desc|te|గర్భిణి|bor=1}}
* {{desc|tcy|ಗರ್ಭಿಣಿ|bor=1}}
{{col-bottom}}
==={{section|ref}}===
{{box-top}}
* {{R:sa:Apte||653}}
* {{R:sa:Macdonell|83|गर्भिन्|disp=गर्भिन्-î}}
* {{R:sa:MW|head=Garbhiṇī|350|column=2}}
* {{R:CDIAL|garbhíṇī|page=217}}
{{box-bottom}}
{{C|sa|Mang thai}}
5ne7emo9xbez3ehfa71277sxxc3iusy
ग॒र्भिणी॑
0
411324
2512176
2026-08-07T15:59:46Z
Hiyuune
50834
Hiyuune đã đổi [[ग॒र्भिणी॑]] thành [[गर्भिणी]]: không có dấu phụ
2512176
wikitext
text/x-wiki
#đổi [[गर्भिणी]]
cdh2jpxixnh641p1fwbecynn5h6u89n
Mô đun:Vith-translit
828
411325
2512180
2026-08-07T16:07:49Z
Hiyuune
50834
Trang mới: “local export = {} local ugsub = mw.ustring.gsub local tt = { ["𐕰"] = "A", ["𐖗"] = "a", ["𐕱"] = "B", ["𐖘"] = "b", ["𐕲"] = "B", ["𐖙"] = "b", ["𐕳"] = "C", ["𐖚"] = "c", ["𐕴"] = "Ç", ["𐖛"] = "ç", ["𐕵"] = "D", ["𐖜"] = "d", ["𐕶"] = "Dh", ["𐖝"] = "dh", ["𐕷"] = "E", ["𐖞"] = "e", ["𐕸"] = "Ë", ["𐖟"] = "ë", ["𐕹"] = "F", ["𐖠"] = "f", ["𐕺"] = "G", ["𐖡"] = "g", ["𐕼"] = "H", ["𐖣"] = "h", ["𐕽"] =…”
2512180
Scribunto
text/plain
local export = {}
local ugsub = mw.ustring.gsub
local tt = {
["𐕰"] = "A", ["𐖗"] = "a",
["𐕱"] = "B", ["𐖘"] = "b",
["𐕲"] = "B", ["𐖙"] = "b",
["𐕳"] = "C", ["𐖚"] = "c",
["𐕴"] = "Ç", ["𐖛"] = "ç",
["𐕵"] = "D", ["𐖜"] = "d",
["𐕶"] = "Dh", ["𐖝"] = "dh",
["𐕷"] = "E", ["𐖞"] = "e",
["𐕸"] = "Ë", ["𐖟"] = "ë",
["𐕹"] = "F", ["𐖠"] = "f",
["𐕺"] = "G", ["𐖡"] = "g",
["𐕼"] = "H", ["𐖣"] = "h",
["𐕽"] = "Ḫ", ["𐖤"] = "ḫ",
["𐕾"] = "I", ["𐖥"] = "i",
["𐕿"] = "I̯", ["𐖦"] = "i̯",
["𐖀"] = "J", ["𐖧"] = "j",
["𐖁"] = "K", ["𐖨"] = "k",
["𐖂"] = "L", ["𐖩"] = "l",
["𐖃"] = "Ll", ["𐖪"] = "ll",
["𐖄"] = "M", ["𐖫"] = "m",
["𐖅"] = "N", ["𐖬"] = "n",
["𐖆"] = "Nj", ["𐖭"] = "nj",
["𐖇"] = "O", ["𐖮"] = "o",
["𐖈"] = "P", ["𐖯"] = "p",
["𐖉"] = "Q", ["𐖰"] = "q",
["𐖊"] = "R", ["𐖱"] = "r",
["𐖌"] = "S", ["𐖳"] = "s",
["𐖍"] = "Sh", ["𐖴"] = "sh",
["𐖎"] = "T", ["𐖵"] = "t",
["𐖏"] = "Th", ["𐖶"] = "th",
["𐖐"] = "U", ["𐖷"] = "u",
["𐖑"] = "V", ["𐖸"] = "v",
["𐖒"] = "X", ["𐖹"] = "x",
["𐖔"] = "Y", ["𐖻"] = "y",
["𐖕"] = "Z", ["𐖼"] = "z",
}
function export.tr(text, _lang, _sc)
text = ugsub(text, '𐖍𐖼', 'Zh')
text = ugsub(text, '𐖴𐖼', 'zh')
text = ugsub(text, '𐕺𐖦', 'Gj')
text = ugsub(text, '𐖡𐖦', 'gj')
text = ugsub(text, '𐖧𐖦', 'j')
text = ugsub(text, '[𐕰-𐖼]', tt)
return text
end
return export
0h3a3itjgcx2vgpw73dys05dx2goq0f
Mô đun:Quotations/peo/data
828
411326
2512185
2026-08-07T16:16:04Z
Hiyuune
50834
Trang mới: “local data = {} data.Sundry = {} data.authorAliases = { } data[false] = {} data[false].works = { ['AmH'] = {['reroute'] = {['author']='Ariaramnes', ['work']='AmH'}}, ['AsH'] = {['reroute'] = {['author']='Arsames', ['work']='AsH'}}, ['CMa'] = {['reroute'] = {['author']='Cyrus', ['work']='CMa'}}, ['CMb'] = {['reroute'] = {['author']='Cyrus', ['work']='CMb'}}, ['CMc'] = {['reroute'] = {['author']='Cyrus', ['work']='CMc'}}, ['DB1'] = {['reroute'] = {['author'…”
2512185
Scribunto
text/plain
local data = {}
data.Sundry = {}
data.authorAliases = {
}
data[false] = {}
data[false].works = {
['AmH'] = {['reroute'] = {['author']='Ariaramnes', ['work']='AmH'}},
['AsH'] = {['reroute'] = {['author']='Arsames', ['work']='AsH'}},
['CMa'] = {['reroute'] = {['author']='Cyrus', ['work']='CMa'}},
['CMb'] = {['reroute'] = {['author']='Cyrus', ['work']='CMb'}},
['CMc'] = {['reroute'] = {['author']='Cyrus', ['work']='CMc'}},
['DB1'] = {['reroute'] = {['author']='Darius I', ['work']='DB1'}},
['DB2'] = {['reroute'] = {['author']='Darius I', ['work']='DB2'}},
['DSe'] = {['reroute'] = {['author']='Darius I', ['work']='DSe'}},
}
data["Ariaramnes"] = {}
data["Ariaramnes"].year = 'c. 640 - 600 BCE'
data["Ariaramnes"].aLink = 'Ariaramnes'
data["Ariaramnes"].works = {
['AmH'] = {},
}
data["Arsames"] = {}
data["Arsames"].year = 'c. 520 BCE'
data["Arsames"].aLink = 'Arsames'
data["Arsames"].works = {
['AsH'] = {},
}
data["Cyrus"] = {}
data["Cyrus"].year = '559 - 530 BCE'
data["Cyrus"].aLink = 'Cyrus the Great'
data["Cyrus"].works = {
['CMa'] = {},
['CMb'] = {},
['CMc'] = {},
}
data["Darius I"] = {}
data["Darius I"].year = '522 - 486 BCE'
data["Darius I"].aLink = 'Darius I'
data["Darius I"].works = {
['DSe'] = {},
['DB1'] = {},
['DB2'] = {},
}
return {['data'] = data}
a5b2sni18yfd4lcqxy0m5dx4fpyky3o
Mô đun:dialect synonyms/pl/dwieście
828
411327
2512189
2026-08-07T16:21:00Z
Hiyuune
50834
Trang mới: “local export = {} export.title = "" export.meaning = "hai trăm" export.note = "" export.syns = { ["Standard"] = { "dwieście" }, ["Middle Polish"] = { "dwieście" }, ["Bochnia"] = { "dwiesta" }, ["Wadowice"] = { "dwiesta" }, ["Sławków"] = { "dwiesta" }, ["Zebrzydowice"] = { "dwiesta", "dwasta" }, ["Tarnobrzeg"] = { "dwiesta", "dwasta" }, ["Ropczyce"] = { "dwiesta" }, ["Żywiec"] = { "dwiesta" }, ["Skawica"] = { "dwiesta", "dwasta" }, ["Miejska Górka"] = {…”
2512189
Scribunto
text/plain
local export = {}
export.title = ""
export.meaning = "hai trăm"
export.note = ""
export.syns = {
["Standard"] = { "dwieście" },
["Middle Polish"] = { "dwieście" },
["Bochnia"] = { "dwiesta" },
["Wadowice"] = { "dwiesta" },
["Sławków"] = { "dwiesta" },
["Zebrzydowice"] = { "dwiesta", "dwasta" },
["Tarnobrzeg"] = { "dwiesta", "dwasta" },
["Ropczyce"] = { "dwiesta" },
["Żywiec"] = { "dwiesta" },
["Skawica"] = { "dwiesta", "dwasta" },
["Miejska Górka"] = { "dwasta" },
["Kurpie"] = { "dwasta" },
["Garwolin County"] = { "dwasta" },
["Brzeziny"] = { "dwasta" },
["Ropczyce-Sędziszów County"] = { "dwasta" },
["San river"] = { "dwasta" },
["Zagórze"] = { "dwiesta" },
}
return export
jd2ynr5yybe0t3mjam56xlomvubzryh
Mô đun:labels/data/lang/yrk
828
411328
2512193
2026-08-07T16:24:54Z
Hiyuune
50834
Hiyuune đã đổi [[Mô đun:labels/data/lang/yrk]] thành [[Mô đun:labels/data/lang/yrk-tun]]
2512193
Scribunto
text/plain
return require [[Mô đun:labels/data/lang/yrk-tun]]
lp5te7f7vxeqcu6n7wibaylmcnk0aac
Từ tái tạo:Tiếng Slav nguyên thủy/sъto
0
411329
2512195
2026-08-07T16:29:32Z
Hiyuune
50834
Trang mới: “{{reconstructed}} =={{langname|sla-pro}}== ==={{section|etym}}=== {{etymon|sla-pro|id=trăm|:inh|ine-bsl-pro:*śímtan<id:trăm>}} {{rfe|sla-pro}} ==={{section|n}}=== {{head|sla-pro|Danh từ|head=*sъ̏to|n}}<ref>{{R:sla:EDSIL|482|*sъto|num. (c) ‘hundred’}}</ref><ref>{{R:sla:CSAWL|sъto|''c'' hundred (NA 107; PR 138)}}</ref><ref>{{R:sl:SES|head=stọ̑|passage=*sъ̏to}}</ref> # {{cln|sla-pro|Số đếm}} [[trăm|Trăm]]. ===={{section|desc}}==== {{hrow}} * Sla…”
2512195
wikitext
text/x-wiki
{{reconstructed}}
=={{langname|sla-pro}}==
==={{section|etym}}===
{{etymon|sla-pro|id=trăm|:inh|ine-bsl-pro:*śímtan<id:trăm>}}
{{rfe|sla-pro}}
==={{section|n}}===
{{head|sla-pro|Danh từ|head=*sъ̏to|n}}<ref>{{R:sla:EDSIL|482|*sъto|num. (c) ‘hundred’}}</ref><ref>{{R:sla:CSAWL|sъto|''c'' hundred (NA 107; PR 138)}}</ref><ref>{{R:sl:SES|head=stọ̑|passage=*sъ̏to}}</ref>
# {{cln|sla-pro|Số đếm}} [[trăm|Trăm]].
===={{section|desc}}====
{{hrow}}
* Slav Đông:
** {{desc|orv|съто}}
*** {{desc|zle-ort|сто}}
**** {{desc|be|сто}}
**** {{desc|rue|сто}}
**** {{desc|uk|сто}}
*** {{desc|ru|сто}}
** {{desc|zle-ono|съто}}
* Slav Nam:
** {{desc|cu|-}}
**: {{desc|sclang=1|cu|ⱄⱏⱅⱁ}}
**: {{desc|sclang=1|cu|съто}}
*** {{desc|bg|сто}}
*** {{desc|mk|сто}}
** {{desc|sh|-}}
**: {{desc|sclang=1|sh|сто̑}}
**: {{desctree|sclang=1|sh|stȏ}}
** {{desc/sl-tonal|stọ̑}}
* Slav Tây:
** {{desctree|zlw-ocs|sto}}
** {{desctree|zlw-opl|sto}}
** {{desc|zlw-osk|sto}}
*** {{desc|rsk|сто}}
*** {{desc|sk|sto}}
** Pomerani:
*** {{desc|csb|sto}}
*** {{desc|zlw-slv|stô}}
** Sorb:
*** {{desc|dsb|sto}}
*** {{desc|hsb|sto}}
{{bl}}
* Không thuộc nhóm ngôn ngữ Slav:
** {{desctree|la-vul|*suta|bor=1}}
===={{section|further}}====
* {{R:ru:Vasmer|сто}}
==={{section|ref}}===
<references/>
[[en:Reconstruction:Proto-Slavic/sъto]]
[[ja:付録:スラヴ祖語/sъto]]
[[ru:*sъto]]
oq2mno08kf1kljffdtr8rca2c0h27ra
2512197
2512195
2026-08-07T16:31:56Z
Hiyuune
50834
/* Từ nguyên */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512197
wikitext
text/x-wiki
{{reconstructed}}
=={{langname|sla-pro}}==
==={{section|etym}}===
{{etymon|sla-pro|id=trăm|:inh|ine-bsl-pro:*śímtan<id:trăm>|tree=1}}
{{rfe|sla-pro}}
==={{section|n}}===
{{head|sla-pro|Danh từ|head=*sъ̏to|n}}<ref>{{R:sla:EDSIL|482|*sъto|num. (c) ‘hundred’}}</ref><ref>{{R:sla:CSAWL|sъto|''c'' hundred (NA 107; PR 138)}}</ref><ref>{{R:sl:SES|head=stọ̑|passage=*sъ̏to}}</ref>
# {{cln|sla-pro|Số đếm}} [[trăm|Trăm]].
===={{section|desc}}====
{{hrow}}
* Slav Đông:
** {{desc|orv|съто}}
*** {{desc|zle-ort|сто}}
**** {{desc|be|сто}}
**** {{desc|rue|сто}}
**** {{desc|uk|сто}}
*** {{desc|ru|сто}}
** {{desc|zle-ono|съто}}
* Slav Nam:
** {{desc|cu|-}}
**: {{desc|sclang=1|cu|ⱄⱏⱅⱁ}}
**: {{desc|sclang=1|cu|съто}}
*** {{desc|bg|сто}}
*** {{desc|mk|сто}}
** {{desc|sh|-}}
**: {{desc|sclang=1|sh|сто̑}}
**: {{desctree|sclang=1|sh|stȏ}}
** {{desc/sl-tonal|stọ̑}}
* Slav Tây:
** {{desctree|zlw-ocs|sto}}
** {{desctree|zlw-opl|sto}}
** {{desc|zlw-osk|sto}}
*** {{desc|rsk|сто}}
*** {{desc|sk|sto}}
** Pomerani:
*** {{desc|csb|sto}}
*** {{desc|zlw-slv|stô}}
** Sorb:
*** {{desc|dsb|sto}}
*** {{desc|hsb|sto}}
{{bl}}
* Không thuộc nhóm ngôn ngữ Slav:
** {{desctree|la-vul|*suta|bor=1}}
===={{section|further}}====
* {{R:ru:Vasmer|сто}}
==={{section|ref}}===
<references/>
[[en:Reconstruction:Proto-Slavic/sъto]]
[[ja:付録:スラヴ祖語/sъto]]
[[ru:*sъto]]
0s5lov8dveouttp8r2nsxg114ucghwv
Bản mẫu:bl
10
411330
2512196
2026-08-07T16:30:13Z
Hiyuune
50834
Trang mới: “{{#invoke:checkparams|error}}<!-- Validate template parameters --><noinclude>{{documentation}}</noinclude>”
2512196
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
--><noinclude>{{documentation}}</noinclude>
syom8a8pcbg4tq5g1zro4ekvi6lbovd
Từ tái tạo:Tiếng Balt-Slav nguyên thủy/śímtan
0
411331
2512198
2026-08-07T16:35:27Z
Hiyuune
50834
Trang mới: “{{reconstructed}} =={{langname|ine-bsl-pro}}== ==={{section|etym}}=== {{etymon|ine-bsl-pro|id=trăm|:inh|ine-pro:*ḱm̥tóm<id:trăm>}} Từ {{inh|ine-bsl-pro|ine-pro|*ḱm̥tóm|t=trăm}}. ==={{section|num}}=== {{head|ine-bsl-pro|Số từ|head=*śímtan}}<ref>{{R:sla:EDSIL|482|*sъto|BSl. ''*śímto''}}</ref><ref>{{R:bat:EDBIL|448|šimtas|BSl. ''*śímto''}}</ref><ref>{{R:Kim PBS}}</ref> # {{cln|ine-bsl-pro|Số đếm}} [[trăm|Trăm]]. ==={{section|alternative fo…”
2512198
wikitext
text/x-wiki
{{reconstructed}}
=={{langname|ine-bsl-pro}}==
==={{section|etym}}===
{{etymon|ine-bsl-pro|id=trăm|:inh|ine-pro:*ḱm̥tóm<id:trăm>}}
Từ {{inh|ine-bsl-pro|ine-pro|*ḱm̥tóm|t=trăm}}.
==={{section|num}}===
{{head|ine-bsl-pro|Số từ|head=*śímtan}}<ref>{{R:sla:EDSIL|482|*sъto|BSl. ''*śímto''}}</ref><ref>{{R:bat:EDBIL|448|šimtas|BSl. ''*śímto''}}</ref><ref>{{R:Kim PBS}}</ref>
# {{cln|ine-bsl-pro|Số đếm}} [[trăm|Trăm]].
==={{section|alternative form}}===
* ''*śumtan''
===={{section|infl}}====
{{ine-bsl-decl-noun|AP=mobile}}
===={{section|desc}}====
* {{desc|bat-eas|*šimtas}}
** {{desc|ltg|symts}}
** {{desc|lv|sìmts|sìmt}}
** {{desc|lt|šim̃tas}}
** {{desc|sgs|šėmts}}
* {{desc|bat-wes}}
** {{desc|prg|sīmtan}}
* {{desc|sla-pro|*sъ̀to}} (với bất quy tắc *''im'' > ''ъ''; kết quả dự kiến là {{mention|sla-pro||*sęto}}) {{see desc}}
==={{section|ref}}===
<references/>
[[en:Reconstruction:Proto-Balto-Slavic/śímtan]]
4wiluvc0pj8p77gme7qhbvelj8c1r2p
2512199
2512198
2026-08-07T16:35:40Z
Hiyuune
50834
/* Tiếng Balt-Slav nguyên thủy */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512199
wikitext
text/x-wiki
{{reconstructed}}
=={{langname|ine-bsl-pro}}==
==={{section|etym}}===
{{etymon|ine-bsl-pro|id=trăm|:inh|ine-pro:*ḱm̥tóm<id:trăm>|tree=1}}
Từ {{inh|ine-bsl-pro|ine-pro|*ḱm̥tóm|t=trăm}}.
==={{section|num}}===
{{head|ine-bsl-pro|Số từ|head=*śímtan}}<ref>{{R:sla:EDSIL|482|*sъto|BSl. ''*śímto''}}</ref><ref>{{R:bat:EDBIL|448|šimtas|BSl. ''*śímto''}}</ref><ref>{{R:Kim PBS}}</ref>
# {{cln|ine-bsl-pro|Số đếm}} [[trăm|Trăm]].
==={{section|alternative form}}===
* ''*śumtan''
===={{section|infl}}====
{{ine-bsl-decl-noun|AP=mobile}}
===={{section|desc}}====
* {{desc|bat-eas|*šimtas}}
** {{desc|ltg|symts}}
** {{desc|lv|sìmts|sìmt}}
** {{desc|lt|šim̃tas}}
** {{desc|sgs|šėmts}}
* {{desc|bat-wes}}
** {{desc|prg|sīmtan}}
* {{desc|sla-pro|*sъ̀to}} (với bất quy tắc *''im'' > ''ъ''; kết quả dự kiến là {{mention|sla-pro||*sęto}}) {{see desc}}
==={{section|ref}}===
<references/>
[[en:Reconstruction:Proto-Balto-Slavic/śímtan]]
0284v88it5uvoxr7rgrnhf6u929n0no
Thể loại:rgs:Động vật học
14
411332
2512205
2026-08-08T02:09:10Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512205
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Lớp Bò sát
14
411333
2512206
2026-08-08T02:09:24Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512206
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Sinh học
14
411334
2512207
2026-08-08T02:09:31Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512207
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Danh sách chủ đề thuộc nhóm liên quan
14
411335
2512208
2026-08-08T02:09:40Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512208
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Phân ngành Có xương sống
14
411336
2512209
2026-08-08T02:09:41Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512209
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Danh sách chủ đề thuộc nhóm tập hợp
14
411337
2512210
2026-08-08T02:09:43Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512210
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Tất cả chủ đề
14
411338
2512211
2026-08-08T02:09:51Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512211
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Ngành Dây sống
14
411339
2512212
2026-08-08T02:09:53Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512212
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Động vật
14
411340
2512213
2026-08-08T02:11:12Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512213
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Khoa học
14
411341
2512214
2026-08-08T02:11:14Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512214
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Sinh vật
14
411342
2512215
2026-08-08T02:12:19Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512215
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Thị giác
14
411343
2512217
2026-08-08T02:15:22Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512217
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Khuôn mặt
14
411344
2512218
2026-08-08T02:15:24Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512218
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Đầu và cổ
14
411345
2512219
2026-08-08T02:15:34Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512219
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Cảm nhận
14
411346
2512220
2026-08-08T02:15:36Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512220
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Danh sách chủ đề thuộc nhóm hỗn hợp
14
411347
2512221
2026-08-08T02:15:46Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512221
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Tri giác
14
411348
2512222
2026-08-08T02:15:48Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512222
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Bộ phận cơ thể
14
411349
2512223
2026-08-08T02:15:52Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512223
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Cơ thể
14
411350
2512224
2026-08-08T02:15:59Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512224
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Sự sống
14
411351
2512226
2026-08-08T02:16:13Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512226
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Tự nhiên
14
411352
2512227
2026-08-08T02:16:30Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512227
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:cje:Viết
14
411353
2512229
2026-08-08T02:17:49Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512229
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
chloroplasty
0
411354
2512230
2026-08-08T02:17:56Z
Hiyuune
50834
+ pl
2512230
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|n}}===
{{head|pl|Biến thể hình thái danh từ}}
# {{infl of|pl|chloroplast||nom//acc//voc|p}}
bnfgc2eoihny52n1mvmpsmv0149n7ff
Thể loại:rgs:Thực vật
14
411355
2512231
2026-08-08T02:18:19Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512231
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:cje:Ngôn ngữ
14
411356
2512232
2026-08-08T02:18:23Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512232
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:rgs:Danh sách chủ đề thuộc nhóm loại hình
14
411357
2512233
2026-08-08T02:18:29Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512233
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:cje:Giao tiếp
14
411358
2512234
2026-08-08T02:18:35Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512234
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
chloroplastu
0
411359
2512235
2026-08-08T02:18:55Z
Hiyuune
50834
+ pl
2512235
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|n}}===
{{head|pl|Biến thể hình thái danh từ}}
# {{infl of|pl|chloroplast||gen|s}}
g0s7ggh1yo7fkx5geokh4jznvb9j1ps
chloroplaście
0
411360
2512236
2026-08-08T02:19:53Z
Hiyuune
50834
+ pl
2512236
wikitext
text/x-wiki
=={{langname|pl}}==
==={{section|n}}===
{{head|pl|Biến thể hình thái danh từ}}
# {{infl of|pl|chloroplast||loc//voc|s}}
2y9gp97pyn7hyrjy59nlssrdbnp8sp2
Thể loại:enc:Ăn
14
411361
2512239
2026-08-08T02:22:04Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512239
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Bản mẫu:R:Martalar1974
10
411362
2512241
2026-08-08T02:24:50Z
Hiyuune
50834
Trang mới: “{{#invoke:checkparams|error}}<!-- Validate template parameters -->“{{{1|{{pagename}}}}}” trong {{cite-book|first=Umberto Martello|last=Martalar|first2=Alfonso|last2=Bellotto|title=Dizionario della lingua Cimbra dei Sette Communi vicentini|edition=1|year=1974|publisher=Instituto di Cultura Cimbra A. Dal Pozzo|location=Roana, Ý}}<noinclude> [[Thể loại:Bản mẫu tham khảo tiếng Cimbri|Dizionario della lingua Cimbra dei Sette Communi vicentini]] </noinclude>”
2512241
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->“{{{1|{{pagename}}}}}” trong {{cite-book|first=Umberto Martello|last=Martalar|first2=Alfonso|last2=Bellotto|title=Dizionario della lingua Cimbra dei Sette Communi vicentini|edition=1|year=1974|publisher=Instituto di Cultura Cimbra A. Dal Pozzo|location=Roana, Ý}}<noinclude>
[[Thể loại:Bản mẫu tham khảo tiếng Cimbri|Dizionario della lingua Cimbra dei Sette Communi vicentini]]
</noinclude>
d58posm6xfpqw1dcrufv0zxc9z59tti
Thể loại:enc:Hành vi con người
14
411363
2512242
2026-08-08T02:25:53Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512242
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:enc:Danh sách chủ đề thuộc nhóm liên quan
14
411364
2512243
2026-08-08T02:25:56Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512243
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:enc:Con người
14
411365
2512244
2026-08-08T02:26:02Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512244
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:enc:Tất cả chủ đề
14
411366
2512245
2026-08-08T02:26:04Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512245
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:enc:Giao thông
14
411367
2512248
2026-08-08T02:27:27Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512248
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
芈
0
411368
2512250
2026-08-08T02:27:49Z
Hiyuune
50834
Trang mới: “{{also|羋}} {{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=140|rad=艸|as=03|sn=7|four=|canj=TQ,XTQ|ids=⿱卝⿻二丨}} ===={{ĐM|ref}}==== * {{Han ref|kx=1019.061|hdz=53174.060|uh=8288}} =={{langname|zh}}== {{zh-see|羋}}”
2512250
wikitext
text/x-wiki
{{also|羋}}
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=140|rad=艸|as=03|sn=7|four=|canj=TQ,XTQ|ids=⿱卝⿻二丨}}
===={{ĐM|ref}}====
* {{Han ref|kx=1019.061|hdz=53174.060|uh=8288}}
=={{langname|zh}}==
{{zh-see|羋}}
b7wtzlolrqppra7bb6my18rg194vw0j
2512255
2512250
2026-08-08T02:28:30Z
Hiyuune
50834
/* Tiếng Trung Quốc */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
2512255
wikitext
text/x-wiki
{{also|羋}}
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=140|rad=艸|as=03|sn=7|four=|canj=TQ,XTQ|ids=⿱卝⿻二丨}}
===={{ĐM|ref}}====
* {{Han ref|kx=1019.061|hdz=53174.060|uh=8288}}
=={{langname|ja}}==
==={{section|kanji}}===
{{ja-kanji|grade=|rs=艸03}}
===={{ĐM|reading}}====
* {{ja-readings|on=ば, ま, び, み}}
=={{langname|zh}}==
{{zh-see|羋}}
tliqj2snkrbm45hpocb230zwy9m2uja
Thể loại:enc:Gia đình
14
411369
2512254
2026-08-08T02:28:23Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512254
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Thể loại:enc:Mọi người
14
411370
2512256
2026-08-08T02:28:45Z
WhoAlone
40420
Trang mới: “{{auto cat}}”
2512256
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
芉
0
411371
2512257
2026-08-08T02:29:24Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=140|rad=艸|as=03|sn=9|four=|canj=TMJ|ids=⿱艹干}} ===={{ĐM|derived characters}}==== *{{l|mul|[[𥙶]] [[𦮖]] [[𦲆]] [[𱆮]]}} ===={{ĐM|ref}}==== * {{Han ref|kx=1018.060|dkj=30668|dj=1476.060|hdz=53174.040|uh=8289}}”
2512257
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=140|rad=艸|as=03|sn=9|four=|canj=TMJ|ids=⿱艹干}}
===={{ĐM|derived characters}}====
*{{l|mul|[[𥙶]] [[𦮖]] [[𦲆]] [[𱆮]]}}
===={{ĐM|ref}}====
* {{Han ref|kx=1018.060|dkj=30668|dj=1476.060|hdz=53174.040|uh=8289}}
nwzgn16zo2bjb0x1gjlz8t56y1y9dvq
𱆮
0
411372
2512258
2026-08-08T02:30:12Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=195|rad=魚|as=7|sn=18|four=|canj=|ids=⿰魚芉}} ===={{ĐM|ref}}==== * {{Han ref|kx=|dkj=|dj=|hdz=|uh=311AE}}”
2512258
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=195|rad=魚|as=7|sn=18|four=|canj=|ids=⿰魚芉}}
===={{ĐM|ref}}====
* {{Han ref|kx=|dkj=|dj=|hdz=|uh=311AE}}
6a6vgpuu6boqtour73437weuzwndhxi
𱆯
0
411373
2512259
2026-08-08T02:30:48Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=195|rad=魚|as=7|sn=18|four=|canj=NFHDS|ids=⿰魚秀}} ===={{ĐM|ref}}==== {{Han ref|uh=311AF}}”
2512259
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=195|rad=魚|as=7|sn=18|four=|canj=NFHDS|ids=⿰魚秀}}
===={{ĐM|ref}}====
{{Han ref|uh=311AF}}
5ujc5atkp23lrep9113qdao8ocs8nq7
𱆰
0
411374
2512260
2026-08-08T02:31:54Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=195|rad=魚|as=7|sn=18|four=|canj=NFNWU|ids=⿰魚龟}} ===={{section|ref}}==== {{Han ref|uh=311B0}} {{-}} =={{langname|za}}== ==={{section|n}}=== {{za-head|Danh từ}} # {{za-sawndip form of|gvi||[[rùa]]}}”
2512260
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{section|han}}===
{{Han char|rn=195|rad=魚|as=7|sn=18|four=|canj=NFNWU|ids=⿰魚龟}}
===={{section|ref}}====
{{Han ref|uh=311B0}}
{{-}}
=={{langname|za}}==
==={{section|n}}===
{{za-head|Danh từ}}
# {{za-sawndip form of|gvi||[[rùa]]}}
ox67ujjvdzq0uhigo8xlvfjwklac9hs
𥙶
0
411375
2512261
2026-08-08T02:50:53Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=113|rad=示|as=7|sn=11|four=|canj=|ids=⿰礻芉}} ===={{ĐM|ref}}==== * {{Han ref|kx=0843.261|dkj=|dj=|hdz=|uh=25676}}”
2512261
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=113|rad=示|as=7|sn=11|four=|canj=|ids=⿰礻芉}}
===={{ĐM|ref}}====
* {{Han ref|kx=0843.261|dkj=|dj=|hdz=|uh=25676}}
3rlkrea7gn6xa8mgra6ga8ogush0rxf
𥙷
0
411376
2512262
2026-08-08T02:51:35Z
Hiyuune
50834
Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=113|rad=示|as=7|sn=11|four=|canj=|ids=⿰礻甫}} ===={{ĐM|ref}}==== * {{Han ref|kx=0843.261|dkj=|dj=|hdz=|uh=25677}}”
2512262
wikitext
text/x-wiki
{{character info}}
=={{langname|mul}}==
==={{ĐM|han}}===
{{Han char|rn=113|rad=示|as=7|sn=11|four=|canj=|ids=⿰礻甫}}
===={{ĐM|ref}}====
* {{Han ref|kx=0843.261|dkj=|dj=|hdz=|uh=25677}}
9p2sfxgxk9yqfsjfxzf7gjmfhuoirxn
turpentina
0
411378
2512264
2026-08-08T03:02:45Z
Hiyuune
50834
+ tl
2512264
wikitext
text/x-wiki
=={{langname|tl}}==
==={{section|etym}}===
{{ety|tl|:der|en:turpentine|:influence|es:-ina|tree=1}}
{{pl|tl|es|en:turpentine}}, ảnh hưởng bởi {{der|tl|es|-ina}}.
==={{section|pron}}===
{{tl-pr}}
==={{section|n}}===
{{tl-noun|b=+}}
# [[nhựa thông]].
#: {{syn|tl|trementina|agwaras|turpertayn}}
91qfgwafh9voro7f5up44qywq7v88mi
Thảo luận Thành viên:~2026-43660-55
3
411379
2512266
2026-08-08T03:17:45Z
Kateru Zakuro
34522
Notification: speedy deletion nomination of [[:mộng duyên]].
2512266
wikitext
text/x-wiki
{{subst:db-csd-notice-custom|1=mộng duyên|2=spam}} [[Thành_viên:Kateru Zakuro|<span style="color:#EE1D25;">'''Kateru'''</span> <span style="color:#EE1D25;">'''Zakuro'''</span>]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 03:17, ngày 8 tháng 8 năm 2026 (UTC)
ldtvmf7hw2hnumg6w1i2ajx410guf9u
2512273
2512266
2026-08-08T03:20:34Z
Kateru Zakuro
34522
Notification: speedy deletion nomination of [[:mộng duyên]].
2512273
wikitext
text/x-wiki
{{subst:db-csd-notice-custom|1=mộng duyên|2=spam}} [[Thành_viên:Kateru Zakuro|<span style="color:#EE1D25;">'''Kateru'''</span> <span style="color:#EE1D25;">'''Zakuro'''</span>]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 03:17, ngày 8 tháng 8 năm 2026 (UTC)
{{subst:db-csd-notice-custom|1=mộng duyên|2=mt7}} [[Thành_viên:Kateru Zakuro|<span style="color:#EE1D25;">'''Kateru'''</span> <span style="color:#EE1D25;">'''Zakuro'''</span>]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 03:20, ngày 8 tháng 8 năm 2026 (UTC)
n63zxzcf3sq1onbzy8z0l5sstvow4pw
2512274
2512273
2026-08-08T03:21:02Z
Kateru Zakuro
34522
2512274
wikitext
text/x-wiki
{{subst:db-csd-notice-custom|1=mộng duyên|2=mt7}} [[Thành_viên:Kateru Zakuro|<span style="color:#EE1D25;">'''Kateru'''</span> <span style="color:#EE1D25;">'''Zakuro'''</span>]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 03:20, ngày 8 tháng 8 năm 2026 (UTC)
tmy8ntx8ygsfo64q4sn87rc5o42cs59
bí tỉ
0
411380
2512278
2026-08-08T03:37:16Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# ([[say rượu]], [[bia]]) [[đến mức]] không [[còn]] [[biết]] gì nữa.
2512278
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|adv}}===
{{vi-adv}}
# {{nhãn|vi|thông tục}} ([[say rượu]], [[bia]]) [[đến mức]] không [[còn]] [[biết]] gì nữa.
#:{{ux|vi|nhậu một trận '''bí tỉ'''}}
#:{{ux|vi|say '''bí tỉ'''}}
=== {{ĐM|ref}} ===
* {{R:Tratu}}
sbhicitb2xcw10cypw09t66ths6lgli
bí ử
0
411381
2512279
2026-08-08T03:37:44Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[bí|Bí]] gần với [[bí đỏ]], [[thịt]] [[quả]] [[màu]] [[đỏ]].
2512279
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# [[bí|Bí]] gần với [[bí đỏ]], [[thịt]] [[quả]] [[màu]] [[đỏ]].
=== {{ĐM|ref}} ===
* {{R:Tratu}}
2f7t1prg512aoqnb9j979ttcm932ud9
bích báo
0
411382
2512280
2026-08-08T03:38:51Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[báo tường|Báo tường]].
2512280
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{lb|vi|cũ}} [[báo tường|Báo tường]].
#:{{ux|vi|viết '''bích báo'''}}
=== {{ĐM|ref}} ===
* {{R:Tratu}}
3etpyow9bvz7ylnpiwqg8lr49r67blo
bích cốt
0
411383
2512281
2026-08-08T03:39:43Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[bánh|Bánh]] [[làm bằng]] [[bánh mì]] [[cắt]] thành [[miếng]], [[sấy]] [[khô]] hoặc [[rán]].
2512281
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# [[bánh|Bánh]] [[làm bằng]] [[bánh mì]] [[cắt]] thành [[miếng]], [[sấy]] [[khô]] hoặc [[rán]].
=== {{ĐM|ref}} ===
* {{R:Tratu}}
da3gwgp0rz5jwq97ab8zgmrww0vy31b
bít tết
0
411384
2512282
2026-08-08T03:42:34Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[món ăn|Món ăn]] [[kiểu]] [[Âu]], [[làm bằng]] [[thịt]] [[bò]] [[rán]] cả [[miếng]].
2512282
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# [[món ăn|Món ăn]] [[kiểu]] [[Âu]], [[làm bằng]] [[thịt]] [[bò]] [[rán]] cả [[miếng]].
#:{{ux|vi|thịt bò '''bít tết'''}}
#:{{ux|vi|bánh mì '''bít tết'''}}
=== {{ĐM|ref}} ===
* {{R:Tratu}}
92rixr0lqj3t6equ6iv571y4b5jgaky
2512283
2512282
2026-08-08T03:42:46Z
Kateru Zakuro
34522
Kateru Zakuro đã đổi [[bíp tết]] thành [[bít tết]] (đã tắt đổi hướng)
2512282
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# [[món ăn|Món ăn]] [[kiểu]] [[Âu]], [[làm bằng]] [[thịt]] [[bò]] [[rán]] cả [[miếng]].
#:{{ux|vi|thịt bò '''bít tết'''}}
#:{{ux|vi|bánh mì '''bít tết'''}}
=== {{ĐM|ref}} ===
* {{R:Tratu}}
92rixr0lqj3t6equ6iv571y4b5jgaky
2512284
2512283
2026-08-08T03:44:52Z
Kateru Zakuro
34522
2512284
wikitext
text/x-wiki
{{also|bittet}}
=={{langname|vi}}==
[[File:Ribeye-MCB-MaggieO.jpg|thumb|Bít tết]]
=== {{ĐM|alternative forms}} ===
* {{link|vi|bíp tết}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|bifteck}}, từ {{der|vi|en|beefsteak}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun|head=bít tết}}
# [[món ăn|Món ăn]] [[kiểu]] [[Âu]], [[làm bằng]] [[thịt]] [[bò]] [[rán]] cả [[miếng]].
#:{{ux|vi|thịt bò '''bít tết'''}}
#:{{ux|vi|bánh mì '''bít tết'''}}
==={{ĐM|further reading}}===
* {{pedia|lang=vi}}
=== {{ĐM|ref}} ===
* {{R:Tratu}}
{{C|vi|Thịt}}
p0je0f9z2nuaf206sa358ob1777axtm
2512285
2512284
2026-08-08T03:45:12Z
Kateru Zakuro
34522
/* {{ĐM|ref}} */
2512285
wikitext
text/x-wiki
{{also|bittet}}
=={{langname|vi}}==
[[File:Ribeye-MCB-MaggieO.jpg|thumb|Bít tết]]
=== {{ĐM|alternative forms}} ===
* {{link|vi|bíp tết}}
==={{ĐM|etym}}===
Từ {{bor|vi|fr|bifteck}}, từ {{der|vi|en|beefsteak}}.
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun|head=bít tết}}
# [[món ăn|Món ăn]] [[kiểu]] [[Âu]], [[làm bằng]] [[thịt]] [[bò]] [[rán]] cả [[miếng]].
#:{{ux|vi|thịt bò '''bít tết'''}}
#:{{ux|vi|bánh mì '''bít tết'''}}
==={{ĐM|further reading}}===
* {{pedia|lang=vi}}
=== {{ĐM|ref}} ===
* {{R:Tratu|bíp tết}}
{{C|vi|Thịt}}
9jkk1sv0mybekx1f5b89q33reaeb7h7
bíp tết
0
411385
2512286
2026-08-08T03:45:56Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[aa|Aa]].
2512286
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{alternative form of|vi|bít tết}}
tot5hclwcho2bhcdj0o6rn9m7crd5rz
2512291
2512286
2026-08-08T03:52:41Z
Kateru Zakuro
34522
2512291
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{vi-alternative spelling of|bít tết}}
9ceo8i0al3jjusins84h20743f9p364
bitmut
0
411386
2512287
2026-08-08T03:48:55Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[kim loại|Kim loại]] [[trắng]] [[xám]], [[giòn]], [[thường dùng]] [[để chế]] [[hợp kim]] [[dễ]] [[nóng chảy]], có [[hợp chất]] dùng [[chế]] [[dược phẩm]].
2512287
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# [[kim loại|Kim loại]] [[trắng]] [[xám]], [[giòn]], [[thường dùng]] [[để chế]] [[hợp kim]] [[dễ]] [[nóng chảy]], có [[hợp chất]] dùng [[chế]] [[dược phẩm]].
{{top|vi|Nhóm nitơ|Kim loại}}
q42cefxn61n7gczvte8s3zogiwtmtw5
2512288
2512287
2026-08-08T03:49:44Z
Kateru Zakuro
34522
2512288
wikitext
text/x-wiki
=={{langname|vi}}==
{{chemical element box|vi}}
==={{ĐM|pron}}===
{{vi-pron|bít-mút}}
==={{ĐM|noun}}===
{{vi-noun}}
# [[kim loại|Kim loại]] [[trắng]] [[xám]], [[giòn]], [[thường dùng]] [[để chế]] [[hợp kim]] [[dễ]] [[nóng chảy]], có [[hợp chất]] dùng [[chế]] [[dược phẩm]].
==={{ĐM|ref}}===
* {{R:Tratu|bít-mút}}
{{top|vi|Nhóm nitơ|Kim loại}}
50k7bx9p03opfg3u0cpfdjt6gb7zc5j
bít-mút
0
411387
2512289
2026-08-08T03:50:57Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:noun:# [[aaa|Aaa]].
2512289
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{alternative form of|vi|bitmut}}
4jyj31b94xiod05hfrpt5wbhpb4w5y8
2512290
2512289
2026-08-08T03:51:20Z
Kateru Zakuro
34522
2512290
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|noun}}===
{{vi-noun}}
# {{vi-alternative spelling of|bitmut}}
bjctf9iogdlz00fuuyzjczo7tp0mmbj
bất nhẫn
0
411388
2512292
2026-08-08T03:54:03Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:adj:# [[hơi|Hơi]] [[tàn nhẫn]].
2512292
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|adj}}===
{{vi-adj}}
# [[hơi|Hơi]] [[tàn nhẫn]].
#:{{ux|vi|nói quá nặng lời kể cũng '''bất nhẫn'''}}
=== {{ĐM|ref}} ===
* {{R:Tratu}}
cz4j3n9ipoexr9jf58x6u622l0ekh4n
bất nghì
0
411389
2512293
2026-08-08T03:55:33Z
Kateru Zakuro
34522
([[Mediawiki:Gadget-start.js|Trang mới]]) +vi:adj:# [[aaa|Aaa]].
2512293
wikitext
text/x-wiki
=={{langname|vi}}==
==={{ĐM|pron}}===
{{vi-pron}}
==={{ĐM|adj}}===
{{vi-adj}}
# {{lb|vi|từ cũ}} {{see-entry|bất nghĩa}}
=== {{ĐM|ref}} ===
* {{R:Tratu}}
nliobdq5wxrqr32veioujmr7bi16a4n
葉綠體
0
411390
2512294
2026-08-08T04:12:29Z
Kelly zhrm
58416
Trang mới: “{{also|葉緑体|叶绿体}} =={{langname|zh}}== {{zh-forms|s=叶绿体}} ==={{ĐM|pron}}=== {{zh-pron |m=yèlǜtǐ |c=jip6 luk6 tai2 |mn=qz:ia̍p-lia̍k-thé/tw,xm,zz:ia̍p-le̍k-thé |cat=n }} ==={{ĐM|n}}=== {{head|zh|Danh từ}} # {{lb|zh|cytology}} [[lục lạp|Lục lạp]].”
2512294
wikitext
text/x-wiki
{{also|葉緑体|叶绿体}}
=={{langname|zh}}==
{{zh-forms|s=叶绿体}}
==={{ĐM|pron}}===
{{zh-pron
|m=yèlǜtǐ
|c=jip6 luk6 tai2
|mn=qz:ia̍p-lia̍k-thé/tw,xm,zz:ia̍p-le̍k-thé
|cat=n
}}
==={{ĐM|n}}===
{{head|zh|Danh từ}}
# {{lb|zh|cytology}} [[lục lạp|Lục lạp]].
7xt8890l7t25j44juf4emvvifqsaeor
㎝
0
411391
2512295
2026-08-08T04:27:33Z
IAmFukVuHoaq
61356
Trang mới: “{{character info|㎠}} ==Đa Ngữ== ===Các Dạng Thay Thế=== * {{l|mul|㎠}} {{qualifier|không chính thức, chỉ được sử dụng khi không thử dùng [[superscript]]}} ===Kí Hiệu=== {{head|mul|symbol|sort=㎠|head=cm<sup>2</sup>}} # [[Xăng-ti-mét]] [[vuông]], {{qualifier|một đơn vị dùng để đo diện tích}} ====Thuật ngữ liên quan==== * {{l|mul|cm³|cm<sup>3</sup>}} {{qualifier|Bản gốc: https://en.wiktionary.org/wiki/cm%C2%B2}}”
2512295
wikitext
text/x-wiki
{{character info|㎠}}
==Đa Ngữ==
===Các Dạng Thay Thế===
* {{l|mul|㎠}} {{qualifier|không chính thức, chỉ được sử dụng khi không thử dùng [[superscript]]}}
===Kí Hiệu===
{{head|mul|symbol|sort=㎠|head=cm<sup>2</sup>}}
# [[Xăng-ti-mét]] [[vuông]], {{qualifier|một đơn vị dùng để đo diện tích}}
====Thuật ngữ liên quan====
* {{l|mul|cm³|cm<sup>3</sup>}}
{{qualifier|Bản gốc: https://en.wiktionary.org/wiki/cm%C2%B2}}
13yppmni7rvm9cifaqg1881m7rwaydu
2512301
2512295
2026-08-08T06:57:10Z
TheHighFighter2
42988
Đổi hướng đến [[cm]]
2512301
wikitext
text/x-wiki
#REDIRECT [[cm]]
{{R character variation}}
43vko1i5i4tb0tpcb6lqravevm9pp5a
cm²
0
411392
2512296
2026-08-08T04:33:11Z
IAmFukVuHoaq
61356
Trang mới: “{{character info|㎠}} ==Đa Ngữ== ===Các Dạng Thay Thế=== * {{l|mul|㎠}} {{qualifier|không chính thức, chỉ được sử dụng khi không thử dùng [[superscript]]}} ===Kí Hiệu=== {{head|mul|symbol|sort=㎠|head=cm<sup>2</sup>}} # [[Xăng-ti-mét]] [[vuông]], {{qualifier|một đơn vị dùng để đo diện tích}} ====Thuật ngữ liên quan==== * {{l|mul|cm³|cm<sup>3</sup>}} {{qualifier|Bản gốc: https://en.wiktionary.org/wiki/cm%C2%B2}}”
2512296
wikitext
text/x-wiki
{{character info|㎠}}
==Đa Ngữ==
===Các Dạng Thay Thế===
* {{l|mul|㎠}} {{qualifier|không chính thức, chỉ được sử dụng khi không thử dùng [[superscript]]}}
===Kí Hiệu===
{{head|mul|symbol|sort=㎠|head=cm<sup>2</sup>}}
# [[Xăng-ti-mét]] [[vuông]], {{qualifier|một đơn vị dùng để đo diện tích}}
====Thuật ngữ liên quan====
* {{l|mul|cm³|cm<sup>3</sup>}}
{{qualifier|Bản gốc: https://en.wiktionary.org/wiki/cm%C2%B2}}
13yppmni7rvm9cifaqg1881m7rwaydu
2512297
2512296
2026-08-08T06:29:15Z
TheHighFighter2
42988
2512297
wikitext
text/x-wiki
{{character info|㎠}}
=={{langname|mul}}==
==={{ĐM|alt}}===
* {{l|mul|cm2}} {{qualifier|không tiêu chuẩn, chỉ dùng khi không thể gõ chỉ số trên}}
==={{ĐM|symbol}}===
{{head|mul|symbol|sort=㎠|head=cm<sup>2</sup>}}
# [[xăng-ti-mét|Xăng-ti-mét]] [[vuông]] {{qualifier|một đơn vị đo diện tích}}.
===={{ĐM|rel}}====
* {{l|mul|cm³|cm<sup>3</sup>}}
tp8t4ekstj4q0tyu6qz5nsc974sdbjf
cm
0
411393
2512299
2026-08-08T06:46:13Z
IAmFukVuHoaq
61356
1 số lỗi nghiêm trọng còn ở đây
2512299
wikitext
text/x-wiki
{{also|Phụ lục: Biến thể của "cm"}}
{{character info|㎝}}
==Đa ngữ==
===Từ nguyên===
{{ety|mul|:af|c-<t:centi->|m<t:meter>|tree=1|text=+}}
===Kí hiệu===
{{mul-symbol}}
# {{SI-unit-abb2|centi|meter|metre|[[length]]}}
#* {{quote-book|mul|termlang=mul|year=2007 |title=Sinh lý sinh thái học của các quần xã vi sinh vật liên kết với bọt biển (Ircinia Strobilina) và (Mycale Laxissima) |author=Naglaa M. Mohamed |page= |ISBN=0549453105 |passage=Một đặc điểm khác là sự hiện diện của một lỗ giả (pseudoscule) lớn, rộng 3-6 '''cm''', với một màng trong suốt. }}
#* {{quote-web|mul|termlang=mul|date=2012-06-20|author=Jason Palmer|title=Các dấu vết vật chất tối có thể mang lại cái nhìn sớm nhất về Vũ trụ|site=w:BBC|url=http://www.bbc.co.uk/news/science-environment-18521713|accessdate=2012-06-20
|passage=Các nhà nghiên cứu đã tìm ra cách để chiêm ngưỡng Vũ trụ sơ khai bằng cách giải mã những gợn sóng sớm nhất trong ánh sáng của nó.<br>Họ cho biết điều này có thể đạt được bằng cách thu bắt bước sóng vô tuyến 21'''cm''' đặc trưng từ không gian.<br>Điểm mấu chốt là phải phân biệt được sóng 21'''cm''' từ thiên hà của chúng ta với những sóng đến từ các nguồn xa xôi, cổ xưa.|archiveurl=https://web.archive.org/web/20201111222347/https://www.bbc.co.uk/news/science-environment-18521713}}
====Dịch thuật====
{{trans-top|symbol for the centimeter}}
* A Lạp Cống ngữ: {{t|an|zm}}
* Hy Lạp ngữ: {{t|el|εκ.}}
* Do Thái ngữ: {{t|he|ס״מ}}
* A Cách Ly ngữ: {{t|izh|sm}}
* Nga ngữ: {{t+|ru|см}}
* Tây Ban Nha ngữ: {{t+|es|cm}}
{{trans-bottom}}
==Hoa ngữ==
===Từ nguyên===
{{abbrev|yue}} của {{der|yue|en|comment}}.
===Phát âm===
{{rfp|zh}}
===Danh từ===
{{head|zh|noun}}{{cln|yue|nouns|lemmas}}
# {{lb|zh|Hong Kong Cantonese|Internet slang|text messaging}} [[comment]]
{{cln|zh| Các thuật ngữ được viết bằng chữ viết nước ngoài}}
==Italian==
===Phó từ===
{{it-adv}}
# {{lb|it|Internet slang|text messaging}} {{abbreviation of|it|come||how}}
#: {{uxi|it|nn so '''cm'''|I don't know '''how'''}}
db6sauzn9auamwjwyaw55ars98g7dhs
2512302
2512299
2026-08-08T07:25:00Z
TheHighFighter2
42988
2512302
wikitext
text/x-wiki
{{also|Phụ lục: Biến thể của "cm"}}
{{character info|㎝}}
=={{langname|mul}}==
==={{ĐM|etym}}===
{{ety|mul|:af|c-<t:centi->|m<t:meter>|tree=1|text=+}}
==={{ĐM|symbol}}===
{{mul-symbol}}
# {{SI-unit-abb2|centi|meter|metre|[[length]]}}
#* {{quote-book|mul|termlang=mul|year=2007 |title=Ecophysiology of Microbial Communities Associated with Marine Sponges (Ircinia Strobilina) and (Mycale Laxissima)|trans-title=Sinh lý sinh thái học của các quần xã vi sinh vật liên kết với bọt biển (Ircinia Strobilina) và (Mycale Laxissima) |author=Naglaa M. Mohamed |page= |ISBN=0549453105 |passage=Another characteristic is the presence of a 3-6 '''cm''' wide large pseudoscule with a transparent membrane.|translation=Một đặc điểm khác là sự hiện diện của một lỗ giả (pseudoscule) lớn, rộng 3-6 '''cm''', với một màng trong suốt. }}
#* {{quote-web|mul|termlang=mul|date=2012-06-20|author=Jason Palmer|title=Dark matter tracks could give earliest view of Universe|trans-title=Các dấu vết vật chất tối có thể mang lại cái nhìn sớm nhất về Vũ trụ|site=w:BBC|url=http://www.bbc.co.uk/news/science-environment-18521713|accessdate=2012-06-20
|passage=Researchers have come up with a way to glimpse the infant Universe by decoding the earliest ripples in its light.<br>They say this can be achieved by capturing the specific radio wavelength of 21'''cm''' from the heavens.<br>The trick is to tell the difference between 21'''cm''' waves from our galaxy and those from distant, ancient sources.|translation=Các nhà nghiên cứu đã tìm ra cách để chiêm ngưỡng Vũ trụ sơ khai bằng cách giải mã những gợn sóng sớm nhất trong ánh sáng của nó.<br>Họ cho biết điều này có thể đạt được bằng cách thu bắt bước sóng vô tuyến 21'''cm''' đặc trưng từ không gian.<br>Điểm mấu chốt là phải phân biệt được sóng 21'''cm''' từ thiên hà của chúng ta với những sóng đến từ các nguồn xa xôi, cổ xưa.|archiveurl=https://web.archive.org/web/20201111222347/https://www.bbc.co.uk/news/science-environment-18521713}}
===={{ĐM|trans}}====
{{trans-top|Ký hiệu cho xăng-ti-mét}}
* {{langname|an}}: {{t|an|zm}}
* {{langname|he}}: {{t|he|ס״מ}}
* {{langname|el}}: {{t|el|εκ.}}
* {{langname|izh}}: {{t|izh|sm}}
* {{langname|ru}}: {{t+|ru|см}}
* {{langname|es}}: {{t+|es|cm}}
{{trans-bottom}}
=={{langname|zh}}==
==={{ĐM|etym}}===
{{abbrev|yue}} của {{der|yue|en|comment}}.
==={{ĐM|pron}}===
{{rfp|zh}}
==={{ĐM|n}}===
{{head|zh|noun}}{{cln|yue|Danh từ|Mục từ}}
# {{lb|zh|Hong Kong Cantonese|Internet slang|text messaging}} [[bình luận|Bình luận]].
{{cln|zh|Từ sử dụng chữ viết nước ngoài}}
=={{langname|it}}==
==={{ĐM|adv}}===
{{it-adv}}
# {{lb|it|Internet slang|text messaging}} {{abbreviation of|it|come||thế nào}}.
#: {{uxi|it|nn so '''cm'''|Tôi không biết làm '''thế nào'''}}
99zx58wdzbyjo0k5b52e9wkwqmhybev
2512305
2512302
2026-08-08T09:06:13Z
TheHighFighter2
42988
/* Ký tự */
2512305
wikitext
text/x-wiki
{{also|Phụ lục: Biến thể của "cm"}}
{{character info|㎝}}
=={{langname|mul}}==
==={{ĐM|etym}}===
{{ety|mul|:af|c-<t:centi->|m<t:meter>|tree=1|text=+}}
==={{ĐM|symbol}}===
{{mul-symbol}}
# [[xăng-ti-mét|Xăng-ti-mét]].
#* {{quote-book|mul|termlang=mul|year=2007 |title=Ecophysiology of Microbial Communities Associated with Marine Sponges (Ircinia Strobilina) and (Mycale Laxissima)|trans-title=Sinh lý sinh thái học của các quần xã vi sinh vật liên kết với bọt biển (Ircinia Strobilina) và (Mycale Laxissima) |author=Naglaa M. Mohamed |page= |ISBN=0549453105 |passage=Another characteristic is the presence of a 3-6 '''cm''' wide large pseudoscule with a transparent membrane.|translation=Một đặc điểm khác là sự hiện diện của một lỗ giả (pseudoscule) lớn, rộng 3-6 '''cm''', với một màng trong suốt. }}
#* {{quote-web|mul|termlang=mul|date=2012-06-20|author=Jason Palmer|title=Dark matter tracks could give earliest view of Universe|trans-title=Các dấu vết vật chất tối có thể mang lại cái nhìn sớm nhất về Vũ trụ|site=w:BBC|url=http://www.bbc.co.uk/news/science-environment-18521713|accessdate=2012-06-20
|passage=Researchers have come up with a way to glimpse the infant Universe by decoding the earliest ripples in its light.<br>They say this can be achieved by capturing the specific radio wavelength of 21'''cm''' from the heavens.<br>The trick is to tell the difference between 21'''cm''' waves from our galaxy and those from distant, ancient sources.|translation=Các nhà nghiên cứu đã tìm ra cách để chiêm ngưỡng Vũ trụ sơ khai bằng cách giải mã những gợn sóng sớm nhất trong ánh sáng của nó.<br>Họ cho biết điều này có thể đạt được bằng cách thu bắt bước sóng vô tuyến 21'''cm''' đặc trưng từ không gian.<br>Điểm mấu chốt là phải phân biệt được sóng 21'''cm''' từ thiên hà của chúng ta với những sóng đến từ các nguồn xa xôi, cổ xưa.|archiveurl=https://web.archive.org/web/20201111222347/https://www.bbc.co.uk/news/science-environment-18521713}}
===={{ĐM|trans}}====
{{trans-top|Ký hiệu cho xăng-ti-mét}}
* {{langname|an}}: {{t|an|zm}}
* {{langname|he}}: {{t|he|ס״מ}}
* {{langname|el}}: {{t|el|εκ.}}
* {{langname|izh}}: {{t|izh|sm}}
* {{langname|ru}}: {{t+|ru|см}}
* {{langname|es}}: {{t+|es|cm}}
{{trans-bottom}}
=={{langname|zh}}==
==={{ĐM|etym}}===
{{abbrev|yue}} của {{der|yue|en|comment}}.
==={{ĐM|pron}}===
{{rfp|zh}}
==={{ĐM|n}}===
{{head|zh|noun}}{{cln|yue|Danh từ|Mục từ}}
# {{lb|zh|Hong Kong Cantonese|Internet slang|text messaging}} [[bình luận|Bình luận]].
{{cln|zh|Từ sử dụng chữ viết nước ngoài}}
=={{langname|it}}==
==={{ĐM|adv}}===
{{it-adv}}
# {{lb|it|Internet slang|text messaging}} {{abbreviation of|it|come||thế nào}}.
#: {{uxi|it|nn so '''cm'''|Tôi không biết làm '''thế nào'''}}
1voihhln3290bx8thovbgihx9k6eh4g
2512306
2512305
2026-08-08T09:09:46Z
TheHighFighter2
42988
/* Từ nguyên */
2512306
wikitext
text/x-wiki
{{also|Phụ lục: Biến thể của "cm"}}
{{character info|㎝}}
=={{langname|mul}}==
==={{ĐM|etym}}===
{{ety|mul|:af|c-<t:xăng-ti>|m<t:mét>|tree=1|text=+}}
==={{ĐM|symbol}}===
{{mul-symbol}}
# [[xăng-ti-mét|Xăng-ti-mét]].
#* {{quote-book|mul|termlang=mul|year=2007 |title=Ecophysiology of Microbial Communities Associated with Marine Sponges (Ircinia Strobilina) and (Mycale Laxissima)|trans-title=Sinh lý sinh thái học của các quần xã vi sinh vật liên kết với bọt biển (Ircinia Strobilina) và (Mycale Laxissima) |author=Naglaa M. Mohamed |page= |ISBN=0549453105 |passage=Another characteristic is the presence of a 3-6 '''cm''' wide large pseudoscule with a transparent membrane.|translation=Một đặc điểm khác là sự hiện diện của một lỗ giả (pseudoscule) lớn, rộng 3-6 '''cm''', với một màng trong suốt. }}
#* {{quote-web|mul|termlang=mul|date=2012-06-20|author=Jason Palmer|title=Dark matter tracks could give earliest view of Universe|trans-title=Các dấu vết vật chất tối có thể mang lại cái nhìn sớm nhất về Vũ trụ|site=w:BBC|url=http://www.bbc.co.uk/news/science-environment-18521713|accessdate=2012-06-20
|passage=Researchers have come up with a way to glimpse the infant Universe by decoding the earliest ripples in its light.<br>They say this can be achieved by capturing the specific radio wavelength of 21'''cm''' from the heavens.<br>The trick is to tell the difference between 21'''cm''' waves from our galaxy and those from distant, ancient sources.|translation=Các nhà nghiên cứu đã tìm ra cách để chiêm ngưỡng Vũ trụ sơ khai bằng cách giải mã những gợn sóng sớm nhất trong ánh sáng của nó.<br>Họ cho biết điều này có thể đạt được bằng cách thu bắt bước sóng vô tuyến 21'''cm''' đặc trưng từ không gian.<br>Điểm mấu chốt là phải phân biệt được sóng 21'''cm''' từ thiên hà của chúng ta với những sóng đến từ các nguồn xa xôi, cổ xưa.|archiveurl=https://web.archive.org/web/20201111222347/https://www.bbc.co.uk/news/science-environment-18521713}}
===={{ĐM|trans}}====
{{trans-top|Ký hiệu cho xăng-ti-mét}}
* {{langname|an}}: {{t|an|zm}}
* {{langname|he}}: {{t|he|ס״מ}}
* {{langname|el}}: {{t|el|εκ.}}
* {{langname|izh}}: {{t|izh|sm}}
* {{langname|ru}}: {{t+|ru|см}}
* {{langname|es}}: {{t+|es|cm}}
{{trans-bottom}}
=={{langname|zh}}==
==={{ĐM|etym}}===
{{abbrev|yue}} của {{der|yue|en|comment}}.
==={{ĐM|pron}}===
{{rfp|zh}}
==={{ĐM|n}}===
{{head|zh|noun}}{{cln|yue|Danh từ|Mục từ}}
# {{lb|zh|Hong Kong Cantonese|Internet slang|text messaging}} [[bình luận|Bình luận]].
{{cln|zh|Từ sử dụng chữ viết nước ngoài}}
=={{langname|it}}==
==={{ĐM|adv}}===
{{it-adv}}
# {{lb|it|Internet slang|text messaging}} {{abbreviation of|it|come||thế nào}}.
#: {{uxi|it|nn so '''cm'''|Tôi không biết làm '''thế nào'''}}
3o0dbjiunk5l6gjub7fu6352kp2r0ww
Bản mẫu:R character variation
10
411394
2512300
2026-08-08T06:53:54Z
TheHighFighter2
42988
Trang mới: “{{maintenance box|grey|image=[[File:Symbol redirect arrow grey.svg|40px|link=|alt=Redirect]]|text=Đây là trang đổi hướng cho biến thể của cùng một ký tự. Đó có thể là cách viết khác, cách hiển thị hình ảnh khác, hoặc chỉ đơn giản là cùng một ký tự nhưng nằm dưới một điểm mã khác.}}<includeonly>[[Thể loại:Trang đổi hướng biến thể ký tự|*{{PAGENAME}}]]</includeonly><noinclude>{{documentatio…”
2512300
wikitext
text/x-wiki
{{maintenance box|grey|image=[[File:Symbol redirect arrow grey.svg|40px|link=|alt=Redirect]]|text=Đây là trang đổi hướng cho biến thể của cùng một ký tự. Đó có thể là cách viết khác, cách hiển thị hình ảnh khác, hoặc chỉ đơn giản là cùng một ký tự nhưng nằm dưới một điểm mã khác.}}<includeonly>[[Thể loại:Trang đổi hướng biến thể ký tự|*{{PAGENAME}}]]</includeonly><noinclude>{{documentation}}</noinclude>
5p1ymn5275gy10hjlct05jnkrdesvem
Thể loại:Ký tự đa ngữ
14
411395
2512313
2026-08-08T09:48:09Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự đa ngữ]] thành [[Thể loại:Ký hiệu đa ngữ]]: Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2512313
wikitext
text/x-wiki
{{Đổi hướng thể loại|Thể loại:Ký hiệu đa ngữ}}
o4ut3y7218e9t4p9ugl43gunr8bfmrd
Thể loại:Ký tự theo ngôn ngữ
14
411396
2512315
2026-08-08T09:51:43Z
TheHighFighter2
42988
TheHighFighter2 đã đổi [[Thể loại:Ký tự theo ngôn ngữ]] thành [[Thể loại:Ký hiệu theo ngôn ngữ]]: Thống nhất dịch "symbol" là "ký hiệu", "character" là ký tự
2512315
wikitext
text/x-wiki
{{Đổi hướng thể loại|Thể loại:Ký hiệu theo ngôn ngữ}}
sn412qbdqiuseu9351sew641a6r6rxn
₥
0
411397
2512320
2026-08-08T10:01:14Z
IAmFukVuHoaq
61356
Trang mới: “{{also|Phụ lục:Các biến thể của "m"}} {{character info}} ==Đa ngữ== ===Từ nguyên=== {{compound|mul|m|/}}, khá giống [[¢]]. ===Kí hiệu=== {{mul-symbol}} # Ký hiệu cho [[mill]] (s), là [︎[⅒]] của một [[¢]] ([[cent]]). ====Từ đồng nghĩa==== * {{l|mul|‰}} {{qualifier|Cho phần ngàn nói chung, không phải tiền tệ cụ thể}} ===Xem thêm=== {{Currency symbols}} [[Category:Currency symbols]]”
2512320
wikitext
text/x-wiki
{{also|Phụ lục:Các biến thể của "m"}}
{{character info}}
==Đa ngữ==
===Từ nguyên===
{{compound|mul|m|/}}, khá giống [[¢]].
===Kí hiệu===
{{mul-symbol}}
# Ký hiệu cho [[mill]] (s), là [︎[⅒]] của một [[¢]] ([[cent]]).
====Từ đồng nghĩa====
* {{l|mul|‰}} {{qualifier|Cho phần ngàn nói chung, không phải tiền tệ cụ thể}}
===Xem thêm===
{{Currency symbols}}
[[Category:Currency symbols]]
nm6dfrkutk9gh8ppkmwev4fuqrz2qx7
2512321
2512320
2026-08-08T10:02:38Z
IAmFukVuHoaq
61356
2512321
wikitext
text/x-wiki
{{also|Phụ lục:Các biến thể của "m"}}
{{character info}}
==Đa ngữ==
===Từ nguyên===
{{compound|mul|m|/}}, khá giống [[¢]].
===Kí hiệu===
{{mul-symbol}}
# Ký hiệu cho [[mill]] (s), là [[⅒]] của một [[¢]] ([[cent]]).
====Từ đồng nghĩa====
* {{l|mul|‰}} {{qualifier|Cho phần ngàn nói chung, không phải tiền tệ cụ thể}}
===Xem thêm===
{{Currency symbols}}
[[Category:Currency symbols]]
r12dcrgzts6x1mt1p4qjips8pwzeu66
Mô đun:number list/data/io
828
411398
2512333
2026-08-08T11:18:45Z
Hiyuune
50834
Trang mới: “local export = {numbers = {}} local numbers = export.numbers numbers[0] = { cardinal = "zero" } numbers[1] = { cardinal = "un" } numbers[2] = { cardinal = "du" } numbers[3] = { cardinal = "tri" } numbers[4] = { cardinal = "quar" } numbers[5] = { cardinal = "kin" } numbers[6] = { cardinal = "sis" } numbers[7] = { cardinal = "sep" } numbers[8] = { cardinal = "ok" } numbers[9] = { cardinal = "non" } numbers[10] = { cardinal = "dek" } for ones = 0, 9 d…”
2512333
Scribunto
text/plain
local export = {numbers = {}}
local numbers = export.numbers
numbers[0] = {
cardinal = "zero"
}
numbers[1] = {
cardinal = "un"
}
numbers[2] = {
cardinal = "du"
}
numbers[3] = {
cardinal = "tri"
}
numbers[4] = {
cardinal = "quar"
}
numbers[5] = {
cardinal = "kin"
}
numbers[6] = {
cardinal = "sis"
}
numbers[7] = {
cardinal = "sep"
}
numbers[8] = {
cardinal = "ok"
}
numbers[9] = {
cardinal = "non"
}
numbers[10] = {
cardinal = "dek"
}
for ones = 0, 9 do
for tens = 0, 9 do
local ones_cardinal = numbers[ones].cardinal
local tens_cardinal = numbers[tens].cardinal
local number = ones_cardinal
if tens ~= 0 then
if tens == 1 then
tens_cardinal = "dek"
else
tens_cardinal = tens_cardinal .. "adek"
end
if ones == 0 then
number = tens_cardinal
else
number = tens_cardinal .. "-e-" .. ones_cardinal
end
end
local cardinal = number
if ones == 0 and tens == 0 then
number = "zer"
end
numbers[tens * 10 + ones] = {
cardinal = cardinal,
ordinal = number .. "esma",
adverbial = number .. "foye",
multiplier = number .. "opla",
fractional = number .. "ima",
}
end
end
numbers[100] = {
cardinal = "cent",
ordinal = "centesma",
adverbial = "centfoye",
multiplier = "centopla",
fractional = "centima",
}
numbers[1000] = {
cardinal = "mil",
ordinal = "milesma",
adverbial = "milfoye",
multiplier = "milopla",
fractional = "milima",
}
return export
0iawwzz749rw6ovvfejo6ys27gtqrof
Bản mẫu:ku-adj
10
411399
2512336
2026-08-08T11:21:37Z
Hiyuune
50834
Hiyuune đã đổi [[Bản mẫu:ku-adj]] thành [[Bản mẫu:kmr-adj]]
2512336
wikitext
text/x-wiki
#đổi [[Bản mẫu:kmr-adj]]
n0t5x7kums7d4okoi3a9ogfylda4p9p
ambassad
0
411400
2512337
2026-08-08T11:22:47Z
Kelly zhrm
58416
Trang mới: “=={{langname|sv}}== ==={{ĐM|n}}=== {{sv-noun|c}} # [[đại sứ quán|Đại sứ quán]]. ===={{ĐM|decl}}==== {{sv-infl-noun-c-er}} ==={{ĐM|ref}}=== * {{R:svenska.se|so}} * {{R:svenska.se|saol}} * {{R:svenska.se|saob}} {{C|sv|Ngoại giao}}”
2512337
wikitext
text/x-wiki
=={{langname|sv}}==
==={{ĐM|n}}===
{{sv-noun|c}}
# [[đại sứ quán|Đại sứ quán]].
===={{ĐM|decl}}====
{{sv-infl-noun-c-er}}
==={{ĐM|ref}}===
* {{R:svenska.se|so}}
* {{R:svenska.se|saol}}
* {{R:svenska.se|saob}}
{{C|sv|Ngoại giao}}
kzkeoxmnw07gtfmgj8ltnmrk15sr5od
대사관
0
411401
2512340
2026-08-08T11:27:22Z
Kelly zhrm
58416
Trang mới: “=={{langname|ko}}== {{wp|ko:}} ==={{ĐM|etym}}=== {{ko-etym-Sino|大使|[[đại sứ]]|館|[[chỗ ở]]|suffix=y}}. ==={{ĐM|pron}}=== {{ko-IPA|l=y}} ==={{ĐM|n}}=== {{ko-noun|hanja=大使館}} # [[đại sứ quán|Đại sứ quán]]. ==={{ĐM|see}}=== * {{l|ko|영사관(領事館)}} {{topics|ko|Ngoại giao|Toà nhà}}”
2512340
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{ĐM|etym}}===
{{ko-etym-Sino|大使|[[đại sứ]]|館|[[chỗ ở]]|suffix=y}}.
==={{ĐM|pron}}===
{{ko-IPA|l=y}}
==={{ĐM|n}}===
{{ko-noun|hanja=大使館}}
# [[đại sứ quán|Đại sứ quán]].
==={{ĐM|see}}===
* {{l|ko|영사관(領事館)}}
{{topics|ko|Ngoại giao|Toà nhà}}
1afivmwm83k66ard8cepadbiurvr2iy
2512345
2512340
2026-08-08T11:32:34Z
Kelly zhrm
58416
2512345
wikitext
text/x-wiki
=={{langname|ko}}==
{{wp|ko:}}
==={{ĐM|etym}}===
{{ko-etym-Sino|大使|[[đại sứ]]|館|[[chỗ ở]]|suffix=y}}.
==={{ĐM|pron}}===
{{ko-IPA|l=y}}
==={{ĐM|n}}===
{{ko-noun|hanja=大使館}}
# [[đại sứ quán|Đại sứ quán]].
==={{ĐM|see}}===
* {{l|ko|영사관(領事館)}}
{{topics|ko|Ngoại giao|Tòa nhà}}
6jr15viy1429eihv0gllo6khhua0onb
영화관
0
411402
2512342
2026-08-08T11:30:50Z
Kelly zhrm
58416
Trang mới: “=={{langname|ko}}== ==={{ĐM|etym}}=== {{ko-etym-Sino|映畫||館|suffix=y}}. ==={{ĐM|pron}}=== {{ko-IPA}} ==={{ĐM|n}}=== {{ko-noun|hanja=[[映畫館]]/[[映畵館]]}} # [[rạp chiếu phim|Rạp chiếu phim]]. {{C|ko|Toà nhà}}”
2512342
wikitext
text/x-wiki
=={{langname|ko}}==
==={{ĐM|etym}}===
{{ko-etym-Sino|映畫||館|suffix=y}}.
==={{ĐM|pron}}===
{{ko-IPA}}
==={{ĐM|n}}===
{{ko-noun|hanja=[[映畫館]]/[[映畵館]]}}
# [[rạp chiếu phim|Rạp chiếu phim]].
{{C|ko|Toà nhà}}
9eeagh2vtjw6qdhg92lrfrh6dcikvfc
2512344
2512342
2026-08-08T11:32:00Z
Kelly zhrm
58416
2512344
wikitext
text/x-wiki
=={{langname|ko}}==
==={{ĐM|etym}}===
{{ko-etym-Sino|映畫||館|suffix=y}}.
==={{ĐM|pron}}===
{{ko-IPA}}
==={{ĐM|n}}===
{{ko-noun|hanja=[[映畫館]]/[[映畵館]]}}
# [[rạp chiếu phim|Rạp chiếu phim]].
{{C|ko|Tòa nhà}}
nlfl1qskig8qsz8wcr94uh0kc10rqu4
Thể loại:Tiếng Cushit nguyên thủy
14
411404
2512353
2026-08-08T11:46:01Z
Hiyuune
50834
Trang mới: “{{auto cat}}”
2512353
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx