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" !&nbsp; ![[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]] &nbsp;&nbsp; [[b]] |[[p̪]] &nbsp;&nbsp; [[b̪]] |[[t̼]] &nbsp;&nbsp; [[d̼]] |[[t̪]] &nbsp;&nbsp; [[d̪]] |[[t]] &nbsp;&nbsp; [[d]] |&nbsp; |[[ʈ]] &nbsp;&nbsp; [[ɖ]] |[[c]] &nbsp;&nbsp; [[ɟ]] |[[k]] &nbsp;&nbsp; [[ɡ]] |[[q]] &nbsp;&nbsp; [[ɢ]] |[[ʡ]] |bgcolor="#D4D4D4"|&nbsp; |[[ʔ]] |bgcolor="#D4D4D4"|&nbsp; |-bgcolor="#E7F5DE" valign=middle align="center" !bgcolor="#BECFEB"|[[nasal|Âm mũi]] |[[m]] |[[ɱ]] |[[n̼]] |[[n̪]] |[[n]] |&nbsp; |[[ɳ]] |[[ɲ]] |[[ŋ]] |[[ɴ]] |colspan="4" bgcolor="#D4D4D4"|&nbsp; |-bgcolor="#E7F5DE" valign=middle align="center" !bgcolor="#BECFEB"|[[trill|Âm rung]] |[[ʙ]] |&nbsp; |[[r̼]] |[[r̪]] |[[r]] |&nbsp; |[[ɽ͡r]] |&nbsp; |bgcolor="#D4D4D4"|&nbsp; |[[ʀ]] |colspan="2"|[[ʜ]] &nbsp;&nbsp; [[ʢ]] |colspan="2" bgcolor="#D4D4D4"|&nbsp; |-bgcolor="#E7F5DE" valign=middle align="center" !bgcolor="#BECFEB"|[[tap|Âm vỗ]] hoặc [[flap|Âm co]] |[[ⱱ̟]] |[[ⱱ]] |[[ɾ̼]] |[[ɾ̪]] |[[ɾ]] |&nbsp; |[[ɽ]] |&nbsp; |bgcolor="#D4D4D4"|&nbsp; |[[ɢ̆]] |colspan="2"|&nbsp; |colspan="2" bgcolor="#D4D4D4"|&nbsp; |-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"|&nbsp; |&nbsp; |&nbsp; |[[ɺ]] |&nbsp; |[[ɺ̢]] |[[ʎ̯]] |[[ʟ̆]] |&nbsp; |colspan="4" bgcolor="#D4D4D4"|&nbsp; |-bgcolor="#E7F5DE" valign=middle align="center" !bgcolor="#BECFEB"|[[fricative|Âm xát]] |[[ɸ]] &nbsp;&nbsp; [[β]] |[[f]] &nbsp;&nbsp; [[v]] |[[θ̼]] &nbsp;&nbsp; [[ð̼]] |[[θ]] &nbsp;&nbsp; [[ð]] |[[s]] &nbsp;&nbsp; [[z]] |[[ʃ]] &nbsp;&nbsp; [[ʒ]] |[[ʂ]] &nbsp;&nbsp; [[ʐ]] |[[ç]] &nbsp;&nbsp; [[ʝ]] |[[x]] &nbsp;&nbsp; [[ɣ]] |[[χ]] &nbsp;&nbsp; [[ʁ]] |colspan="2"|[[ħ]] &nbsp;&nbsp; [[ʕ]] |colspan="2"|[[h]] &nbsp;&nbsp; [[ɦ]] |-bgcolor="#E7F5DE" valign=middle align="center" !bgcolor="#BECFEB"|[[lateral fricative|Âm bên xát]] |colspan="2" bgcolor="#D4D4D4"|&nbsp; |&nbsp; |&nbsp; |[[ɬ]] &nbsp;&nbsp; [[ɮ]] |&nbsp; |[[ɬ̢]] &nbsp;&nbsp; [[ɮ̢]] |&nbsp; |&nbsp; |&nbsp; |colspan="4" bgcolor="#D4D4D4"|&nbsp; |-bgcolor="#E7F5DE" valign=middle align="center" !bgcolor="#BECFEB"|[[approximant|Âm tiếp cận]] |[[β̞]] |[[ʋ]] |&nbsp; |[[ð̞]] |[[ɹ]] |&nbsp; |[[ɻ]] |[[j]] |[[ɰ]] |&nbsp; |colspan="2"|&nbsp; |colspan="2"|&nbsp; |-bgcolor="#E7F5DE" valign=middle align="center" !bgcolor="#BECFEB"|[[lateral approximant|Âm bên tiếp cận]] |colspan="2" bgcolor="#D4D4D4"|&nbsp; |[[l̼]] |[[l̪]] |[[l]] |&nbsp; |[[ɭ]] |[[ʎ]] |[[ʟ]] |&nbsp; |colspan="4" bgcolor="#D4D4D4"|&nbsp; |} *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&nbsp;&nbsp;&nbsp;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'">&#331;&#778;</span>. {| border="0" cellspacing="2px" cellpadding="2px" style="font-family:'Lucida Sans Unicode'" |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̥|&nbsp;&nbsp;̥&nbsp;]]||Vô thanh||[[&nbsp;̤|&nbsp;&nbsp;̤&nbsp;]]||Hữu thanh có hơi thở||[[&nbsp;̪|&nbsp;&nbsp;̪&nbsp;]]||Răng |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̬|&nbsp;&nbsp;̬&nbsp;]]||Hữu thanh||[[&nbsp;̰|&nbsp;&nbsp;̰&nbsp;]]||Giọng kẽo kẹt||[[&nbsp;̺|&nbsp;&nbsp;̺&nbsp;]]||Đầu lưỡi |-bgcolor="#E7F5DE" valign=top align="center" |[[ʰ|&nbsp;ʰ&nbsp;]]||Bật hơi||[[&nbsp;̼|&nbsp;&nbsp;̼&nbsp;]]||Âm môi lưỡi||[[&nbsp;̻|&nbsp;&nbsp;̻&nbsp;]]||Phiến lưỡi |-bgcolor="#E7F5DE" valign=top align="center" |[[˒|&nbsp;˒&nbsp;]]||Làm tròn hơn||[[ʷ|&nbsp;ʷ&nbsp;]]||Bị môi hóa||[[&nbsp;̃|&nbsp;&nbsp;̃&nbsp;]]||Bị mũi hóa |-bgcolor="#E7F5DE" valign=top align="center" |[[˓|&nbsp;˓&nbsp;]]||Ít làm tròn hơn||[[ʲ|&nbsp;ʲ&nbsp;]]||Bị vòm hóa||[[ⁿ|&nbsp;ⁿ&nbsp;]]||Thả mũi |-bgcolor="#E7F5DE" valign=top align="center" |[[˖|&nbsp;˖&nbsp;]]||Nhích về phía trước||[[ˠ|&nbsp;ˠ&nbsp;]]||Bị vòm mềm hóa||[[ˡ|&nbsp;ˡ&nbsp;]]||Thả bên |-bgcolor="#E7F5DE" valign=top align="center" |[[˗|&nbsp;˗&nbsp;]]||Lui về sau||[[ˁ|&nbsp;ˁ&nbsp;]]||Bị họng hóa||[[&nbsp;̚|&nbsp;&nbsp;̚&nbsp;]]||Không thả nào có thể nghe được |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̈|&nbsp;&nbsp;̈&nbsp;]]||Giữa hóa||[[&nbsp;̴|&nbsp;&nbsp;̴&nbsp;]]||colspan="3"|Vòm mềm hóa hoặc họng hóa |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̽|&nbsp;&nbsp;̽&nbsp;]]||Chính giữa hóa||[[&nbsp;̝|&nbsp;&nbsp;̝&nbsp;]]||colspan="3"|Nhích lên trên ('''ɹ̝''' = âm xát vòm mềm hữu thanh) |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̩|&nbsp;&nbsp;̩&nbsp;]]||Âm tiết tính||[[&nbsp;̞|&nbsp;&nbsp;̞&nbsp;]]||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" |[[&nbsp;̯|&nbsp;&nbsp;̯&nbsp;]]||Phi âm tiết tính||[[&nbsp;̘|&nbsp;&nbsp;̘&nbsp;]]||colspan="3"|Gốc lưỡi nhích về trước |-bgcolor="#E7F5DE" valign=top align="center" |[[˞|&nbsp;˞&nbsp;]]||Có tính R-hóa (phát âm có "r" đi sau nguyên âm)||[[&nbsp;̙|&nbsp;&nbsp;̙&nbsp;]]||colspan="3"|Gốc lưỡi lùi về sau |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp; ͍|&nbsp;&nbsp; ͍&nbsp;]]||Môi tản||[[&nbsp; ͈|&nbsp;&nbsp; ͈&nbsp;]]||Cấu âm mạnh||[[&nbsp; ͊|&nbsp;&nbsp; ͊&nbsp;]]||Vô âm mũi |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp; ͆|&nbsp;&nbsp; ͆&nbsp;]]||Âm môi-răng||[[&nbsp; ͉|&nbsp;&nbsp; ͉&nbsp;]]||Cấu âm yếu||[[&nbsp; ͋|&nbsp;&nbsp; ͋&nbsp;]]||Âm mũi thoát |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̪͆|&nbsp;&nbsp;̪͆&nbsp;]]||Âm đôi hàm/giao tế||[[\|&nbsp;\&nbsp;]]||Cấu âm lặp||[[&nbsp; ͌|&nbsp;&nbsp; ͌&nbsp;]]||Ma sát họng-vòm mềm |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̳|&nbsp;&nbsp;̳&nbsp;]]||Chân răng||[[&nbsp; ͎|&nbsp;&nbsp; ͎&nbsp;]]||Cấu âm huýt||[[&nbsp;↓|&nbsp;&nbsp;↓&nbsp;]]||Luồng khí đi vào |-bgcolor="#E7F5DE" valign=top align="center" |[[&nbsp;̼|&nbsp;&nbsp;̼&nbsp;]]||Âm môi lưỡi||[[&nbsp; ͢ |&nbsp;&nbsp; ͢ &nbsp;]]||Cấu âm trượt||[[&nbsp;↑|&nbsp;&nbsp;↑&nbsp;]]||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 &lrm; is what [[Module:affix]] has always done default_separator = data.allow_semicolon_separator and " +&lrm; " 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 = " +&lrm; ", 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 = " +&lrm; ", 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 = " +&lrm; ", 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 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 = "&mdash;" 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 = "&mdash;" 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 "&mdash;", create the full link if link ~= "" and link and link ~= "&mdash;" 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 = "&mdash;" 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, "&mdash;", "&mdash;", check_add_alt_comp(forms, tense, mood, "n", 3), "&mdash;", "&mdash;", "&mdash;", check_add_alt_comp(forms, tense, mood, "pl", 6), "&mdash;") 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] = "&mdash;" 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 = "&mdash;", "&mdash;", "&mdash;" 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"] = "&mdash;" 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 = "&mdash;" 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 = "&mdash;" 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 "&mdash;", create the full link if link ~= "" and link and link ~= "&mdash;" 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 = "&mdash;" 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, "&mdash;", "&mdash;", check_add_alt_comp(forms, tense, mood, "n", 3), "&mdash;", "&mdash;", "&mdash;", check_add_alt_comp(forms, tense, mood, "pl", 6), "&mdash;") 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] = "&mdash;" 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 = "&mdash;", "&mdash;", "&mdash;" 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"] = "&mdash;" 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 = "&mdash;" 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 = "&mdash;" 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 "&mdash;", create the full link if link ~= "" and link and link ~= "&mdash;" 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 = "&mdash;" 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, "&mdash;", "&mdash;", check_add_alt_comp(forms, tense, mood, "n", 3), "&mdash;", "&mdash;", "&mdash;", check_add_alt_comp(forms, tense, mood, "pl", 6), "&mdash;") 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] = "&mdash;" 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 = "&mdash;", "&mdash;", "&mdash;" 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"] = "&mdash;" 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